Modulshop - Eine große Auswahl an neuen und hilfreichen Modulen für die modified eCommerce Shopsoftware
Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: MODUL: Inserttags als Smarty Modifier

    fiveBytes

    • Mitglied
    • Beiträge: 117
    • Geschlecht:
    MODUL: Inserttags als Smarty Modifier
    am: 18. Januar 2020, 20:35:00
    Hallo zusammen,

    zwar kann man ganz bequem mit SmartyCode im BackEnd arbeiten, sofern man im Tempate die entsprechende Ausgabe evaluiert, aber irgendwie war mir das auf Dauer doch ein wenig zu unkomfortabel. Vor allem, wenn schicke Querverlinkungen in Kategorien oder Artikeln, oder auch komplette Landigpages im Content-Manager angelegt werden sollen (zusammen mit nem tauglichen SEO-URL-Modul ein echter Mehrwert).

    Daher habe ich mir mal überlegt, dass es doch ganz schön wäre, wenn man verschiedene Inserttags (einigen evtl. bereits bekannt vom CMS Contao) zur Verfügung hätte. Also habe ich mal eine entsprechende php-Funktion als Smarty.modifier zusammengbastelt. Momentan stehen damit folgende Inserttags zur Verfügung:

    • {{date::*}} Dieses Tag wird mit dem aktuellen Datum gemäß eines individuellen Datumsformats ersetzt. z. B. {{date::d.m.Y}}
    • {{product::*}} Dieses Tag wird mit einem Link zu einem Produkt ersetzt (ersetze * mit der ProduktID).
    • {{product_url::*}} Dieses Tag wird mit der URL von einem Produkt ersetzt.
    • {{product_title::*}} Dieses Tag wird mit einem (wenn m entsprechende Daten vorhanden) zusammengebauten Produkttitel (Herstellername Produktname Artikelnr.) ersetzt.
    • {{product_name::*}} Dieses Tag wird mit dem Namen von einem Produkt ersetzt.
    • {{product_img::*}} Dieses Tag wird mit dem Info-Bild (Nr. 1) von einem Produkt ersetzt.
    • {{product_thumb::*}} Dieses Tag wird mit dem Thumbnail-Bild (Nr. 1) von einem Produkt ersetzt.
    • {{categorie::*}} Dieses Tag wird mit einem Link zu einer Kategorie ersetzt (ersetze * mit der KategorieID).
    • {{categorie_url::*}} Dieses Tag wird mit der URL von einer Kategorie ersetzt.
    • {{categorie_title::*}} Dieses Tag wird mit dem Titel (wenn vorhanden, sonst Namen) einer Kategorie ersetzt.
    • {{categorie_name::*}} Dieses Tag wird mit dem Namen einer Kategorie ersetzt.
    • {{categorie_img::*}} Dieses Tag wird mit dem Bild einer Kategorie ersetzt.
    • {{manufacturer::*}} Dieses Tag wird mit einem Link zu einer Herstellerseite ersetzt (ersetze * mit der HerstellerID).
    • {{manufacturer_url::*}} Dieses Tag wird mit der URL von einem Hersteller ersetzt.
    • {{manufacturer_title::*}} Dieses Tag wird mit dem Meta-Titel (wenn vorhanden, sonst Namen) von einem Hersteller ersetzt.
    • {{manufacturer_name::*}} Dieses Tag wird mit dem Namen von einem Hersteller ersetzt.
    • {{manufacturer_img::*}} Dieses Tag wird mit dem Bild von einem Hersteller ersetzt.
    • {{content::*}} Dieses Tag wird mit einem Link zu einer Content-Seite ersetzt (ersetze * mit der ContentID - also coID).
    • {{content_url::*}} Dieses Tag wird mit der URL von einer Content-Seite ersetzt.
    • {{content_title::*}} Dieses Tag wird mit der Überschrift (wenn vorhanden, sonst Titel) von einer Content-Seite ersetzt.
    • {{content_name::*}} Dieses Tag wird mit dem Titel von einer Content-Seite ersetzt.

    Modul erweitert:

    [...]
    Ansonsten hänge ich nochmal eine erweiterte Funktion an, damit sind jetzt auch zusätzliche Flags möglich. D.h. ein Insertag kann um z.B. eine Klasse oder einen Queryzusatz erweitert werden.
    {{product_img::1|class="img-thumbnail"}} - würde das Produktbild vom Produkt mit der ID 1 liefern und den Quellcode mit der Klasse erweitern.
    {{categorie::1|?filter_id=2}} - würde einen Link zur Kategorie mit der ID 1 liefern und den Link mit der Query erweitern, sprich es würde bei der Artikelliste der Herstellerfilter direkt auf ID=2 springen, also ein Link zu den Artiklen von Hersteller #2 in Kategorie #1

    Unterstüzt werden hier momentan für URLs folgende Flags: "?, #", für Verlinkungen "class, id, style" und für Bilder "class, id, style, height, width"
    [...]

    Modul erweitert:

    [...]
    Nichts desto trotz habe ich hier noch mal eine aktuelle Version hochgeladen (ich habe nämlich auch noch ein paar Kleinigkeiten gefunden, ;-) außerdem gibt es zwei neue Tags:
    • {{env_tax::*}} Dieses Tag wird mit dem entsprechenden MwSt.-Satz ersetzt (ersetze * mit der TaxrateID).
    • {{env_taxdesc::*}} Dieses Tag wird mit der entsprechenden MwSt.-Satz Beschreibung ersetzt (ersetze * mit der TaxrateID).

    Modul erweitert:

    [...]
    anbei ein neues Paket. Hier kannst Du nun mit den beiden Flags "limit" und/oder "orderby" die Listen zusätzlich "manipulieren". Beispiel: {{products_categorie::5|limit:20}} begrenz die Anzahl der Artiel auf 20, {{products_categorie::5|limit:20|orderby:p.products_price}} begrenz die Anzahl der Artiel auf 20 und sortiert die Artikel nach Preis.

    Außerdem neu der Inserttag "content_text", damit können nun auch gesamte Text-Elemente aus dem Content-Manager integriert werden. Beispiel: {{content_text::1}} gibt den reinen Text von Content-Manager-Inhalt mit der coID = 1 aus. So können wiederkehrende Inhalte einmalig angelegt und x-mal an beliebeigen Stellen wieder verwendet werden.
    [...]

    Modul erweitert:

    Ja sehr geil!

    Hatte oben meinen Post nochmals geändert, zwecks der Frage, ob man mehrere Kategorien angeben kann?!  :whistle:
    Hat sich leider überschnitten...

    Gruß David

    Nein, dazu musste ein neuer Inserttag her ;-) aber im neuen Paket gibt es nun "products_categories" als Tag. Beispiel für die Nutzung: {{products_categories::1,2,3}} damit werden sämtliche Artikel, die in den Kategorien mit den IDs 1,2 und 3 liegen, aufgelistet.

    Natürlich wären noch zig weitere Inserttags vorstellbar, aber ich wollte ja noch ein wenig Raum für Eure Phantasien lassen. ;-)

    Einfach die angehängte Datei entpacken, ins Template-Verzeichnis "smarty/" einfügen und in der index.html entsprechend den Smarty.modifier setzten:
    aus
    Code: PHP  [Auswählen]
    {if isset($main_content)}{$main_content}{/if}
    wird
    Code: PHP  [Auswählen]
    {if isset($main_content)}{$main_content|inserttags}{/if}

    Viel Spaß damit und Gruß
    Stefen

    [EDIT Tomcraft 27.01.2020: Modul aktualisiert.]
    [EDIT Tomcraft 23.04.2021: Korrektur in Anleitung übernommen.]
    [EDIT Tomcraft 23.04.2021: Modul aktualisiert.]
    [EDIT Tomcraft 23.04.2021: Modul aktualisiert.]
    [EDIT Tomcraft 04.07.2022: Modul aktualisiert.]
    [EDIT Tomcraft 04.07.2022: Modul aktualisiert.]

    Linkback: https://www.modified-shop.org/forum/index.php?topic=40723.0

    Timm

    • Fördermitglied
    • Beiträge: 6.343
    Re: MODUL: Inserttags als Smarty Modifier
    Antwort #1 am: 19. Januar 2020, 09:42:17
    Moin

    Vielen Dank.

    Sehe ich das richtig, dass es ähnlich wie das Themenweltenmodul funktioniert man aber mehr Sachen verlinken kann?

    Gruß Timm

    Tante Uschi

    • Fördermitglied
    • Beiträge: 279
    Re: MODUL: Inserttags als Smarty Modifier
    Antwort #2 am: 19. Januar 2020, 10:37:11
    Ganz tolle Sache Stefen,

    vielen Dank fürs Teilen, dies erleichtert einige Sachen enorm!

    fiveBytes

    • Mitglied
    • Beiträge: 117
    • Geschlecht:
    Re: MODUL: Inserttags als Smarty Modifier
    Antwort #3 am: 19. Januar 2020, 13:33:40
    @Timm
    sorry, aber ich kenne das von Dir angesprochene Modul nicht.
    Mit den Inserttags kann man im BackEnd (Kategorie-, Artikel-, Herstellerbeschreibungen, Überschriften, Inhalte Contentmanager usw.) ohne Smarty- und/oder php-Kenntnisse fertige Elemente aus dem Shopsystem (Datumsausgaben, Links, URLs, Bilder, Namen, Titel von Artikeln, Kategorien, Herstellern und Contentseiten usw.)  einbauen. Einfach mal ausprobieren, das dürfte dann alle Deine Fragen beantworten. ;-)

    @Tante
    ohhh jaaaa und wie ;-)

    und für alle die sich über die fehlenden Konstanten gewundert haben, sorry, hatte ich vergessen zu erwähnen:

    Code: PHP  [Auswählen]
    define('TEXT_ARTIKELNR','Art.-Nr.');
    define('TEXT_NO_INSERTTAG','Kein korrektes Insertag!!!');
    define('TEXT_NO_PRODUCTS_DATA','Keine Produktdaten vorhanden!!!');
    define('TEXT_NO_CATEGORIES_DATA','Keine Kategoriedaten vorhanden!!!');
    define('TEXT_NO_MANUFACTURER_DATA','Keine Herstellerdaten vorhanden!!!');
    define('TEXT_NO_CONTENT_DATA','Keine Contentdaten vorhanden!!!');

    Timm

    • Fördermitglied
    • Beiträge: 6.343
    Re: MODUL: Inserttags als Smarty Modifier
    Antwort #4 am: 23. Januar 2020, 22:06:42
    Abend Stefen

    Wärst du so nett und führst das nochmal etwas aus, was es mit den fehlenden Konstanten auf sich hat bzw. wo man das einfügen soll? Es gibt auch Nichtprogrammierer hier im Forum, denen das nicht klar sein wird.  ;-)

    Das Themenweltenmodul gibt es hier: MODUL: Themenwelten
    Das scheint mir als Laie ähnlich. Ich nutze das selbst, um auf der Startseite die Kategorien anzuzeigen und es mobilen Nutzern einfacher zu machen.

    Gruß Timm

    fiveBytes

    • Mitglied
    • Beiträge: 117
    • Geschlecht:
    Re: MODUL: Inserttags als Smarty Modifier
    Antwort #5 am: 24. Januar 2020, 11:48:13
    @Timm
    die Konstanten musst Du einfach in eine Sprachdatei packen (z.B. const_inserttags.php sofern Du noch keine eigene Spracherweiterungsdatei hast) und diese im Ordner /lang/german/extra ablegen. Die dienen aber an sich eh nur dazu, dass im Quellcode bei fehlerhaften Ausgaben ein entsprechender Kommentar erzeugt wird. Lediglich die Konstante "TEXT_ARTIKELNR" dient zur Erzeugung der Produkttitel.

    Ansonsten hänge ich nochmal eine erweiterte Funktion an, damit sind jetzt auch zusätzliche Flags möglich. D.h. ein Insertag kann um z.B. eine Klasse oder einen Queryzusatz erweitert werden.
    {{product_img::1|class="img-thumbnail"}} - würde das Produktbild vom Produkt mit der ID 1 liefern und den Quellcode mit der Klasse erweitern.
    {{categorie::1|?filter_id=2}} - würde einen Link zur Kategorie mit der ID 1 liefern und den Link mit der Query erweitern, sprich es würde bei der Artikelliste der Herstellerfilter direkt auf ID=2 springen, also ein Link zu den Artiklen von Hersteller #2 in Kategorie #1

    Unterstüzt werden hier momentan für URLs folgende Flags: "?, #", für Verlinkungen "class, id, style" und für Bilder "class, id, style, height, width"

    Gruss
    Stefen

    [EDIT Tomcraft 27.01.2020: Modul in Beitrag 1 aktualisiert.]

    fiveBytes

    • Mitglied
    • Beiträge: 117
    • Geschlecht:
    Re: MODUL: Inserttags als Smarty Modifier
    Antwort #6 am: 18. Februar 2020, 19:53:23
    Ich habe gerade einen Fehler in der Beschreibung aus Beitrag 1 gefunden, es darf NICHT heißen:
    • {{content::*}} Dieses Tag wird mit einem Link zu einer Content-Seite ersetzt (ersetze * mit der HerstellerID).
    sondern:
    • {{content::*}} Dieses Tag wird mit einem Link zu einer Content-Seite ersetzt (ersetze * mit der ContentID - also coID).
    und das gilt dann natürlich für alle {{content...}} -Tags.

    [EDIT Tomcraft 23.04.2021: Korrektur in Beitrag 1 übernommen.]

    mod2020

    • Fördermitglied
    • Beiträge: 21
    Re: MODUL: Inserttags als Smarty Modifier
    Antwort #7 am: 11. Juli 2020, 19:01:20
    Hallo fiveBytes,
    habe Dein Modul einmal eingebaut und es funktioniert auch mit den Tags {{date}} und {{content}}.
    Die Produkt-Tags hingegen liefern gar keine Ausgabe. Z.B. habe ich {{product}} wie folgt in eined Content-Seite eingestezt: {{product::16}}. Dabei erscheint keine Fehlermeldung, auch im Logfile finde ich keinen Hinweis.
    Kannst Du Dir darauf einen Reim machen?

    fiveBytes

    • Mitglied
    • Beiträge: 117
    • Geschlecht:
    Re: MODUL: Inserttags als Smarty Modifier
    Antwort #8 am: 11. Juli 2020, 20:31:48
    @mod2020
    da bin ich leider überfragt?! Wenn die ID 16 nicht vergeben wäre oder aus sonst einem Grunde keine Ausgabe möglich ist solltest Du im Quellcode an Stelle der Ausgabe einen entsprechenden Kommentar finden. Für den Fall, dass eine SQL fehlgeschlagen wäre müsstest Du einen Logeintarg haben.

    Nichts desto trotz habe ich hier noch mal eine aktuelle Version hochgeladen (ich habe nämlich auch noch ein paar Kleinigkeiten gefunden, ;-) außerdem gibt es zwei neue Tags:
    • {{env_tax::*}} Dieses Tag wird mit dem entsprechenden MwSt.-Satz ersetzt (ersetze * mit der TaxrateID).
    • {{env_taxdesc::*}} Dieses Tag wird mit der entsprechenden MwSt.-Satz Beschreibung ersetzt (ersetze * mit der TaxrateID).

    [EDIT Tomcraft 23.04.2021: Modul in Beitrag 1 aktualisiert.]

    mod2020

    • Fördermitglied
    • Beiträge: 21
    Re: MODUL: Inserttags als Smarty Modifier
    Antwort #9 am: 13. Juli 2020, 09:25:04
    @fivebyte
    Danke für die schnelle Antwort und die aktualisierte Fassung; habe es am Wochenende auf meinem Server aktualisiert. Leider erhalte ich auch weiterhin keine Ausgabe beim Tag {{product}}. Ich verwende die aktuellste modified Version v2.0.5.1 rev 12725 und das Template tpl_modified_responsive.

    @all
    Hat jemand ggf. einen Lösungsansatz?

    fiveBytes

    • Mitglied
    • Beiträge: 117
    • Geschlecht:
    Re: MODUL: Inserttags als Smarty Modifier
    Antwort #10 am: 13. Juli 2020, 11:03:30
    @mod2020
    ich hab den Bug entdeckt, die Problematik taucht(e) auf, sofern keinerlei Hersteller im System verzeichnet sind. Habe dies jetzt noch mal angepasst und es sollte nun auch mit den {{products::*}} klappen.

    [EDIT Tomcraft 23.04.2021: Modul in Beitrag 1 aktualisiert.]

    mod2020

    • Fördermitglied
    • Beiträge: 21
    Re: MODUL: Inserttags als Smarty Modifier
    Antwort #11 am: 13. Juli 2020, 15:30:01
    @fiveBytes
    Ganz klasse, Du hast die Ursache behoben! Danke sehr dafür.
    Folgenden Code habe ich in Deiner aktuellesten Datei ergänzt, sodass neben dem Thumbnail auch das Info-Bild ausgegeben wird:

    ab Zeile 107:

    Code: PHP  [Auswählen]
    case 'product_img':
    if ( $productsData['products_image'] != '' )
    {
        $dir = DIR_WS_INFO_IMAGES;
        //if ( strtolower( $elements[0] ) == 'product_img' ) $dir = DIR_WS_INFO_IMAGES;  /* Funktion dieser Zeile ist mir nicht klar */
        $img = $dir . $productsData['products_image'];
        $tagCode = '<img' . ( ( $flag != '' && strposa( $flag, $arrImgFlags ) == 0 )?' ' . $flag:'' ) . ' src="/' . $mainModules->getImage( $img, $dir, PRODUCT_IMAGE_SHOW_NO_IMAGE, 'noimage.gif', $productsData['products_image'] ) . '" alt="' . $productsLinkTitle . '">';
    }
    break;

    fiveBytes

    • Mitglied
    • Beiträge: 117
    • Geschlecht:
    Re: MODUL: Inserttags als Smarty Modifier
    Antwort #12 am: 13. Juli 2020, 15:40:08
    @mod2020
    mit {{product_img::*}} kommst Du an das Infobild, mit {{product_thumb::*}} kommst Du an das Thumbnail, dazu musst Du gar nichts ändern!

    Tante Uschi

    • Fördermitglied
    • Beiträge: 279
    Re: MODUL: Inserttags als Smarty Modifier
    Antwort #13 am: 13. Juli 2020, 17:35:32
    @ fiveBytes

    Volltreffer, versenkt, deswegen ging das bei uns auch nicht, GANZ DICKES DANKESCHÖN für Deine Mühe.  :good:

    Gruß

    mod2020

    • Fördermitglied
    • Beiträge: 21
    Re: MODUL: Inserttags als Smarty Modifier
    Antwort #14 am: 14. Juli 2020, 09:47:28
    @fiveBytes
    zu Deiner Antwort #12

    Ja, ich hatte den Code ergänzt, da das Tag bei mir nichts zurückgab. Beim Tag {{product_thumb::*}} lief alles super. Im Grunde lag es wohl an den Konstanten.

    Ich hoffe, es ist in Deinem Sinne gewesen.

    @all
    Um mir die Anwendung des für mich wirklich wertvollen inserttags-Scripts zu vereinfachen, habe ich ein weiteres Tag einprogrammiert und möchte dies hier teilen.
    Das Tag lautet {{product_box::*}}. Der Stern wird durch die Produkt-ID ersetzt. Damit liefert das Script nun den HTML Code in Anlehnung an die "listingbox" aus. Die "listingbox" ist Bestandteil des responsiven Templates und wird  z.B. für die Darstellung der Top-Artikel verwendet.

    Ich setze das neue Tag wie folgt ein, um einfach eine Zeile von Produkten in die Content-Seiten einzufügen:

    Code: XML  [Auswählen]
    <div class="listingcontainer cf">
    {{product_box::1}}
    {{product_box::2}}
    {{product_box::3}}
    </div>

    Vielleicht kann es jemand gebrauchen oder auch noch verbessern.

    [EDIT Tomcraft 23.04.2021: Modul gelöscht, siehe Hinweis von fiveBytes aus Antwort #15.]
    Templateshop - Eine große Auswahl an neuen und modernen Templates für die modified eCommerce Shopsoftware
    28 Antworten
    17014 Aufrufe
    07. Dezember 2015, 20:32:30 von Alfred
    16 Antworten
    21961 Aufrufe
    27. Mai 2019, 16:46:23 von clausleh
               
    anything