In Bearbeitung [SHOP-1356] Top-Artikel per get_product_list ausspielen

RCE

Aktives Mitglied
31. Januar 2018
99
7
Hallo,
ich möchte gerne eine bestimmte Anzahl von Top-Artikeln auf einer bestimmten Seite anzeigen.

Code:
{get_product_list cTopArtikel=Y nLimit=10000 cAssign="myProducts"}

funktioniert nicht, ich habe das
Code:
$cTopArtikel    = (isset($params['cTopArtikel']))
        ? (int)$params['cTopArtikel']
        : null;
in meine functions.php eingetragen.

Mit Conditions geht es auch nicht, entweder können nur alle Top-Produkte angezeigt werden oder der Iterationswert ist zu niederig um genügend Top-Produkte im Array zu finden.
Code:
{if $oCustomArtikel->cTopArtikel == "Y"}
 

  {if $oCustomArtikel@iteration <= 8}

Wie kann ich also schon beim erstellen der Produktliste nach Top-Artikeln filtern?

Vielen Dank
 

RCE

Aktives Mitglied
31. Januar 2018
99
7
Habe gerade herausgefunden, dass Top-Artikel das Suchspecial Nr. 4 sind (kSuchspecial=4), wenn das so stimmt, könnt Ihr den Beitrag löschen.
 

RCE

Aktives Mitglied
31. Januar 2018
99
7
Ich habe das Ganze jetzt hinbekommen, allerdings ist es in einigen Browsern (IE und Mozilla) so, dass man keine Artikelsortierung vornehmen kann. Bei "nSortierung" kann jeder beliebige Wert stehen, trotzdem ändert sich an der Sortierung nichts.
 

david

Administrator
Mitarbeiter
16. Juli 2010
2.310
170
Hi, die Abhängigkeit zu einem Browser kann ich mir grad nicht wirklich erklären.
Magst dein aktuelles Snippet nochmal posten, damit man das Problem vielleicht nachstellen kann?
 

RCE

Aktives Mitglied
31. Januar 2018
99
7
Das finde ich auch komisch, das sollte ja serverseitig und nicht beim Client sortiert werden.

PHP:
<div class="row">

{assign var=rdmSort value=1|mt_rand:10}

<span class="h-line"><span>Kunden-Lieblinge</span><span class="hidden">{$rdmSort}</span></span>

{get_product_list nSortierung=$rdmSort kSuchspecial=4 nLimit=8 cAssign="myProducts"}

{if $myProducts}

  {foreach name=custom from=$myProducts item=oCustomArtikel}
{assign var=rdmBild value=0|mt_rand:1}

<div class="col-xs-6 col-sm-3">
    <div class="hover-off"></div>
        <a class="image-wrapper" href="{$oCustomArtikel->cURL}">
                    {if isset($oCustomArtikel->Bilder[$rdmBild]->cAltAttribut)}
                        {assign var="alt" value=$oCustomArtikel->Bilder[$rdmBild]->cAltAttribut|strip_tags|truncate:60|escape:"html"}
                    {else}
                        {assign var="alt" value=$oCustomArtikel->cName}
                    {/if}

                    {include file="snippets/image.tpl" src=$oCustomArtikel->Bilder[$rdmBild]->cPfadNormal alt=$alt tplscope=$tplscope}

                    {if isset($Artikel->oSuchspecialBild)}
                        <img class="overlay-img visible-lg" src="{$oCustomArtikel->Bilder[$rdmBild]->cPfadNormal}" alt="{$oCustomArtikel->cName}">
                    {/if}
                </a>
       <div class="start-article-text"><p>{$oCustomArtikel->cMerkmalAssoc_arr.Artikelgruppen}</p> <p><span>ab</span><span class="price"> {$oCustomArtikel->Preise->cVKLocalized[0]}</span></p></div>

     
     
     
     

<div class="hover-on flex-container flex-c flex-justify v-align"> <a class="btn btn-primary" href="{$oCustomArtikel->cURL}">Zum Produkt</a></div></div>


  {/foreach}

