PDF-Download-Link aus einem Produkt-Metafeld in einer Custom-Liquid-Accordion einbinden. Das ursprüngliche Rendering via metafield_tag zeigte keinen klickbaren Link.
Technische Ursache: Für Datei-Referenzen (file_reference) muss die URL über den Liquid-Filter file_url geholt werden; .url funktioniert so nicht zuverlässig. Zudem ist das Metafeld eine Liste, daher braucht es einen for-Loop.
ich hoffe, Ihr könnt mir helfen bei der Darstellung eines PDF-Download Links in meinem Custom Liquid auf der Produktseite.
Ich habe eine Einklappbare reihe als custom Liquid, die je nachdem ob ein Metafeld hinterlegt ist, eingeblendet wird oder eben nicht. Das funktioniert mit dem rich-text sehr gut, aber leider nicht mit dem Download Link.
Hier habe ich mal den verwendeten code, vielleicht kann jemand den korrekt umschreiben, dass der PDF-Link abgebildet wird, mit dem Dateinamen anstelle der URL.
@EM-Partner wenn du in einem Metafeld eine Datei referenzierst, so kannst du den Titel der Datei, Ihre ID und die URL abrufen.
Damit ein Link zum PDF erzeugt werden kann, benötigst du eine URL der Datei. Diese kannst du über einen Liquid-Filter dynamisch laden.
Ich habe meinen Code (siehen oben) korrigiert, da ich zunächst angenommen hatte, dass man die URL über die Endung “.url” erhält. Allerdings muss man das über den Filter “file_url” abrufen. Du solltest also den korrigierten Code nutzen können, damit du einen funktionierenden Link hast.
@EM-Partner du kannst sie gerne teilen. Hast du es mal im Vorschau-Modus angeschaut oder nur über den Theme-Editor?
Ich habe deinen Fall bei mir nachgebaut und es funktioniert nur im Vorschau-Modus.
Ich habe ein Metafeld mit einer Liste. Statt “Custom” habe ich “produktinformationen” verndet sodass es meiner Meinung nach nun so lautet: product.metafields.produktinformationen.datenblaetter
@EM-Partner wenn du mehrere Dateien anzeigen möchtest, muss man einen For-Loop in den Code einbauen. Ich bin davon ausgegangen, dass du nur jeweils eine Datei verwendest.
{% if product.metafields.produktinformationen.datenblaetter != blank %}
{% endif %}
Wenn nun noch der Name des Datenblattes erscheinen würde statt des Indexwertes, damit der Kunde bei vielen Datenblättern weis welches relevant ist.Aber so bin ich schonmal total zufrieden
@EM-Partner dazu muss leider einen kleinen Workaround machen, da man nicht ohne weitere einfach den Dateinamen bekommt. Man muss sich den aus der URL fischen:
{% if product.metafields.produktinformationen.datenblaetter != blank %}
{% endif %}
Jenachdem wie man die Datei benannt hat, kann man “-” durch Leerzeichen ersetzen und auch das “.pdf” entfernen.