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: Übergabe von Variable aus categorie_listing an sub_categorie_listing

    bige

    • Mitglied
    • Beiträge: 181
    Hallo,

    ich glaube das ist eine reine Smarty Frage.
    Ich arbeite derzeit im neuen NOVA Template an der Categorie Listing Seite.

    Dort werden ja die Blöcke Subcategories und New Products includiert.
    {if isset($CATEGORIES_LISTING)}{$CATEGORIES_LISTING}{/if}
    {if isset($MODULE_new_products)}{$MODULE_new_products}{/if}

    In diesen beiden Includes habe ich jedoch bspw. den aktuellen Kategorienamen nicht zur Verfügung.

    Ich würde jetzt gerne in der new_products.html so etwas ausgeben wie Neue Artikel in der Kategorie "xyz".

    Gibt es eine Möglichkeit, den Kategorienamen in die Untertemplates direkt in Smarty zu übergeben.
    Klar könnte ich den Header aus den Untertemplates rausnehmen und direkt in der categorie_listing.html ausgeben, wäre aber suboptimal.

    Ins PHP möchte ich wegen Updatefähigkeit auch ungerne arbeiten.

    Das hier geht nicht:

    {assign var="categorie_name_parent" value="$CATEGORIES_NAME" scope="parent"}
    und im Subtemplate dann
    {$categorie_name_parent}

    Liebe Grüße
    Andi

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

    awids

    • Experte
    • Beiträge: 3.803
    • Geschlecht:
    Code: PHP  [Auswählen]
    {assign var="parent" value=$smarty.get.cPath|xtc_get_category_data}
    Code: PHP  [Auswählen]
    {$parent.categories_name}

    bige

    • Mitglied
    • Beiträge: 181
    Perfekt...vielen Dank. Funktioniert bestens...

    awids

    • Experte
    • Beiträge: 3.803
    • Geschlecht:
    Nichts zu danken. Hab es nochmal geändert, da du in deiner Fragestellung ja Beispiele mit "parent" vorgetragen hast. Nun taucht es in meinem Code auch auf.

    bige

    • Mitglied
    • Beiträge: 181
    Hi noch einmal.

    Gibt es diesen Trick auch, um den Herstellernamen auf der Produktlistenseite in den Produktboxen ausgeben zu können?
    Bisher habe ich lediglich die {$module_data.MANUFACTURERS_ID} zur Verfügung.
    Bräuchte aber {$module_data.MANUFACTURERS_NAME}.
    Auf der Categorie Listing habe ich den Namen.

    Viele Grüße
    Andi

    awids

    • Experte
    • Beiträge: 3.803
    • Geschlecht:
    Ich habe zwar einen Modifier, mit dem das stellenweise geht, aber da die $module_data.MANUFACTURERS_ID nicht überall zur Verfügung steht, wird der dir nicht reichen. Eventuell könnte man die Variable über das Auto-Include-System zur Verfügung stellen. Oder über eine Klassenerweiterung.

    bige

    • Mitglied
    • Beiträge: 181
    Danke für die Antwort.
    Da bin ich dann doch etwas überfordert.

    Ich versuche halt alles komplett ohne Anpassungen an den Core Dateien zu machen.
    Ich gebe halt in den Produktboxen noch überall das Herstellerlogo aus.
    Komisch, dass in der Category Listing geht, hier aber nicht.
    Wenn alle Stricke reissen, weise ich den Namen einer Variable zu und frage halt immer auf die ID ab.

    Hatte auch nach der Smarty Funktion von Gunnart gesucht, die Seite gibt's aber nicht mehr.

    awids

    • Experte
    • Beiträge: 3.803
    • Geschlecht:
    Mein Modifier war zu einfach gestrickt, aber jetzt habe ich ihn überarbeitet.

    Lege eine PHP-Datei mit dem Namen modifier.get_manufacturers_name.php unter /templates/DEINTEMPLATE/smarty/ ab:

    Code: PHP  [Auswählen]
    <?php
    function smarty_modifier_get_manufacturers_name($id) {
       
        $manufacturer = '';
       
        $products_query = xtDBquery("SELECT manufacturers_id
                                           FROM "
    .TABLE_PRODUCTS."
                                          WHERE products_id = '"
    .$id."'");
       
        if (xtc_db_num_rows($products_query, true) > 0) {
          $products_result = xtc_db_fetch_array($products_query, true);
          $manufacturers_query = xtDBquery("SELECT manufacturers_name
                                              FROM "
    .TABLE_MANUFACTURERS."
                                             WHERE manufacturers_id = '"
    .$products_result['manufacturers_id']."'
                                               AND manufacturers_status = 1"
    );
          if (xtc_db_num_rows($manufacturers_query, true) > 0) {
            $manufacturers_result = xtc_db_fetch_array($manufacturers_query, true);
            $manufacturer = $manufacturers_result['manufacturers_name'];
          }
        }
       
        return $manufacturer;
           
    }
    ?>

    An gewünschter Stelle in den Templates (z. B. product_box.html im neuen NOVA-Template) folgendes eintragen:

    Code: PHP  [Auswählen]
    {$module_data.PRODUCTS_ID|get_manufacturers_name}

    bige

    • Mitglied
    • Beiträge: 181
    Danke für das Smarty Plugin.
    Leider kommt der Name aber nicht an.

    Ich habe mir testweise mal in dem Snippet die ID ausgeben lassen, die kommt an.

    Anstelle von return $manufacturer dann einfach return $id;

    Der Modifier greift also, anscheinend ist hier aber die Query ohne Ergebnis.
    Die Logs geben hier auch keinen Fehler her.

    PHP Version ist übrigens 8.1.17

    bige

    • Mitglied
    • Beiträge: 181
    Oh man, die ganzen Bäume...

    Geht jetzt. Man sollte auch den Status des Herstellers auf Aktiv setzen...

    Vielen, vielen Dank.

    awids

    • Experte
    • Beiträge: 3.803
    • Geschlecht:
    Ja, sollte man. ;-)
    2 Antworten
    1340 Aufrufe
    19. Januar 2017, 23:48:53 von hzs123456
    0 Antworten
    1841 Aufrufe
    30. September 2012, 19:44:50 von malinka
    7 Antworten
    3341 Aufrufe
    28. Juni 2013, 17:10:35 von noRiddle (revilonetz)