{/if}

</div>

Ergänzung: Es wird auch nicht anders sortiert, wenn man statt der Variable "$rdmSort" irgendeine Zahl direkt einfügt. Desweiteren geht das jetzt auch nicht mehr unter Chrome.
 
Zuletzt bearbeitet:

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
8.628
2.685
Berlin
Firma
css-umsetzung
Hi, die Abhängigkeit zu einem Browser kann ich mir grad nicht wirklich erklären.
Magst dein aktuelles Snippet nochmal posten, damit man das Problem vielleicht nachstellen kann?

Ihr habt etwas geändert wie es scheint, da ich auch mit dieser Funktion arbeite und in meinem Plugin CSS Kategorie PLUS auf das gleiche Problem gestoßen bin.

Ich muss bevor ich diese Funktion nutze extra $_SESSION['Usersortierung'] auf 100 setzen und nach dem ich die Funktion verwendet habe den originalen Wert wiederherstellen, bzw. die Variable überhaupt zur Verfügung stellen.

Code:
                        if(!isset($_SESSION['Usersortierung'])) {
                            $_SESSION['Usersortierung'] = 100;
                        }

                        $Usersortierung = $_SESSION['Usersortierung'];
                        $_SESSION['Usersortierung'] = 100;
                        $obj->Artikel = $this->get_product_list ( $params, $smarty );
                        $_SESSION['Usersortierung'] = $Usersortierung;

Es fällt auf, wenn ich auf der Startseite diese Funktion verwende und ein neuer User kommt, vermutlich weil dieser Session Eintrag dann noch nicht vorhanden ist und erst bei einem Listing erstellt wird.
Was jetzt noch ein Problem ist, dass es nicht möglich ist nach Bestsellern zu sortieren, das weiß ich aber erst seit heute und muss schauen warum das neuerdings auch nicht mehr geht.
 
  • Gefällt mir
Reaktionen: Horus Sirius

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
8.628
2.685
Berlin
Firma
css-umsetzung
Das von mir geschriebene gehört zu meinem Plugin, das kannst du so nicht einfach übernehmen, das war nur zum veranschaulichen was ich machen muss damit die Sortierung wieder geht.

In deinem Fall wäre das in der functions.php aber ich bin eigentlich dagegen das man in der originalen functions.php arbeitet, daher wäre es besser eine im Child Template zu haben, hast du ein Child Template?

anstelle von {get_product_list nSortierung=$rdmSort kSuchspecial=4 nLimit=8 cAssign="myProducts"}
verwendest du dann {get_myproduct_list nSortierung=$rdmSort kSuchspecial=4 nLimit=8 cAssign="myProducts"}

So würde das in deiner functions.php im Child Template aussehen müssen:
Code:
<?php
include_once $smarty->get_template_vars('parent_template_path').'php/functions.php';
$smarty->registerPlugin('function', 'get_myproduct_list', 'get_myproduct_list');

/**
 * @param array     $params
 * @param JTLSmarty $smarty
 * @return array
 */
