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: Zusätzliche Smarty Variable definieren. Wo?

    je_web

    • Mitglied
    • Beiträge: 201
    • Geschlecht:
    Zusätzliche Smarty Variable definieren. Wo?
    am: 07. Januar 2024, 14:30:56
    Hallo,

    ich stehe vor der Herausforderung, dass ich eine zusätzlich Smarty-Variable definieren möchte und zwar den Hersteller-Link als reine URL. Das habe ich auch hinbekommen.
    Code: PHP  [Auswählen]
      $info_smarty->assign('MANUF_PROD_URL', !empty($product->data['products_url']) ? xtc_href_link(FILENAME_REDIRECT, 'action=product&id='.$product->data['products_id'], 'NONSSL', true, false) : '');
     

    Aber wo muss ich diese Definition hinpacken, damit das Updatesicher bleibt? Ich habe es aktuell behelfsmäßig in der includes/modules/product_info.php. Kann ich das auch irgendwo im Template Ordner machen?
    Danke und viele Grüße
    Jens

    Linkback: https://www.modified-shop.org/forum/index.php?topic=43222.0
    Marktplatz - Eine große Auswahl an neuen und hilfreichen Modulen sowie modernen Templates für die modified eCommerce Shopsoftware

    awids

    • Experte
    • Beiträge: 3.803
    • Geschlecht:
    Re: Zusätzliche Smarty Variable definieren. Wo?
    Antwort #1 am: 07. Januar 2024, 15:08:10
    Man kann nicht pauschal sagen, wo du deine Smarty-Variable definierst, ohne zu wissen, an welcher Stelle sie zum Einsatz kommt.

    In deinem Beispiel bildest du ein Assign mit $info_smarty, also soll das auf den Produktdetailseiten zum Einsatz kommen? Dann könntest du deine Definition updatesicher in dem Extra-Ordner /includes/extra/modules/product_info_end/ als PHP-Datei ablegen.

    Code: PHP  [Auswählen]
    <?php
    $info_smarty->assign('MANUF_PROD_URL', !empty($product->data['products_url']) ? xtc_href_link(FILENAME_REDIRECT, 'action=product&id='.$product->data['products_id'], 'NONSSL', true, false) : '');

    je_web

    • Mitglied
    • Beiträge: 201
    • Geschlecht:
    Re: Zusätzliche Smarty Variable definieren. Wo?
    Antwort #2 am: 07. Januar 2024, 15:53:34
    Perfekt, vielen Dank!
    Das hat funktioniert.

    zum Verständnis: Die Dateien in den Extras Ordnern werden in den entsprechenden php-files included?

    je_web

    • Mitglied
    • Beiträge: 201
    • Geschlecht:
    Re: Zusätzliche Smarty Variable definieren. Wo?
    Antwort #3 am: 09. Januar 2024, 20:49:52
    Ah, ich gerade gesehen, die Variable geht jetzt nur in der products_info.

    Wie müsste ich es machen, damit ich auch von der product_listing zugreifen kann.
    In templates/tpl_folder/modules/includes/product_listing_include.html gibt es Variablen die mit {$module_data.VARIABLE} aufgerufen werden können. (z.B. {$module_data.PRODUCTS_PRICE})

    Sowas würde ich auch noch gerne definieren. Wo geht sowas? Wenn ich es richtig gesehen habe, sind diese in includes/modules/default.php konfiguriert, oder?

    awids

    • Experte
    • Beiträge: 3.803
    • Geschlecht:
    Re: Zusätzliche Smarty Variable definieren. Wo?
    Antwort #4 am: 10. Januar 2024, 07:40:16
    Gerade erst gesehen, obwohl ich oberhalb noch in aller Deutlichkeit darauf hingewiesen habe? :whistle: Da kommt doch Freude bei jedem Helfer auf, wenn seine Anmerkungen ignoriert werden.  :ironie:

    Für die Produktlisten müsstest du dir eine Klassenerweiterung für die product-Klasse erstellen/programmieren. Die würde dann auch automatisch auf der Produktdetailseite greifen, sodass die bereits angelegte Definition im Extra-Ordner wieder gelöscht werden könnte. Alternativ ginge das auch über einen Smarty-Modifier.

    karsta.de

    • Experte
    • Beiträge: 3.159
    Re: Zusätzliche Smarty Variable definieren. Wo?
    Antwort #5 am: 10. Januar 2024, 08:29:38
    Wenn es nur darum geht zusätzliche Datenfelder für das Productlisting verfügbar zu machen, findest du hier eine gute Anleitung Tutorial: Zusätzliche Datenfelder Artikel ab Shopversion 2.x

    BG Karsta

    je_web

    • Mitglied
    • Beiträge: 201
    • Geschlecht:
    Re: Zusätzliche Smarty Variable definieren. Wo?
    Antwort #6 am: 10. Januar 2024, 09:42:05
    Gerade erst gesehen, obwohl ich oberhalb noch in aller Deutlichkeit darauf hingewiesen habe?

    Für die Produktlisten müsstest du dir eine Klassenerweiterung für die product-Klasse erstellen/programmieren. Die würde dann auch automatisch auf der Produktdetailseite greifen, sodass die bereits angelegte Definition im Extra-Ordner wieder gelöscht werden könnte. Alternativ ginge das auch über einen Smarty-Modifier.

    Sorry, zuerst war es auch nur für die Product_info gedacht. Da aber default Variablen wie z.B. Available_Date in den Productlistings auch nicht verfügbar sind, wäre jetzt die Erweiterung doch nötig

    Es geht auch nicht um zusätzliche Felder in der Datenbank, nur der Zugriff auf bestehende Felder. Aber eben in der product_listing. Gibt es hierfür auch eine Anleitung? Wenn ich es richtig sehe, kann ich die Anleitung die karsta.de gepostet hat nutzen und die neuen Datenbankfelder einfach weglassen., d.h. Schritt 1-3 weglassen?

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 14.007
    • Geschlecht:
    Re: Zusätzliche Smarty Variable definieren. Wo?
    Antwort #7 am: 11. Januar 2024, 16:44:50
    Die meisten bestehenden Felder stehen doch zur Verfüpgung, auch im Listing.
    Lass dir mal in /includes/modules/product_listing.php  über
    Code: PHP  [Auswählen]
    $module_smarty->assign('module_content', $module_content);
    das ausgeben
    Code: PHP  [Auswählen]
    echo '<pre style="padding:100px 0 0;">'.print_r($module_content, true).'</pre>';

    oder setze in die verwendete Template-Vorlage in /templates/DEIN_TEMPLATE/module/product_lsiting/  ein
    Code: PHP  [Auswählen]
    {debug}
    unter
    Code: PHP  [Auswählen]
    {config_load file="lang_`$language`.section" section="index"}

    Dann siehst du was zur Verfügung steht.

    Wenn ein benötigter Wert fehlt, legst du eine PHP-Datei an unter /includes/extra/define_add_select/  mit diesem Inhalt
    Code: PHP  [Auswählen]
    if(!in_array('p.GEWUENSCHTER_FELDNAME', $add_select_product)) {
      $add_select_product[] = 'p.GEWUENSCHTER_FELDNAME';
    }
    if(!in_array('p.GEWUENSCHTER_FELDNAME', $add_select_default)) {
      $add_select_default[] = 'p.GEWUENSCHTER_FELDNAME';
    }
     

    und das für jeden Wert den du benötigst analog.

    Die Werte werden im Listing dann automatisch zur Verfügung stehen.

    Gruß,
    noRiddle

    je_web

    • Mitglied
    • Beiträge: 201
    • Geschlecht:
    Re: Zusätzliche Smarty Variable definieren. Wo?
    Antwort #8 am: 16. Januar 2024, 12:16:23
    Vielen Dank, so hab ich es jetzt auch gemacht.
    Ich hab mit der Anleitung neue Felde das so umgesetzt.

    Ich hab mir allerdings einen "Alias" eingebunden:

    Code: PHP  [Auswählen]
    $add_select_product[] = 'pd.products_url AS partner_url';

    Das kann ich in der Productlisting benutzen. In der Productinfo muss ich die Variable products_url nutzen, die partner_url ist dort leer.
    Ist das so korrekt?

    Kann das an dieser default Konfiguration in modules/modules/product_info.php liegen:
    Code: PHP  [Auswählen]
    $info_smarty->assign('PRODUCTS_URL', !empty($product->data['products_url']) ? sprintf(TEXT_MORE_INFORMATION, xtc_href_link(FILENAME_REDIRECT, 'action=product&id='.$product->data['products_id'], 'NONSSL', true, false)) : '');
     

    Danke.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 14.007
    • Geschlecht:
    Re: Zusätzliche Smarty Variable definieren. Wo?
    Antwort #9 am: 16. Januar 2024, 14:58:43
    Für die Daten in der product_info werden automatisch alle Daten aus den Tabelle products  und products_description  geholt, da kann kein Alias vergeben werden.
    Siehe /includes/modules/set_ids_by_url_parameter.php  Zeile 24 und includes/classes/product.php Zeilen 67 u. 80.
    Warum auch, warum benötigst du einen Alias ?

    Gruß,
    noRiddle

    je_web

    • Mitglied
    • Beiträge: 201
    • Geschlecht:
    Re: Zusätzliche Smarty Variable definieren. Wo?
    Antwort #10 am: 16. Januar 2024, 15:36:55
    Danke für die Info.

    Ich dachte es wäre schlau, wenn ich einen anderen Variablennamen dafür benutze, da ja auf der product_info die Variable noch mal mit Text etc. ergänzt wird und ich die URL im unangepassten Zustand haben wollte. Also in dem Fall die reine URL ohne Text und xtc_href_link().

    War das keine gute Idee?

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 14.007
    • Geschlecht:
    Re: Zusätzliche Smarty Variable definieren. Wo?
    Antwort #11 am: 16. Januar 2024, 15:45:45
    Ach so, verstehe. Dann mußt du dir ein eigenes Smarty dafür definieren, eben ohne das xtc_href_link()  usw..
    Also in einer PHP-Datei in /includes/extra/modules/product_info_end/
    Code: PHP  [Auswählen]
    $info_smarty->assign('PARTNER_URL', !empty($product->data['products_url']) ? $product->data['products_url'] : '');

    Gruß,
    noRiddle

    je_web

    • Mitglied
    • Beiträge: 201
    • Geschlecht:
    Re: Zusätzliche Smarty Variable definieren. Wo?
    Antwort #12 am: 17. Januar 2024, 09:20:42
    Okay, danke.

    Ich dachte mit der Erweiterung muss ich meine Definition in /includes/extra/modules/product_info_end/, die ich schon angelegt hatte wieder löschen.
    Wenn ich die angelegt lasse funktioniert es.

    Vielen Dank
    2 Antworten
    4419 Aufrufe
    08. Oktober 2010, 14:08:48 von dragonfly76
    3 Antworten
    2921 Aufrufe
    10. August 2010, 17:29:54 von web28
    3 Antworten
    1762 Aufrufe
    26. Januar 2017, 17:25:29 von awids
    5 Antworten
    3998 Aufrufe
    27. März 2010, 19:40:03 von jonnyB