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: PRODUCTS_NAME in MODULE_products_reviews anzeigen

    demoncleaner

    • Fördermitglied
    • Beiträge: 482
    Re: PRODUCTS_NAME in MODULE_products_reviews anzeigen
    Antwort #15 am: 15. März 2023, 11:14:54
    Ja die gibt es. Das hatte ich auch schon gecheckt.

    Was du aber doch mit

    Code: PHP  [Auswählen]
    {assign P_NAME $smarty.get.products_id|xtc_get_products_name}
     

    machst ist, du sprichst eine Funktion an als wäre es ein modifier. Ich frag mal ganz doof.... geht das denn?
    Ich bin wohlgemerkt kein Smarty-Experte. Daher ja dieser Thread.
    Aber ich hätte jetzt vermutet, um eine Funktion anzusprechen müsste ich es erst in php so machen:

    Code: PHP  [Auswählen]
    $smarty->assign('ergebnis', getIrgendwas($args));
     

    und käm dann innerhalb des Templates so an deren Wert:

    Code: PHP  [Auswählen]
    {$ergebnis}
     

    Vermutlich bin ich auf dem Holzweg. Korrigiere mich da bitte.

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: PRODUCTS_NAME in MODULE_products_reviews anzeigen
    Antwort #16 am: 15. März 2023, 11:33:08
    ... du sprichst eine Funktion an als wäre es ein modifier. Ich frag mal ganz doof.... geht das denn?
    [...]

    Ja, das geht beim Standardshop.

    Vorschlag:
    Anstelle des Produktnamens könntest du in der \templates\tpl_modified_responsive\module\products_reviews.html folgenden Code,

    Code: PHP  [Auswählen]
    {$module_data.TEXT}

    mit z.B. diesem Code ersetzen,

    Code: PHP  [Auswählen]
    {if $module_data.TEXT}{$module_data.TEXT}{else}ohne Text{/if}

    sofern du einen einsprachigen Shop hast.

    Gruss
    Hanspeter

    demoncleaner

    • Fördermitglied
    • Beiträge: 482
    Re: PRODUCTS_NAME in MODULE_products_reviews anzeigen
    Antwort #17 am: 15. März 2023, 11:45:12
    Ja der Shop ist einsprachig.
    Danke, dass du dir hier so viel Gedanken um eine gute Lösung für mich machst.
    Ich wollte ganz gerne den Produktnamen da nochmal stehen haben, eben weil ich es bei TrustedShops so gesehen habe und vermutet hatte, dass es nicht schadet wenn der noch mehrmals auf der Seite- in einem sinnvollen Kontext wie den reviews - genannt wird.

    Könnte es an der Shopversion liegen, dass "|xtc_get_products_name" bei mir nicht geht? Ist ja echt seltsam.

    Könnte ich denn "normalerweise" auf jede zur Verfügung stehende Funktion über Smarty auf die Art zugreifen?

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: PRODUCTS_NAME in MODULE_products_reviews anzeigen
    Antwort #18 am: 15. März 2023, 12:05:46
    [...]
    Könnte ich denn "normalerweise" auf jede zur Verfügung stehende Funktion über Smarty auf die Art zugreifen?

    Ja, siehe Zitat.

    Nee so:
    Code: PHP  [Auswählen]
    <a href="{$smarty.const.FILENAME_PRODUCT_REVIEWS_WRITE|xtc_href_link:'products_id='}{$PRODUCTS_ID}">{#write_review#}</a>

    Code: PHP  [Auswählen]
    {param1|function_name:param2:param3:...}

    Auch die in PHP vordefinierten Funktionen funktionieren, siehe Links.

    https://www.smarty.net/forums/viewtopic.php?p=54643
    https://stackoverflow.com/questions/4754173/smarty-how-to-use-php-functions

    Nachtrag:
    Solltest du in deinem Shop Smarty4 nutzen, muss es unbedingt die Version aus dem Shop und nicht die von GitHub sein.

    Gruss
    Hanspeter

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: PRODUCTS_NAME in MODULE_products_reviews anzeigen
    Antwort #19 am: 15. März 2023, 13:15:44
    Nachtrag:

    Dir fehlt wahrscheinlich in der Datei \includes\application_top.php folgende Zeile

    Code: PHP  [Auswählen]
    require_once (DIR_FS_INC.'xtc_get_products_name.inc.php');

    Wenn dem so ist, müsstest du im Ordner  includes/extra/functions/ die Datei include_xtc_get_products_name.php mit folgendem Inhalt erstellen.

    Code: PHP  [Auswählen]
    <?php
    require_once (DIR_FS_INC.'xtc_get_products_name.inc.php');

    Gruss
    Hanspeter

    demoncleaner

    • Fördermitglied
    • Beiträge: 482
    Re: PRODUCTS_NAME in MODULE_products_reviews anzeigen
    Antwort #20 am: 15. März 2023, 13:42:29
    Hallo Hanspeter,

    Hammer! Das war es. Ich hab mal geschaut.
    Das ist so in 2.0.6.0 noch nicht vorhanden ab der 2.0.7.0 aber schon.
    Tausend Dank!!!

    Ich hab es jetzt mal nicht in die /includes/extra/functions/ gelegt, da ich über kurz oder lang sowieso updaten werden. Daher kann das ja ruhig schon in die /includes/application_top.php

    Nochmals vielen Dank für deine (eure) Zeit.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Re: PRODUCTS_NAME in MODULE_products_reviews anzeigen
    Antwort #21 am: 15. März 2023, 20:24:21
    Die xtc_get_products_name.inc.php  wurde in der 2.0.6.0 nicht mehr benutzt, in der 2.0.7.2  dann jedoch im Zuge von Performance-Verbesserungen erneut eingebunden.

    Den Code in der Datei in /includes/extra/functions/  würde ich mit einer Abfrage umgeben, damit es zukünftig, nach Updates, nicht zu Ärger kommen kann.
    Code: PHP  [Auswählen]
    if(!function_exists('xtc_get_products_name')) {
      require_once (DIR_FS_INC.'xtc_get_products_name.inc.php');
    }

    Da die Idee den Produkt-Namen in den Reviews zur Verfügung zu haben eine gute ist und durchaus Sinn macht, würde ich vorschlagen dazu ein Ticket aufzumachen. Dies mit dem Feature-Wunsch entweder die Methode getReviews()  entsprechend zu erweitern oder einen Hook in die Methode einzubauen.
    Soweit ich das sehe würde nicht einmal eine weitere Query, oder ein weiteres JOIN, in der genannten Methode nötig sein, da der Produkt-Name im Array $this->data  zur Verfügung steht, welches bereits im _construct  der Klasse gebildet wird.

    Gruß,
    noRiddle

    demoncleaner

    • Fördermitglied
    • Beiträge: 482
    Re: PRODUCTS_NAME in MODULE_products_reviews anzeigen
    Antwort #22 am: 16. März 2023, 10:00:50
    Danke noRiddle.
    Nur fürs Protokoll: ich glaube das xtc_get_products_name.inc.php seit 2.0.7.0 schon wieder mit eingebunden ist.

    Deine Vermutung kann ich bestätigen. Habe mal testweise

    Code: PHP  [Auswählen]
    'PRODUCTS_NAME' => $this->data['products_name']
     

    in Zeile 236 in der includes/classes/product.php bei der getReviews() ergänzt und es funktioniert.

    Ich mach n Ticket.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Re: PRODUCTS_NAME in MODULE_products_reviews anzeigen
    Antwort #23 am: 16. März 2023, 10:05:34
    Okay, dann seit 2.0.7.0, weiß ich nicht mehr genau.
    Und ja, man müsste lediglich das Array $reviews_array[$pID][$i]  um ein Element erweitern und Bingo.
    Code: PHP  [Auswählen]
              $reviews_array[$pID][$i] = array (
                'AUTHOR' => $reviews['customers_name'],
                'DATE' => xtc_date_short($reviews['date_added']),
                'RATING' => xtc_image($img, sprintf(TEXT_OF_5_STARS, $reviews['reviews_rating'])),
                'RATING_MICROTAG' => xtc_image($img, sprintf(TEXT_OF_5_STARS, $reviews['reviews_rating']),'','','itemprop="rating"'),
                'RATING_VOTE' => $reviews['reviews_rating'],
                'TEXT' => nl2br($reviews['reviews_text']),
                'PRODUCTS_NAME' => $this->data['products_name'] //added, noRiddle
              );

    Gruß,
    noRiddle

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: PRODUCTS_NAME in MODULE_products_reviews anzeigen
    Antwort #24 am: 17. März 2023, 09:52:14
    Hallo demoncleaner,

    hier noch eine JavaScript bzw. jQuery Lösung deines Problems.

    Erstelle die Datei /templates/tpl_modified_responsive/javascript/extra/set_produt_name_in_empty_review_description.php mit folgendem Inhalt.

    Code: PHP  [Auswählen]
    <?php if (basename($PHP_SELF) == FILENAME_PRODUCT_INFO) { ?>
    <script>
    $(document).ready(function () {
      let p_name = $("h1[itemprop='name']").text();
      $("div[itemprop='review'] span[itemprop='description']:empty").html(p_name);
    });
    </script>
    <?php } ?>

    Warum poste ich Obiges?

    Es ist leider so, dass die Entwickler von xtc der Meinung waren, man müsse viele Instanzen von Smarty erzeugen, wahrscheinlich mit der Intention, dass so die Smarty-Variablen nicht in Konflikt zueinander kommen, was natürlich auch mit z.B. Präfix-Bezeichnern zu verhindern gewesen wäre. Des Weiteren werden die Teiltemplates mit den Smarty-Variablen an jenen Stellen im Skript gerendert, wo alle Variablen, die im jeweiligen Teiltemplate benötigt werden, beisammen sind, anstatt dies erst am Ende, vor dem Anzeigen (display) zu tun. All das führt nun dazu, dass nicht alle per Smarty-Assign erzeugten Variablen überall, also in allen Teiltemplates zur Verfügung stehen. Aber sei's drum, es ist jetzt halt so wie es ist.

    Mit JavaScript bzw. jQuery kann man diese Probleme in den meisten Fällen lösen, sofern im ausgegeben HTML-Dokument die Variable, in deinem Fall der Produktname, vorkommt. Dies scheint mir ein universellerer Lösungsansatz, als nachträglich die benötigte Smarty-Variable dem Teiltemplate "updatesicher" zur Verfügung zu stellen.

    Nachtrag: Folgende Smarty-Instanzen werden vom Shopsystem erzeugt.
    $smarty = new Smarty();
    $box_smarty = new Smarty;
    $popup_smarty = new Smarty();
    $info_smarty = new Smarty;
    $paypal_smarty = new Smarty();
    $payment_smarty = new Smarty();
    $ec_smarty = new Smarty();
    $filter_smarty = new Smarty;
    $gift_smarty = new Smarty;
    $default_smarty = new Smarty;
    $categorie_smarty = new Smarty;
    $banner_smarty = new Smarty;
    $module_smarty = new Smarty;

    Gruss
    Hanspeter

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Re: PRODUCTS_NAME in MODULE_products_reviews anzeigen
    Antwort #25 am: 17. März 2023, 10:38:43
    Was du über die Smarty-Instanzen /-Variablen gesagt hast wird sich wohl ändern.
    Siehe dazu den Ursprungs-Thread Weitgehend update-sichere Templates
    und dazu den daraus erwachsenen Thread Experten-Forum => Dynamische Templates - Konzept

    Gruß,
    noRiddle

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: PRODUCTS_NAME in MODULE_products_reviews anzeigen
    Antwort #26 am: 17. März 2023, 12:24:38
    Ist gut, dass sich das ändert.

    Gruss
    Hanspeter
    Trade Republic - Provisionsfrei Aktien handeln
    7 Antworten
    3840 Aufrufe
    03. Juli 2013, 19:57:39 von ki
    2 Antworten
    1903 Aufrufe
    14. März 2016, 11:25:19 von noRiddle (revilonetz)
    2 Antworten
    1552 Aufrufe
    10. Juli 2017, 14:57:28 von dynamic-pro
    2 Antworten
    2269 Aufrufe
    16. August 2010, 10:17:48 von rayzob
               
    anything