function get_myproduct_list($params, &$smarty)
{
    
    if(!isset($_SESSION['Usersortierung'])) {
        $_SESSION['Usersortierung'] = 100;
    }

    $Usersortierung = $_SESSION['Usersortierung'];
    $_SESSION['Usersortierung'] = 100;

  
    $nLimit             = isset($params['nLimit'])
        ? (int)$params['nLimit']
        : 10;
    $nSortierung        = isset($params['nSortierung'])
        ? (int)$params['nSortierung']
        : 0;
    $cAssign            = (isset($params['cAssign']) && strlen($params['cAssign']) > 0)
        ? $params['cAssign']
        : 'oCustomArtikel_arr';
    $cMerkmalFilter_arr = isset($params['cMerkmalFilter'])
        ? setzeMerkmalFilter(explode(';', $params['cMerkmalFilter']))
        : null;
    $cSuchFilter_arr    = isset($params['cSuchFilter'])
        ? setzeSuchFilter(explode(';', $params['cSuchFilter']))
        : null;
    $cTagFilter_arr     = isset($params['cTagFilter'])
        ? setzeTagFilter(explode(';', $params['cTagFilter']))
        : null;
    $cParameter_arr     = [
        'kKategorie'             => isset($params['kKategorie']) ? $params['kKategorie'] : null,
        'kHersteller'            => isset($params['kHersteller']) ? $params['kHersteller'] : null,
        'kArtikel'               => isset($params['kArtikel']) ? $params['kArtikel'] : null,
        'kVariKindArtikel'       => isset($params['kVariKindArtikel']) ? $params['kVariKindArtikel'] : null,
        'kSeite'                 => isset($params['kSeite']) ? $params['kSeite'] : null,
        'kSuchanfrage'           => isset($params['kSuchanfrage']) ? $params['kSuchanfrage'] : null,
        'kMerkmalWert'           => isset($params['kMerkmalWert']) ? $params['kMerkmalWert'] : null,
        'kTag'                   => isset($params['kTag']) ? $params['kTag'] : null,
        'kSuchspecial'           => isset($params['kSuchspecial']) ? $params['kSuchspecial'] : null,
        'kKategorieFilter'       => isset($params['kKategorieFilter']) ? $params['kKategorieFilter'] : null,
        'kHerstellerFilter'      => isset($params['kHerstellerFilter']) ? $params['kHerstellerFilter'] : null,
        'nBewertungSterneFilter' => isset($params['nBewertungSterneFilter']) ? $params['nBewertungSterneFilter'] : null,
        'cPreisspannenFilter'    => isset($params['cPreisspannenFilter']) ? $params['cPreisspannenFilter'] : null,
        'kSuchspecialFilter'     => isset($params['kSuchspecialFilter']) ? $params['kSuchspecialFilter'] : null,
        'nSortierung'            => $nSortierung,
        'MerkmalFilter_arr'      => $cMerkmalFilter_arr,
        'TagFilter_arr'          => $cTagFilter_arr,
        'SuchFilter_arr'         => $cSuchFilter_arr,
        'nArtikelProSeite'       => isset($params['nArtikelProSeite']) ? $params['nArtikelProSeite'] : null,
        'cSuche'                 => isset($params['cSuche']) ? $params['cSuche'] : null,
        'seite'                  => isset($params['seite']) ? $params['seite'] : null
    ];
    if ($cParameter_arr['kArtikel'] !== null) {
        $oArtikel_arr = [];
        if (!is_array($cParameter_arr['kArtikel'])) {
            $cParameter_arr['kArtikel'] = [$cParameter_arr['kArtikel']];
        }
        foreach ($cParameter_arr['kArtikel'] as $kArtikel) {
            $article = new Artikel();
            $article->fuelleArtikel($kArtikel, Artikel::getDefaultOptions());
            $oArtikel_arr[] = $article;
        }
    } else {
        // Filter
        $NaviFilter = Shop::buildNaviFilter($cParameter_arr);
        if (isset($NaviFilter->Suche->cSuche) && strlen($NaviFilter->Suche->cSuche) > 0) {
            $NaviFilter->Suche->cSuche     = StringHandler::filterXSS($NaviFilter->Suche->cSuche, 1);
            $NaviFilter->Suche->kSuchCache = bearbeiteSuchCache($NaviFilter);
        }
        // Artikelattribut
        if (isset($cParameter_arr['cArtAttrib']) && strlen($cParameter_arr['cArtAttrib']) > 0) {
            $NaviFilter->ArtikelAttributFilter->cArtAttrib = $cParameter_arr['cArtAttrib'];
        }
        //Filter SQLs Objekte
        $FilterSQL = bauFilterSQL($NaviFilter);
        // Artikelliste
        $oArtikel_arr = gibArtikelKeys($FilterSQL, $nLimit, $NaviFilter, true, null);
    }
    $_SESSION['Usersortierung'] = $Usersortierung;

    $smarty->assign($cAssign, $oArtikel_arr);


    if (isset($params['bReturn'])) {
        return $oArtikel_arr;
    }
}
}

