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: Artikelstatus auf main_content direkt per Smarty abrufen?

    newbee79

    • Fördermitglied
    • Beiträge: 185
    • Geschlecht:
    Guten Morgen zusammen,

    nachdem ich jetzt 2 Stunden gesucht und einfach nichts gefunden habe, muß ich leider doch nachfragen:

    Ich möchte auf der Startseite ein Teaser für ein bestimmtes Produkt setzen - und der Teaser soll nur solange sichtbar sein, wie auch der Artikel verfügbar ist.

    Ich würde das gerne so lösen ( in der Art, der Code funktioniert so leider nicht ):

    Code: PHP  [Auswählen]
    {if $pID="102" $PRODUCTS_STATUS >=1}<img src="teaser.jpg">
    {else}
    {/if}

    Ich hoffe es wird klar was ich abfragen will  :-?

    Vielen Dank im Voraus.

    LG David.

    Linkback: https://www.modified-shop.org/forum/index.php?topic=35176.0
    Trade Republic - Provisionsfrei Aktien handeln

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    Re: Artikelstatus auf main_content direkt per Smarty abrufen?
    Antwort #1 am: 13. Juni 2016, 17:14:03
    Bau Dir eine benutzerdefinierte Smarty Funktion.

    /templates/<dein template>/smarty

    Neue Datei:
    function.teaser.php

    Inhalt so etwa:
    Code: PHP  [Auswählen]
    <?php
    function smarty_function_teaser($Params, &$smarty) {
            $pid = (int)$Params['pid'];
        if ($pid === 0) return null; // Falscheingabe
        $query = xtc_db_fetch_array(xtc_db_query("SELECT products_status FROM ".TABLE_PRODUCTS." WHERE products_id='".$pid."'"));
            $filename = DIR_FS_DOCUMENT_ROOT.'/media/products/teaser_'.$pid.'.jpg';
        if ($query['products_status'] >= 1 && file_exists($filename)) echo '<img src="'.$filename.'">';
    }
    ?>
     
    Im Template geht dann so die Ausgabe des Bildes:
    Code: XML  [Auswählen]
    {teaser pid="102"}

    Aber das Bild kommt nur, wenn products_status >= 1 ist und die Datei /media/products/teaser_102.jpg existiert.

    Damit gehen also auch unterschiedliche Teaser, und die Platzierung ist egal. Irgendwo im Template wo Smarty läuft.

    Edit: Templatecache könnte hier Ärger machen! Das müsste man mal testen! Also Seite mit Teaser aufrufen, den Artikel dann deaktivieren und die Seite nochmal aufrufen. Wenn Teaser noch da, Cache leeren und nochmal schauen! Falls das Problem auftritt, wird es ein wenig komplizierter ....

    newbee79

    • Fördermitglied
    • Beiträge: 185
    • Geschlecht:
    Re: Artikelstatus auf main_content direkt per Smarty abrufen?
    Antwort #2 am: 14. Juni 2016, 06:58:51
    Guten Morgen Bonsai!

    Vieeeelen Dank für die Hilfe  :cheers1: - werde ich heute Abend gleich mal probieren.

    Hat der Teaser dann eigentlich gleich einen Link zum Artikel ?

    Kenn' mich mit Programmierung nicht groß aus, sehe nur irgendwie kein " <a href…" ?!
    Oder steckt das automatisch in der Funktion?

    Templatecache habe ich eh nicht aktiviert, das dürfte dann keine Probleme machen  :-D

    Wünsche einen guten Start in den Tag!

    LG David

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    Re: Artikelstatus auf main_content direkt per Smarty abrufen?
    Antwort #3 am: 14. Juni 2016, 12:18:51
    Kann sein dass da noch ein Tippfehler im Code ist! War mal schnell hingeschrieben ohne Test!

    Mit Link wäre es so:
    Code: PHP  [Auswählen]
    <?php
    function smarty_function_teaser($Params, &$smarty) {
            $pid = (int)$Params['pid'];
        if ($pid === 0) return null; // Falscheingabe
        $query = xtc_db_fetch_array(xtc_db_query("SELECT products_status FROM ".TABLE_PRODUCTS." WHERE products_id='".$pid."'"));
            $filename = DIR_FS_DOCUMENT_ROOT.'/media/products/teaser_'.$pid.'.jpg';
        if ($query['products_status'] >= 1 && file_exists($filename)) echo '<a href="'.xtc_href_link(FILENAME_PRODUCTS_INFO,'products_id='.$pid).'"><img src="'.$filename.'"></a>';
    }
    ?>

    Edit: Wenn die Smarty Funktion in irgendeinem Text funktionieren soll, der im Backend eingegeben wird, also z.B. im Template mit {$CATEGORIES_DESCRIPTION} ausgegeben wird, musst du im Template alle Vorkommen von
    Code: XML  [Auswählen]
    {$CATEGORIES_DESCRIPTION}
    ersetzen mit
    Code: XML  [Auswählen]
    {eval var=$CATEGORIES_DESCRIPTION}

    newbee79

    • Fördermitglied
    • Beiträge: 185
    • Geschlecht:
    Re: Artikelstatus auf main_content direkt per Smarty abrufen?
    Antwort #4 am: 14. Juni 2016, 12:41:09
    Vielen Dank! TOP!

    Melde mich, wenn ich's heute Abend mal probiert habe ( Shop ist nur nebenberuflich ).

    Habe immer tausend Ideen im Kopf, kann sie aber leider programmiertechnisch nie richtig selbst umsetzen  :datz:

    Da fehlt mir einfach die Zeit mich da auch noch richtig einzuarbeiten ( leider ).

    Tausend Dank!

    David

    webald

    • modified Team
    • Beiträge: 2.791
    Re: Artikelstatus auf main_content direkt per Smarty abrufen?
    Antwort #5 am: 14. Juni 2016, 13:10:56
    Immer raus mit den Ideen. Ich finde es super einen Artikel so prominent auf die Startseite zu bringen. Allerdings würde ich da eher die Tabelle products um ein Feld (teaser as boolean) erweitern. Dann könnte man mehrere Artikel haben die als Teaser angezeigt werden können, sobald der erste Artikel verbraucht ist rutscht dann automaisch der nächste nach. Sollte sich in 2.0 ohne Codeänderunge., außer beim Template (benötigt ja nur das Feld TEASER), lösen lassen. Ich hatte es schon auf meine todo-Liste gesetzt.

    p3e

    • Experte
    • Beiträge: 2.424
    Re: Artikelstatus auf main_content direkt per Smarty abrufen?
    Antwort #6 am: 14. Juni 2016, 14:44:52
    @webald: Das wäre ideal für Sonderaktionen (z.B. Gratisartikel oder ein besonderes Angebot). In dem Fall wäre aber gut, wenn man den Artikel auf Menge pro Kunde und auf Kundengruppen reduzieren kann.

    webald

    • modified Team
    • Beiträge: 2.791
    Re: Artikelstatus auf main_content direkt per Smarty abrufen?
    Antwort #7 am: 14. Juni 2016, 14:49:51
    so ganz weit hinten im Kopf meine ich dass es ein Modul gibt, das die Artikelanzahl je Kunde einschränkt. Das müßte man dann halt kombinieren.

    p3e

    • Experte
    • Beiträge: 2.424
    Re: Artikelstatus auf main_content direkt per Smarty abrufen?
    Antwort #8 am: 14. Juni 2016, 15:05:40
    Eine Einfache Lösung wäre es pro Bestellung die Anzahl des Sonderartikels einzuschränken. Da muss man nur darauf achten, dass die Anzahl im Warenkorb nicht überschritten wird und muss nicht die alten Bestellungen überprüfen oder dafür gar eine extra Tabelle anlegen.

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    Re: Artikelstatus auf main_content direkt per Smarty abrufen?
    Antwort #9 am: 14. Juni 2016, 15:08:53
    @Webald: guter Hinweis! Habe bisher wenig in der 2.00 gemacht, deshalb kam mir nur die Idee wie man es in 1.06 ohne Core Änderungen machen kann.

    Es gehen auch so mehrere Teaser:
    {teaser pid="102"}
    {teaser pid="56"}
    {teaser pid="58"}

    Man sollte halt noch eine class="teaser" in den a Tag einbauen, damit man bei mehreren Teasern irgendein CSS zuweisen kann.

    Mit meiner Lösung kannst du eben (Wenn das eval= eingebaut ist) auch ganz einfach im Backend die Teaser in den Startseiten Text reinknallen.

    Entstanden ist das aus der Idee:
    Code: PHP  [Auswählen]
    <?php
    /*========================================================================================
    myproduct for modified eCommerce Shopsoftware [www.modified-shop.org]
    Autor: Bonsai
    ===========================================================================================
    File information:
    function.productlink.php outputs a link for a given products_id
    USAGE: <a href="{productlink products_id='345'}">Some Text</a>
    ===========================================================================================*/

    function smarty_function_productlink($params, &$smarty) {
        return xtc_href_link('product_info.php', 'products_id='.$params['products_id']);
    }
    ?>

    Mir war es einfach zu doof immer das xtc_href_link Gedöns einzutippen wenn ich irgendwo auf ein Produkt verlinken möchte.

    newbee79

    • Fördermitglied
    • Beiträge: 185
    • Geschlecht:
    Re: Artikelstatus auf main_content direkt per Smarty abrufen?
    Antwort #10 am: 20. Juni 2016, 00:21:54
    Hi Bonsai,

    sorry für die späte Antwort, bin leider nicht früher dazu gekommen.

    Habe die Funktion jetzt mal probiert - leider erscheint der Teaser nicht ... ?!

    Teaser ist richtig benamt und im richtigen Ordner. Artikel ist aktiv und 1 im Bestand.
    Habe auch deine beiden Codes versucht ( 1x mit Link und 1x ohne ).

    Das einzige - ich benutze noch Version 1.5d.... da gibt es ja keinen Ordner "Smarty" im Template,
    also habe ich die function in includes/classes/smarty_2.6.26/plugins gelegt.

    Liegt es vielleicht daran?

    Freue mich auf Antwort.

    LG David

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    Re: Artikelstatus auf main_content direkt per Smarty abrufen?
    Antwort #11 am: 21. Juni 2016, 12:08:40
    error_reporting einschalten! Das error_log des Webservers ansehen. Ohne Fehlermeldung ist das  :glaskugel:

    newbee79

    • Fördermitglied
    • Beiträge: 185
    • Geschlecht:
    Re: Artikelstatus auf main_content direkt per Smarty abrufen?
    Antwort #12 am: 21. Juni 2016, 20:58:47
    Hi,

    error_reporting zeigt keinen Fehler an... ?!

    Habe es bisher unter xampp getest - vorhin mal online im Shop auf einer Unterseite: Dort zeigt er wenigstens das Bildsymbol an!

    Es scheint wohl der Pfad zum Bild nicht zu stimmen. Es wird in der function ja mit " DIR_FS_DOCUMENT_ROOT" zum Bild geführt, aber der Browser macht dann den Link zu: "https://www.meinshop.de/var/www/webxxxxx/html/media/products/teaser_7950.jpg".

    Das stimmt ja so nicht. Was muß ich in der function ändern, damit der Pfad stimmt ?

    Habe mal versucht einen absoluten Pfad anzugeben: "www.meinshop.de/media/..." aber da erscheint nicht mal das Bildsymbol ?!

    Gruß David

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    Re: Artikelstatus auf main_content direkt per Smarty abrufen?
    Antwort #13 am: 22. Juni 2016, 12:02:17
    :datz:
    ersetze mal
    Code: PHP  [Auswählen]
    DIR_FS_DOCUMENT_ROOT
    mit
    Code: PHP  [Auswählen]
    HTTP_SERVER . DIR_WS_CATALOG

    newbee79

    • Fördermitglied
    • Beiträge: 185
    • Geschlecht:
    Re: Artikelstatus auf main_content direkt per Smarty abrufen?
    Antwort #14 am: 22. Juni 2016, 12:52:08
    Bringt auch nichts - jetzt ist nicht mal mehr das Bildicon da  :-X
    6 Antworten
    2868 Aufrufe
    21. Juni 2013, 00:29:39 von Marcel G.
    7 Antworten
    1786 Aufrufe
    27. April 2020, 18:16:49 von noRiddle (revilonetz)
    0 Antworten
    1559 Aufrufe
    15. Juli 2010, 15:47:39 von xtc4pii
               
    anything