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: Artikeleigenschaften im Listing und nach Produkt ID

    cplasa

    • Fördermitglied
    • Beiträge: 200
    • Geschlecht:
    Hallo in die Runde,

    nach Jahren aus dem Tiefschlaf komme ich hier ins Forum zurück - direkt mit einer Frage :D

    Um Rahmen der Umstellung des in die Jahre gekommenen 1.06 ist meine Aufgabe derzeit die komplette Neugestaltung unseres Angebotes das wir mit dem Shop in der V2 realisieren (v2.0.7.2).

    Soweit stehen wir auch kurz vor dem Relaunch, jedoch gibt es einen wichtigen Punkt an dem ich nicht weiterkomme, ich hoffe ihr könnt helfen, bzw. den richtigen Anstoß geben.

    Bewusst haben wir das komplette Angebot auf die Verwendung strukturierter Daten umgestellt, da die Vorteile klar auf der Hand liegen. Jeder Artikel ist nun mit der größtmöglichen Menge an Artikeleigenschaften versehen, was es zum einen leichter macht neue Artikel in das Angebot aufzunehmen, da man sich sich der hinterlegten Eigenschaften und deren Werte bedienen kann, zum Anderen diese (wenn ein Standart vorhanden) nach schema.org im Template nach außen auch korrekt deklarieren kann.

    Das ganze hört da ja nicht auf, sondern bringt uns eine enorme Flexibilität in der Umsetzung noch kommender Projekte (Eigenschaftsbedingten Landingpages, sinnvoller Filter, Erstelllung von spezifischen Icons usw. usw. (zumindest in der Theorie).

    Nun zum eigentlichen Problem:

    Bewusst habe ich hier auf den Einsatz der ArtikelEIGENSCHAFTEN gesetzt (im Gegensatz zu Artikelmerkmalen), da diese nicht als Optionsgrundlage einer Variation des Artikels herangezogen werden sollen (zumindestens noch nicht), sondern schlicht die spezifischen Eigenschaften des Produkts darstellen sollen.

    In der Forensuche bin ich oft auf entsprechende Threads gestoßen in denen diese Beiden Varianten oft miteinander verwechselt werden bzw. nicht ganz klar formuliert wurde was gemeint ist (Artikelmerkmal oder Artikeleigenschaft). Konkret geht es also um die Artikeleigenschaften (entsprechend des im Template verwendeten Moduls {$MODULE_product_tags}).

    Hierzu hätte ich zwei Fragen.

    Nicht nur in der product_info sondern auch im Listing möchte ich gerne auf die Eigenschaften zugreifen (um produktspezifische Icons schon im Listing auszuspielen, zum Anderen würde ich gerne die hinterlegten Eigenschaften frei im Template abrufen können (im Sinne von {$MODULE_product_tags pID=123}).

    Es gibt ja hier schon entsprechende Ansätze produktspezifische Daten innerhalb des Templates zu verwenden. Gestoßen bin ich hier auf "MODUL: Themenwelten" https://www.modified-shop.org/forum/index.php?topic=33237.0 sowie "MODUL: Inserttags als Smarty Modifier" https://www.modified-shop.org/forum/index.php?topic=40723.0. Beide lassen jedoch Artikeleigenschaften (also die Product Tags) außer acht.

    Grundsätzlich würden wir eine entsprechende Erweiterung auch kaufen, jedoch habe ich hierzu nichts finden können. Die "Product Tags" wurden wie es mir scheint bisher etwas stiefmütterlich behandelt.

    Ich würde mich sehr über einen Anstoß freuen!

    Viele Grüße
    Christian

    Linkback: https://www.modified-shop.org/forum/index.php?topic=43035.0
    rechtstexte für onlineshop

    Karl1

    • Experte
    • Beiträge: 1.811
    Re: Artikeleigenschaften im Listing und nach Produkt ID
    Antwort #1 am: 18. Juli 2023, 08:44:01
    Hallo Christian,
    leg mal die beigefügte Datei in das Verzeichnis templates/dein_template/smarty/.

    Damit die neue Smarty-Funktion im Listing funktioniert musst du noch folgenden Code an geeigneter Stelle in die Datei templates/dein_template/module/includes/product_listing_include.html einbauen:
    {if $module_data.PRODUCTS_ID}{prod_tags id=$module_data.PRODUCTS_ID tpl_path=$tpl_path}{/if}
    Die Ausgabe kannst du in der neuen Datei, Variable $html, anpassen.
    Momentan wird das HTML der Produkt-Tags des tpl_modified_responsive erzeugt.

    Dir sollte bewusst sein, dass bei jedem Produkt des Listings eine zusätzliche Datenbankabfrage notwendig ist und das zu Laufzeiteinbußen führt.

    Gruß Karl

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.762
    • Geschlecht:
    Re: Artikeleigenschaften im Listing und nach Produkt ID
    Antwort #2 am: 18. Juli 2023, 15:25:23
    [...]
    Dir sollte bewusst sein, dass bei jedem Produkt des Listings eine zusätzliche Datenbankabfrage notwendig ist und das zu Laufzeiteinbußen führt.
    [...]

    Vielleicht könnte es deshalb etwas bringen alle Eigenschaften mit lediglich einer einzigen Query zu holen.
    Dies könnte man über eine Datei in /includes/extra/modules/categories_listing/categories_smarty/  machen.
    An die im Listing angezeigten Produkt-IDs käme man über $module_content  aus /includes/modules/product_listing.php, welche die /includes/modules/categories_listing.php  includiert in welcher sich das genannte auto_include()  befindet.
    Code: PHP  [Auswählen]
    $all_current_prids = array_keys($module_content);

    In der Query könnte man dann mittels
    Code: PHP  [Auswählen]
    WHERE pt.products_id IN (".implode(',', $all_current_prids).")

    die Tags für alle momentan angezeigten Produkte im Listing holen und nimmt die jeweilige Produkt-ID als Schlüssel des für die Ausgabe zu bildenden Arrays (pt.products_id  muß noch mit ins SELECT).

    Um bei deiner Syntax zu bleiben könnte man dann das Array so erweitern:
    Code: PHP  [Auswählen]
    $module_content[$tags['products_id']][PRODUCTS_TAGS] = array(HIER DAS ERGEBNIS DER TAGS-QUERY);

    Das HTML müsste dann im Template (oder einer im Template includierten Template-Datei) gemacht werden.

    Für die gewünschte Themenwelten-Funktion müsste man besagtes Modul erweitern.

    Gruß,
    noRiddle

    *NACHTRAG*
    Da der OP auch von Icons spricht:
    Die könnte man nach der options_id  bezeichnen (z.B. 10_icon.jpg), in z.B. /img/tag_icons/  legen und so im Template anzeigen lassen.

    cplasa

    • Fördermitglied
    • Beiträge: 200
    • Geschlecht:
    Re: Artikeleigenschaften im Listing und nach Produkt ID
    Antwort #3 am: 18. Juli 2023, 16:22:02
    Damit die neue Smarty-Funktion im Listing funktioniert musst du noch folgenden Code an geeigneter Stelle in die Datei templates/dein_template/module/includes/product_listing_include.html einbauen:
    {if $module_data.PRODUCTS_ID}{prod_tags id=$module_data.PRODUCTS_ID tpl_path=$tpl_path}{/if}

     :king:

    Danke, danke danke! Ich bin immer wieder erstaunt über die Hilfsbereitschaft!

    Ich habe das Modul wie im Anhang zu sehen erstmal testweise ins Listing eingebunden. Es wird alles wunderbar ausgegeben - genau die Funktion die ich brauchte.

    Nicht nur, dass es frei auf jeder Ebene des Templates verwendbar ist, auch die gezielte Abfrage nach pID ist möglich mit
    Code: PHP  [Auswählen]
    {prod_tags id=123 tpl_path=$tpl_path}
    (die ich an anderer Stelle benötige)

    Nun ist es auch möglich mehrere Variationen des Moduls im smarty Ordner abzulegen, welche auf die gewünschte Abfrage abgestimmt ist.

    mit einer angepassten SQL abfrage wie z.B.
    Code: SQL  [Auswählen]
    ...
    AND (pto.options_name = 'Verbrauch' OR pto.options_name = 'Gewichteter Energieverbrauch' OR pto.options_name = 'Farbwiedergabeindex' OR pto.options_name = 'Sockel' OR pto.options_name = 'Energieeffizienzklasse')
    ...

    Kann ich jetzt die Ausgabe gezielt nach definierten Eigenschaftsnamen anpassen.

    @noRiddle
    Danke für den Ansatz! Werde mir das genauer anschauen. Tatsächlich kommen hier einige Abfragen zusammen, da ich die "Anzahl der Artikel" Funktion für den Kunden grundsätzlich deaktiviert habe. Ggf. schaue ich auch das Produktlisting dynamisch nachladen zu lassen.

    Was die Icons betrifft so vergebe ich diese nicht global, sondern würde diese dem Eigenschaftswert nach auf verschiedenen Ebenen des Templates in einem jeweils angepassten Erscheinungsbild ausspielen. Auch unterstützt die derzeit vorhandene Bildfunktion keine SVGs die ich bevorzugen würde.

    Trotzdem gut zu wissen, denn ggf. benötigen wir das dennoch. Bei der Dynamik die sich aus den Artikeleigenschaften ergibt können wir jetzt noch gar nicht absehen was wir damit alles schönes machen können  :-D

    Ihr habt mir auf jeden Fall die Woche gerettet, danke!  :cheers:

    Karl1

    • Experte
    • Beiträge: 1.811
    Re: Artikeleigenschaften im Listing und nach Produkt ID
    Antwort #4 am: 18. Juli 2023, 17:31:50
    Hallo Zusammen!

    @noRiddle:
    Die Auto-Include-Dateien hatte ich auch verfolgt, aber auf die Idee in categories_listing die Variable $module_content zu erweitern wäre ich nicht gekommen.

    @Christian:
    Anbei eine Datei, die du in includes/extra/modules/categories_listing/categories_smarty/ legen kannst.
    Die Tags-Daten sind dann als Bestandteil der Produktdaten erreichbar.

    Gruß Karl

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.762
    • Geschlecht:
    Re: Artikeleigenschaften im Listing und nach Produkt ID
    Antwort #5 am: 18. Juli 2023, 23:21:26
    @Karl
    Tja, ist ja modul-bezogen gesehen eigtl. auch ein Umweg, weil für product_listing  ein Hook nach der while-Schleife die $module_content  füllt fehlt.

    [...]
    mit einer angepassten SQL abfrage wie z.B.
    Code: SQL  [Auswählen]
    ...
    AND (pto.options_name = 'Verbrauch' OR pto.options_name = 'Gewichteter Energieverbrauch' OR pto.options_name = 'Farbwiedergabeindex' OR pto.options_name = 'Sockel' OR pto.options_name = 'Energieeffizienzklasse')
    ...

    Kann ich jetzt die Ausgabe gezielt nach definierten Eigenschaftsnamen anpassen.
    [...]

    Ich würde empfehlen niemals Namen sondern IDs zu benutzen.
    1. können Namen sich ändern oder auch versehentlich verkehrt geschrieben werden und 2. ist es bei Namen essentiell wichtig die Datei mit der Query in der korrekten Kodierung zu speichern (wahrscheinlich ja UTF-8).
    Kurz, es ist fehleranfällig.
    Code-mäßig ist es zwar später, wenn man nach Wochen oder Monaten nochmal reinschaut, leichter zu verstehen, aber..., du verstehst.

    Gruß,
    noRiddle

    *NACHTRAG*
    SVGs kannst du doch immer nutzen (für Icons). Die lassen sich ja mittels CSS stylen.
    Habe jedoch wohl deine Aussage, insbesondere wegen der Verbindung zu "derzeit vorhandene Bildfunktion", nicht verstanden.
    6 Antworten
    4154 Aufrufe
    11. Februar 2014, 14:17:15 von Luzy
    2 Antworten
    2514 Aufrufe
    19. August 2012, 13:41:33 von Gradler
    7 Antworten
    3512 Aufrufe
    19. November 2010, 10:43:59 von danielson
    5 Antworten
    4610 Aufrufe
    21. Juli 2010, 09:49:01 von Tomcraft