Das wäre jetzt aber nur ein workaround um den derzeitigen Fehler zu beheben
 
  • Gefällt mir
Reaktionen: RCE

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
8.628
2.685
Berlin
Firma
css-umsetzung
Sehr gut, Danke für die Info.
Ist nur noch die Frage warum man nicht mehr nach Bestseller sortieren kann, da bin ich noch nicht dazu gekommen, das zu prüfen.
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Linktexte für Erstbesucher/Crawler in Standardsprache – Ursache + Fix (SHOP-6552) JTL-Shop - Fehler und Bugs 0
Neu Nach Update auf Shop 5.8 - Wo wird das Gewährleistungslabel angezeigt? Allgemeine Fragen zu JTL-Shop 2
Neu Sicherheitspatch Shop 5.7.2 > 5.7.3 funktioniert nicht Allgemeine Fragen zu JTL-Shop 13
Neu JTL-Shop 5.8 - Aktuell 5.8.0 Releaseforum 0
HTML in Artikelbeschreibung , verschiebt dann im Shop die Ansicht? JTL-Wawi 1.11 1
Neu Störung Hosting Shop? JTL-Shop - Fehler und Bugs 0
Neu Email Versand vom Shop Allgemeine Fragen zu JTL-Shop 1
Update 5.3 auf 5.7.2 Shop funktioniert nicht mehr Upgrade JTL-Shop4 auf JTL-Shop5 5
Neu Plugin: Infinite Scroll / „Mehr laden“ für JTL-Shop 5 – einmalige Lizenz, kein Abo Plugins für JTL-Shop 0
Neu JTL-Shop 5.5 – „Rechnung nicht beilegen“ per Workflow anhand der Auftragsposition erkennen User helfen Usern - Fragen zu JTL-Wawi 1
Neu Welche JTL-Shop Plugins oder Funktionen fehlen euch noch? – menuBuilder aktuell in Entwicklung Plugins für JTL-Shop 6
Neu Gutscheinartikel nur noch im Shop in der Datenbank Betrieb / Pflege von JTL-Shop 0
Neu Shop Mailversand geht nach Passwortänderung nicht mehr JTL-Shop - Fehler und Bugs 2
Neu Neuer JTL-Shop lässt sich nicht öffnen Installation / Updates von JTL-Shop 2
Neu 💚 Plugin: DZM Bonus Plus - das Treueprogramm für deinen JTL-Shop Plugins für JTL-Shop 12
Neu Shop rechnet Sa+So bei Lieferzeit mit ein Betrieb / Pflege von JTL-Shop 0
Neu Auslesen aus Shop ob als Gast bestellt wurde oder ein Kundenkonto besteht. Allgemeine Fragen zu JTL-Shop 7
Neu Stripe plugin mit JTL SHOP Error 500 Plugins für JTL-Shop 2
Neu 💚 Plugin: DZM Agentic Plus - dein Shop wird für KI-Agenten lesbar und abfragbar Plugins für JTL-Shop 0
Neu JTL-Shop 5.7.2: Zahlungsbetrag weicht vom Auftragswert ab JTL-Shop - Fehler und Bugs 4
Neu JTL-Shop 5.7.2: Unterschiedliche Standardsprachen in tsprache – widersprüchliche Canonical- und Hreflang-Ausgabe der Startseite Allgemeine Fragen zu JTL-Shop 4
Neu Versandetikett bei Aufträgen aus dem JTL Shop Arbeitsabläufe in JTL-Wawi 0
Neu Preise im Shop mit 4 Stellen hintern dem Komma Allgemeine Fragen zu JTL-Shop 5
Neu JTL Shop 5.7.2 NOVA - Akkordeon Überschriften herabstufen auf H3 Templates für JTL-Shop 3
Neu Shop und Worker synchronisieren nicht nach Wechsel zu Cloudflare Allgemeine Fragen zu JTL-Shop 0
Neu 🚨 Sicherheitswarnung für JTL-Shop-Betreiber: Manipulation des Checkout-Prozesses durch externes JavaScript (Magecart- / Payment-Skimmer) Betrieb / Pflege von JTL-Shop 11
Neu JTL-Shop Konfigurator - die Ausgewählten Konfigurator gruppen werden im Artikel nicht vollständig angezeigt User helfen Usern - Fragen zu JTL-Wawi 2
Neu JTL-Shop 5 Backup Professional Plugin Plugins für JTL-Shop 0
Neu Vorgehen nach Sicherheitslücke im Shop - Wechsel Blowfish-Key Betrieb / Pflege von JTL-Shop 6
Neu Shop 5.7.2. nach Update lahm und CPU Last geht hoch Installation / Updates von JTL-Shop 1
Neu Probleme beim Shop Update auf 5.7.2 Installation / Updates von JTL-Shop 4
Neu Plugin trotz Hinweis Kompatibel mit JTL-Shop bis 5.6.* auch unter 5.7.2 nutzen Plugins für JTL-Shop 2
Neu Wichtiger Sicherheitshinweis – jetzt Shop prüfen! Allgemeine Fragen zu JTL-Shop 0
Neu Aktuelle JTL Shop Sicherheitslücke - automatischer Patch im JTL Hosting ? Allgemeine Fragen zu JTL-Shop 15
Neu Suche 10–15 JTL-Shops für kostenlose JTL-Shop-Analyse (verschiedene Branchen) Dienstleistung, Jobs und Ähnliches 0
Neu JTL-Shop 5.7.2 Picture-Tag in mobilen Ansicht lädt beide Bilder JTL-Shop - Fehler und Bugs 0
Seit dem Update meines JTL-Shops auf Version 5.7.1 funktioniert die Verbindung zwischen JTL-Wawi 2.0.4.0 und dem Shop nicht mehr. JTL-Wawi 2.0 6
Neu Shop 5.7.2 - JTL PayPal Checkout legt alles lahm JTL-Shop - Fehler und Bugs 4
Neu IP Adresse einer Kontaktanfrage über den Shop herausfinden Allgemeine Fragen zu JTL-Shop 4
Neu Gibt es in der WaWi-Datenbank einen Zeitstempel, der anzeigt wann ein Kunde sich in einem bestimmten Shop registriert hat? User helfen Usern - Fragen zu JTL-Wawi 3
Beantwortet [Shop 5.7.2 / Wawi 2.0.5] GPSR-Daten werden am Artikel nicht angezeigt trotz korrekter Übertragung und installiertem Plugin Allgemeine Fragen zu JTL-Shop 1
Neu shop steht , brauche Hilfe Allgemeine Fragen zu JTL-Shop 6
Neu DSVGO konform 1000 Kunden in WaWi und Shop löschen! User helfen Usern - Fragen zu JTL-Wawi 4
Neu 500er Fehler im Shop nach aktivierung des Nova Child Templates für JTL-Shop 3
Neu JTL Shop Plugin - BD Automatisierter Widerruf (Von Händler für Händler - Schluss mit Mail-Chaos & Spam-Sorgen!) Plugins für JTL-Shop 0
Neu Rechte-Fehler im J10n Modul und Auswirkung auf base.mo.php in div. Plugins (Shop 5.7.1) JTL-Shop - Fehler und Bugs 0
Neu Welche JTL Shop Plugins oder kleinen Hilfstools würden euch im Alltag wirklich helfen? Plugins für JTL-Shop 0
Beantwortet Shop Abgleich nach Update auf 5.7.2 nicht mehr möglich JTL-Shop - Fehler und Bugs 4
Neu Shop zeigt keine Artikel mehr Fehler 500 Betrieb / Pflege von JTL-Shop 9
Neu Shop 5.7.1 und Downloadmodul Allgemeine Fragen zu JTL-Shop 1

Ähnliche Themen