Managed Server
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: MODUL: CSS Produkt- & Attributlagerampel v1.0 CE (ab Shopversion 2.x.x.x)

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.745
    • Geschlecht:
    Code: Javascript  [Auswählen]
    with(document.documentElement){className += \'js\'}
         if ((\'ontouchstart\' in document.documentElement)) {document.documentElement.className += \' touch\';} else {document.documentElement.className += \' no-touch\';}

    Da der Code ursprünglich aus meinem Vorschlag zur Implementation kommt beantworte ich mal kurz was der Code macht:
    Bei aktiviertem Javascript wird dem html-tag die class="js" vergeben.
    Bei Touchgeräten wird bei Beginn eines Touch-Events, also bei Bildschirmberührung im Bereich der Webseite, dem html-tag die class="touch" vergeben, ansonsten class="no-touch".
    Mithilfe der vergebenen Klassen kann man dann Verhalten und CSS steuern.

    Übrigens:
    Zwar habe ich oben das JS zitiert wie es im Code ist, die Backslashes vor den Single Quotes sind jedoch unnötig und auch unsinnig. Sie können und sollten also weggelassen werden:
    Code: Javascript  [Auswählen]
    with(document.documentElement){className += 'js'}
         if (('ontouchstart' in document.documentElement)) {document.documentElement.className += ' touch';} else {document.documentElement.className += ' no-touch';}

    Gruß,
    noRiddle

    sb_cbo-do

    • Fördermitglied
    • Beiträge: 464
    Hallo,

    ich möchte gerne noch den Bestand neben der Ampel oder dem Text stehen haben.
    Dabei sollte aber ab einem Bestand von 10 Stück nur "mehr als 10 Stück lieferbar" stehen.

    Gewünscht wäre folgendes neben der Ampel oder dem Text:

    Bestand 1-10 = Hier soll der aktuelle Bestand noch angezeigt werden
    Bestand >10 = Hier soll der Text "mehr als 10 Stück lieferbar" angezeigt werden.

    Ich habe schon etwas ausprobiert, aber ich finde nicht die Lösung. Ich hoffe jemand von euch kann mir helfen.

    MFG,

    Sven

    sb_cbo-do

    • Fördermitglied
    • Beiträge: 464
    Hallo,

    es würde auch erst einmal reichen, wenn der Bestand zusätzlich angezeigt wird.
    Ich bekomme es aber einfach nicht hin.

    Product Info

    Code: PHP  [Auswählen]
    {if !isset($MODULE_product_options) && $MODULE_product_options == ''}<div class="pd_inforow">{traffic_light stock=$PRODUCTS_QUANTITY modul='info'}</div>{/if}

    Wie kann ich hier "{$PRODUCTS_QUANTITY}" einfügen, damit es der Bestand auch mit der richtigen Farbe angezeigt wird?

    MFG,

    Sven

    sb_cbo-do

    • Fördermitglied
    • Beiträge: 464
    Hallo,

    ich habe das Modul Bootstrap 4 eingebaut und eigentlich funktioniert es auch fast wie gewünscht.
    Ich bekomme es aber nicht hin, dass die Ampel auch auf der Hauptseite unter "Top Artikel" und "Besteller" angezeigt wird.
    Hat jemand eine Idee, wo ich noch etwas eintragen muss, damit die Ampel auch auf der Hauptseite angezeigt wird?

    MFG,

    Sven

    Hngematte

    • Neu im Forum
    • Beiträge: 19
    Hallo,

    das gleiche Problem hatte ich auch - gelöst war es bei mir damit, dass auch in folgender Datei:

    shoproot/templates/bootstrap4/module/new_products_default.html

    Diese Ergänzung (wie bei den anderen "product_...." Dateien), ca. bei Zeile 45, hinzugefügt wird:

    Code: Text  [Auswählen]
    <br />{traffic_light stock=$box_data.PRODUCTS_QUANTITY modul='listing'}

    Gruß

    sb_cbo-do

    • Fördermitglied
    • Beiträge: 464
    Hallo Hngematte,

    das habe ich auch schon versucht aber es klappt nicht auf der Hauptseite, wo unter Top Artikel und Bestseller die Artikel angezeigt werden.

    Es sollte dann genau unter der Lieferzeit angezeigt werden.
    Hat jemand anderes noch eine andere Idee?

    MFG,

    Sven

    karsta.de

    • Experte
    • Beiträge: 3.082
    Hast du es mal versucht wie es in der Anleitung steht:
    {traffic_light stock=$module_data.PRODUCTS_QUANTITY modul='listing'}

    Fürs Produktlisting $module_data vor PRODUCTS_QUANTITY setzen.

    BG kgd

    awids

    • Experte
    • Beiträge: 3.790
    • Geschlecht:
    Für Bestseller kann ich dir schonmal sagen, dass dieses Modul nicht für die Anzeige innerhalb von Boxen konzipiert wurde. Unmöglich ist es zwar nicht, aber benötigt wahrscheinlich weitere Anpassungen.

    Und die Besondheit beim BS4-Template ist auch, dass hier - anders als gewohnt - nicht mit $module_data, sondern mit $box_data gearbeitet wird.

    Code: PHP  [Auswählen]
    {foreach name=aussen item=box_data from=$module_content}

    Meine Frage an Sven wäre daher, ob er den Unterschied im Zuge seiner Bemühungen auch realisiert hat? Ich würde dich also bitten, uns hier den Inhalt deiner new_products_default.html zu posten.

    sb_cbo-do

    • Fördermitglied
    • Beiträge: 464
    Hallo,

    nein das habe ich nicht bedacht mit $box_data, da fehlen mir dann doch die Programmierkenntnisse für.
    Sollte es aber wirklich mehr Arbeit benötigen, dann belasse ich es lieber dabei, weil es sonst ja richtig angezeigt wird.

    Wenn ich übrigens im Template das Anzeigen für Slide deaktiviere, dann erscheint kein Artikel unter  "Top-Artikel" oder "Bestsellers."

    Code: PHP  [Auswählen]
    {foreach name=aussen item=box_data from=$module_content}
    Wenn ich den Code so ändere, dann wird die Ampel auch nicht angezeigt.

    Hier ist der Code der "new_products_default.html"

    Code: PHP  [Auswählen]
    {config_load file="$language/lang_$language.conf" section="new_products"}
    {config_load file="$language/lang_$language.conf" section="index"}
    {config_load file="lang_`$language`.custom"}
    {config_load file="lang_`$language`.section" section="new_products"}
    {assign "dummy" ""}
    <div id="bs4_TopCarousel" class="new-products-default bs4-carousel">
    {if $smarty.const.BS4_TOP_PROD_IN_SLIDER != 'true'}
            <div class="h1 card p-2 bg-h">{if #BS4_heading_text_top# != ''}{#BS4_heading_text_top#}{else}{#heading_text#}{/if}</div>
              {include file="module/includes/product_listing_include.html"}
    {else}
            <div class="h1 card p-2 bg-h">{if #BS4_heading_text_top# != ''}{#BS4_heading_text_top#}{else}{#heading_text#}{/if}
                <span class="carousel-controls position-absolute invisible">
                            <a class="d-inline-block" href="#topCarousel" data-slide="prev">
                                    {$dummy|bs4button:'button_carousel1': 'aria-hidden="true"'}
                                    <span class="sr-only">{$smarty.const.IMAGE_BUTTON_BACK}</span>
                            </a>
                            <a class="d-inline-block" href="#topCarousel" data-slide="next">
                                    {$dummy|bs4button:'button_carousel2': 'aria-hidden="true"'}
                                    <span class="sr-only">{$smarty.const.IMAGE_BUTTON_CONTINUE}</span>
                            </a>
                </span>
            </div>
            <div id="topCarousel" class="row carousel slide{if $smarty.const.BS4_TOPCAROUSEL_FADE == 'true'} carousel-fade{/if} invisible">
                    <div class="carousel-inner mb-2">
                    {foreach name=aussen item=box_data from=$module_content}
                            <div class="cols card mb-1">
                                    <a class="card-body h-100 pb-2 text-center" href="{$box_data.PRODUCTS_LINK}">
                                    {if $smarty.const.BS4_FLAG_SPECIAL_SHOW == 'true' && $box_data.PRODUCTS_PRICE_ARRAY.0.PRODUCTS_PRICE_SAVE_PERCENT != ''}<div class="ribbon bg-danger text-white shadow-sm">{#BS4_special#}</div>
                                    {elseif $smarty.const.BS4_FLAG_TOP_SHOW == 'true' && $box_data.PRODUCTS_STARTPAGE == '1'}<div class="ribbon bg-primary text-white shadow-sm">{#BS4_top#}</div>
                                    {elseif $smarty.const.BS4_FLAG_NEW_SHOW == 'true' && $box_data.PRODUCTS_OLDNEW == '1'}<div class="ribbon bg-success text-white shadow-sm">{#BS4_new#}</div>{/if}
                                            <div class="lb_image mb-2">
                                                    {if $box_data.PRODUCTS_IMAGE != ''}
                                                    <img class="img-fluid" src="{$box_data.PRODUCTS_IMAGE}" alt="{$box_data.PRODUCTS_NAME|onlytext}" />
                                                    {else}
                                                    &nbsp;
                                                    {/if}
                                            </div>
                                            <h2 class="lb_title lead text-secondary mb-1">{$box_data.PRODUCTS_NAME}</h2>
                                    </a>
                                    <div class="card-body p-1 text-center">
                                            <div class="lb_buttons mb-2">{if $box_data.PRODUCTS_BUTTON_BUY_NOW || ($box_data.PRODUCTS_FSK18 != '0' && $smarty.const.SHOW_BUTTON_BUY_NOW != 'false')}{$box_data.PRODUCTS_BUTTON_BUY_NOW}&nbsp;&nbsp;{/if}{if $box_data.PRODUCTS_LINK_WISHLIST_NOW}<a href="{$box_data.PRODUCTS_LINK_WISHLIST_NOW}">{$dummy|bs4button:'button_wishlist_now'}</a>&nbsp;&nbsp;{/if}{$box_data.PRODUCTS_BUTTON_DETAILS}</div>
                                    </div>
                                    <div class="card-footer d-flex flex-column">
                                            <div class="mt-auto">
                                                    <div class="lb_shipping small">{if $box_data.PRODUCTS_SHIPPING_NAME}{#text_shippingtime_box#} {if $box_data.PRODUCTS_SHIPPING_IMAGE}<span class="lb_shipping_image"><img class="img-fluid" src="{$box_data.PRODUCTS_SHIPPING_IMAGE}" alt="{$box_data.PRODUCTS_SHIPPING_NAME|onlytext}" /></span>{/if}{$box_data.PRODUCTS_SHIPPING_NAME_LINK}{else}&nbsp;{/if}<br />{traffic_light stock=$box_data.PRODUCTS_QUANTITY modul='listing'}</div>
                                                    <div class="lb_price text-right mb-1">
                                                            {foreach name=inner item=price_data from=$box_data.PRODUCTS_PRICE_ARRAY}
                                                                    {include file="module/includes/price_box.html"}
                                                            {/foreach}
                                                            {if $box_data.PRODUCTS_PRICE_ARRAY.0.PRODUCTS_PRICE_FLAG != 'NotAllowed'}
                                                                    {if $box_data.PRODUCTS_VPE}<div class="lb_vpe text-secondary small">{$box_data.PRODUCTS_VPE}</div>{/if}
                                                            {/if}
                                                    </div>
                                                    {if $box_data.PRODUCTS_PRICE_ARRAY.0.PRODUCTS_PRICE_FLAG != 'NotAllowed'}
                                                            <div class="lb_tax text-right text-secondary small mb-1">{$box_data.PRODUCTS_TAX_INFO}{$box_data.PRODUCTS_SHIPPING_LINK}<br /></div>
                                                    {/if}
                                            </div>
                                    </div>
                            </div>
                    {/foreach}
                    </div>
            </div>
            <br class="clearfix" />
    {/if}
    </div>
     

    Gruß,

    Sven

    sb_cbo-do

    • Fördermitglied
    • Beiträge: 464
    Korrektur.

    Ich habe den Cache geleert und nun funktioniert es mit "item=box_data" statt "$module_data".

    Super und vielen dank für die schnelle Hilfe.

    Gruß,

    Sven

    Rocket3

    • Mitglied
    • Beiträge: 186
    • Geschlecht:
    Hallo,

    ich habe das Modul installiert, es läuft aber nur teilweise, d.h. auf der Startseite wird die Ampel richtig angezeigt, aber auf der Produkt-Listing Seite wird die Ampel nur bei Produkten die keine Attribute besitzen (Attribute nicht gesetzt sind), angezeigt.

    Kann mir jemand da weiterhelfen?

    Meine Version: v2.0.4.2 rev 11374, mit Boootstrap 4

    Gruss
    Mladen

    awids

    • Experte
    • Beiträge: 3.790
    • Geschlecht:
    Ich darf darum bitten, bei Problemmeldungen richtige und vollständige Angaben zu machen.

    Du schreibst Produkt-Listing und meinst Produkt-Detailseite. Also etwas völlig anderes und wir Helfer suchen uns dann an falscher Stelle einen Wolf und verschwenden Zeit, die wir eigentlich nicht haben.

    Nachdem ich irgendwann endlich drauf gekommen bin, dass du einen falschen Ort genannt hast, hab ich noch mehr Zeit dabei verloren, endlich ein Produkt zu finden, welches keine Attribute hat. Künftig daher bitte entsprechende Links mit angeben - und zwar einmal zu einem Produkt, wo es klappt und zusätzlich zu einem Produkt, wo es nicht klappt. (Auf diese Weise kommt man auch schnell dahinter, dass du dich bei deinen Angaben vertan hast und sucht im Listing gar nicht erst weiter.)

    Das von dir beschriebene "Problem" hat was mit diesem Teil der Anleitung zu tun:

    Code: PHP  [Auswählen]
       a) Produktdetailseite / Productinfo
       
           Öffnen Sie die folgenden Dateien:
           
           /templates/tpl_modified/module/product_info/product_info_tabs_v1.html
           /templates/tpl_modified/module/product_info/product_info_v1.html
           /templates/tpl_modified/module/product_info/product_info_x_accordion_v1.html
           
           Fügen Sie jeweils an gewünschter Stelle, z. B. NACH
           
                {if $PRODUCTS_MODEL != ''}<div class="pd_inforow"><strong>{#model#}</strong> {$PRODUCTS_MODEL}<meta itemprop="model" content="{$PRODUCTS_MODEL}" /></div>{/if}  
       
           folgendes ein:
           
                {if !isset($MODULE_product_options) && $MODULE_product_options == ''}<div class="pd_inforow">{traffic_light stock=$PRODUCTS_QUANTITY modul='info'}</div>{/if}

    Erklärung:

    Bei Verwendung der Lagerampel wird davon ausgegangen, dass die Optionstemplates product_options_selection.html und table_listing.html gewählt werden, da die Ampeln dann über diese Templates je Attribut angezeigt werden sollen.

    Bei Verwendung der Optionstemplates multi_options_1.html und product_options_dropdown.html ist diese Anzeige nicht möglich. Daher muss die Ampel in diesem Fall wieder direkt beim Artikel angezeigt werden - und das funktioniert mit folgender

    Lösung:

    Statt

    Code: PHP  [Auswählen]
    {if !isset($MODULE_product_options) && $MODULE_product_options == ''}<div class="pd_inforow">{traffic_light stock=$PRODUCTS_QUANTITY modul='info'}</div>{/if}

    fügst du in den product_info_*.html-Dateien nur diesen Teil ein:

    Code: PHP  [Auswählen]
    <div class="pd_inforow">{traffic_light stock=$PRODUCTS_QUANTITY modul='info'}</div>

    Dann wird die Ampel unabhängig von Attributen immer angezeigt.

    sb_cbo-do

    • Fördermitglied
    • Beiträge: 464
    Hallo awids,

    danke für die Info, jetzt ist bei uns auch die Ampel zu sehen, wenn Attribute bei einem Artikel hinterlegt sind.

    Gruß,

    Sven

    Rocket3

    • Mitglied
    • Beiträge: 186
    • Geschlecht:
    Hallo awids,

    als erstes möchte ich mich für deine Hilfe bedanken, es läuft jetzt alles.

    Sorry, dass ich dir durch meine wage Beschreibung des Problems unnötig Arbeit gemacht habe, ich war der Meinung alles beschrieben zu haben was nötig wäre.

    Ich werde mir dein Rat zwecks Beschreibung in Zukunft noch mehr zu Herzen nehmen, und werde versuchen es besser zu machen.
    Bitte nicht sauer sein.

    Gruss
    Mladen

    awids

    • Experte
    • Beiträge: 3.790
    • Geschlecht:
    Freut mich, wenn nun alles wie gewünscht läuft. Ebenso, dass sich auch noch andere an der Lösung erfreuen konnten.

    Achte beim nächsten Mal einfach darauf, die Dinge richtig zu benennen und hinterlass Links zu den Seiten, wo die Probleme auftreten - dann können wir dir auch schnell und zielführend helfen. Wäre ich sauer gewesen, hätte ich mir nicht die Mühe gemacht, überhaupt zu antworten.  :whistle:
    2 Antworten
    3556 Aufrufe
    06. August 2013, 08:31:32 von Hetfield
    2 Antworten
    2592 Aufrufe
    23. Oktober 2014, 09:40:07 von MHammer