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: Verwendung von if (strpos( - mit Smarty

    Ronja

    • Frisch an Board
    • Beiträge: 91
    Verwendung von if (strpos( - mit Smarty
    am: 03. November 2010, 14:44:21
    Hallo Ihr,

    ich bräuchte für die Anzeige von Popupfenstern zu speziellen Produkten eine Möglichkeit, meine Variable {$PRODUCTS_BILDNAME} auszulesen und im Fall dessen, dass sie einen bestimmten Wortteil enthält, eine ID zu erzeugen, die dann dem Popup zugeordnet wird, damit ein spezielles Fenster geöffnet werden kann.

    Das mit der ID-Zuweisung zum Popup funktioniert, aber, ich sehe mich außerstande, mittels strpos die Smartyvariable auszulesen.

    Mein Code:

    Code: PHP  [Auswählen]
    {if (strpos($PRODUCTS_BILDNAME,'hallo'))}{php}$meineID ="20";{/php}{/if}
    Mein Ansatz, die Smartyvarible einfach in eine normale php-Variable umzuwandeln, funktioniert auch nicht.

    Code: PHP  [Auswählen]
    {php}$meineID = {/php}{$PRODUCTS_BILDNAME}{php};{/php}
    Ich habe es wirklich in allen möglichen Variationen probiert, ich finde keine Lösung.

    Nochmal zum Verdeutlichen:

    Ich habe z.B. die Bildnamen
    - Meine Katze
    - Dein Hund

    Wenn im Bildnamen der Begriff "Hund" enthalten ist, will ich die ID 20 erzeugen, wenn im Bildnamen "Katze" enthalten ist, will ich die ID 21 erzeugen.

    Könnt Ihr mir bitte helfen? Ich verzweifle da jetzt schon seit Stunden dran.

    liebe Grüße
    Ronja



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

    web28

    • modified Team
    • Beiträge: 9.404
    Verwendung von if (strpos( - mit Smarty
    Antwort #1 am: 03. November 2010, 14:56:44
    Nimm strstr, damit funktioniert es!

    Für strpos musst Du noch !== false hinzufügen!

    Gruss Web28

    Ronja

    • Frisch an Board
    • Beiträge: 91
    Verwendung von if (strpos( - mit Smarty
    Antwort #2 am: 03. November 2010, 15:45:00
    Hi Web,

    keine chance, das bringt einen Smarty-error.

    Ich habe es jetzt so gelöst:

    Code: PHP  [Auswählen]

    {if $PRODUCTS_BILDNAME|strstr:"meine"}{php}$meineID ="10"{/php}{/if}

    Das funktioniert.
    ABER:

    Ich möchte jetzt gern noch eine Doppelabfrage machen.

    Code: PHP  [Auswählen]

    {if $PRODUCTS_BILDNAME|strstr:"meine" || $PRODUCTS_BILDNAME|strstr:"Katze"}{php}$meineID ="10"{/php}{/if}

    Das funktioniert aber nicht, er überprüft immer nur den ersten Teil, den 2. ignoriert er.

    Hab auch schon probiert z.B.

    Code: PHP  [Auswählen]

    {if $PRODUCTS_BILDNAME|strstr:"meine" || "Katze"}{php}$meineID ="10"{/php}{/if}

    Code: PHP  [Auswählen]

    {if $PRODUCTS_BILDNAME|strstr:("meine","Katze")}{php}$meineID ="10"{/php}{/if}

    Jemand eine Idee?

    Merci :-)
    Ronja

    ChristianRothe

    • Mitglied
    • Beiträge: 187
    Re: Verwendung von if (strpos( - mit Smarty
    Antwort #3 am: 30. Dezember 2015, 09:28:11
    Ist doch alles ganz einfach mit PHP zu lösen, wenn man sich innerhalb eines Smarty-Templates mittels get_template_vars den Inhalt einer Template-Variable direkt auf die PHP-Ebene holt.

    Code: PHP  [Auswählen]
    {php}  
      $bildname = $this->get_template_vars('PRODUCTS_BILDNAME');
      if (strpos($bildname, "Katze") !== false) {
        $meineID ="10.jpg";
      } elseif (strpos($bildname, "Hund") !== false) {
        $meineID ="20.jpg";
      }
      $this->assign('NEUER_BILDNAME', $meineID);
    {/php}
     

    Im Beispiel habe ich das Ergebnis aus dem PHP-Block auch direkt wieder ans Smarty übergeben, so dass Du dort ganz einfach {$NEUER_BILDNAME} als "ganz normale" Smarty-Template-Variable ansprechen und beliebig in die Ausgabe einbinden könntest:
    Code: PHP  [Auswählen]
    <img src="{$NEUER_BILDNAME}">

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Re: Verwendung von if (strpos( - mit Smarty
    Antwort #4 am: 30. Dezember 2015, 11:01:40
    Auch wenn das Thema schon in die Jahre gekommen ist:
    Ohne php-tags (verstehe nicht warum der OR-Operator nicht funktioniert haben soll):
    Code: XML  [Auswählen]
    {if $PRODUCTS_BILDNAME|strpos:'meine' !== false || $PRODUCTS_BILDNAME|strpos:'Katze' !== false}
    DO_SOMETHING
    {/if}

    ...wobei die Frage bleibt wie und wofür genau $meineID benutzt werden sollte und ob man das nicht auch ohne php-tags hätte verwirklichen können (z.B. mittels der Smarty-Funktionen assign und |replace).

    Guten Rutsch und Gruß,
    noRiddle
    3 Antworten
    2120 Aufrufe
    28. November 2017, 08:35:53 von awids
    2 Antworten
    3187 Aufrufe
    05. November 2016, 13:43:09 von Buggyboy