Neu Nach Merkmal filtern

CarstenKaestner

Neues Mitglied
6. März 2019
1
0
Hallo,

ich versuche gerade mir einen eigene Produktliste nach Merkmalen zu filtern. Leider stoße ich da doch auf einige Probleme. Ich rufe im Template die Funktion get_product_list wie folgt auf:

Code:
{get_product_list cAssign='oProduct_arr' cMerkmalFilter='1;' nLimit=20000}

Leider bekomme ich immer alle Artikel zurück. Des weiteren würde mich interessieren ob man immer nur nach den ID's filtern kann oder nicht auch nach dem Namen des Merkmals? Über Tips und Hinweise wäre ich sehr dankbar.

LG
Carsten
 

david

Administrator
Mitarbeiter
16. Juli 2010
2.310
170
Hey, wenn du alle Artikel mit einem bestimmten Merkmalwert anzeigen lassen möchtest, nutze dafür die Property kMerkmalwert (Primärschlüssel eines Merkmalwerts, siehe Datenbank tmerkmalwert.kMerkmalwert).
Eine Filterung nach lokalisierten Werten/Namen ist aktuell nicht vorgesehen.
 

Tomas

Sehr aktives Mitglied
8. Januar 2018
330
70
Lübeck
Hallo Carsten,

ich hab mir das mal angeschaut und komme zu exakt dem gleichen Ergebnis wie du.

Ich habe mir die get_product_list Funktion einmal genauer angeschaut und einen Bug(?) entdeckt und komme direkt auch mit einem Hotfix.

1. Logge dich per FTP auf deinen Server ein.
2. Wechsle in dein Child-Template.
3. Lege dort die Datei /php/functions.php an.
4. Füge in die functions.php folgenden Code ein:
Code:
<?php
include realpath(__DIR__ . '/../../Evo/php/functions.php');

$smarty->unregisterPlugin('function', 'get_product_list')
    ->registerPlugin('function', 'get_product_list', 'get_product_list_fixed');

/**
 * @param array     $params
 * @param JTLSmarty $smarty
 * @return array
 */
function get_product_list_fixed($params, &$smarty)
{
    $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;

    foreach ($cMerkmalFilter_arr as &$cMerkmalFilter) {
        $cMerkmalFilter = ltrim($cMerkmalFilter, 'mf');
    }

    $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);
    }

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

    if (isset($params['bReturn'])) {
        return $oArtikel_arr;
    }
}
5. Lösche den Inhalt deines templates_c Ordners. (Der Ordner deines Child-Themes sollte ausreichend sein)
6. Erfreue dich an der funktionierenden Liste :D



@david Es werden als Parameter die MerkmalWerte mit dem Präfix "mf" übergeben. Das scheint hier zu Problemen zu führen. Wenn man das Präfix entfernt funktioniert es wieder perfekt.
Kannst du das bestätigen?
Magst du das evtl. als Issue aufnehmen?


VG
Tomas
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Nach Update auf Shop 5.8 - Wo wird das Gewährleistungslabel angezeigt? Allgemeine Fragen zu JTL-Shop 2
Neu Bilder Slider fehlerhaft nach Update auf 5.8.0 JTL-Shop - Fehler und Bugs 7
Barzahlung wird nach dem Speichern beim Rechnungsdruck nicht angezeigt, in der Vorschau jedoch schon JTL-Wawi 2.0 0
Neu Nach Update von POS ist alles groß dargestellt Sunmi t2 Allgemeine Fragen zu JTL-POS 8
Neu JTL-POS 2.0.0.2 Absturz nach Tagesabschluss JTL-POS - Fehler und Bugs 5
Neu Drucker funktioniert nicht nach update auf 2.0.0.2 JTL-POS - Fehler und Bugs 4
Neu Shop Mailversand geht nach Passwortänderung nicht mehr JTL-Shop - Fehler und Bugs 2
Druckvorlagen nach Update und Unzufriedenheit JTL-Wawi 2.0 9
Neu Fehler nach Update auf Version 5.7.2 beim Bestellabschluß Betrieb / Pflege von JTL-Shop 7
Neu automatische PPWR Etiketten nach Auswahl einer Kartonage und nach dem Ausliefern Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 6
Ständiger Absturz bei Wawi 1.11.11 nach Artikelaktualisierung JTL-Wawi 1.11 1
Wichtig JTL-ShippingLabels 1.0: Support-Ende GLS/DPD und Migration von JTL-Start-Kunden nach dem 30. September News, Events und Umfragen 14
Neu Viele Opos nach Export per JTL2Datev im Datev User helfen Usern 5
Login nach Downgrade nicht möglich JTL-Wawi 1.11 1
Neu Amazonpay Fehler nach Anbindung von Datev - bitte helfen Schnittstellen Import / Export 0
Neu Neu angelegte Kategorien sind erst nach Anmeldung sichtbar Allgemeine Fragen zu JTL-Shop 1
Neu Shop und Worker synchronisieren nicht nach Wechsel zu Cloudflare Allgemeine Fragen zu JTL-Shop 0
In Diskussion Kundengruppe nach Umsatz (SQL in Workflow) JTL-Workflows - Ideen, Lob und Kritik 5
Neu Swissbit USB-TSE blinkt nach dem Herunterfahren dauerhaft. Einrichtung / Updates von JTL-POS 1
Amazon-Bestände werden nicht übertragen – Überverkäufe nach Reaktivierung aus Urlaubsmodus (Wawi 1.11.11) JTL-Wawi 1.11 1
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
Lizenzprobleme nach Update JTL-Wawi 1.8 6
Neu Versandart nach Volumengewicht und Lieferland Allgemeine Fragen zu JTL-Shop 2
Neu Consentmanager item youtube deaktiviert sich nach ShopUpdate Allgemeine Fragen zu JTL-Shop 2
Neu SUNMI V3 MIX – Touchscreen und USB-Maus frieren nach einigen Minuten ein JTL-POS - Fehler und Bugs 1
Neu 500er Fehler im Shop nach aktivierung des Nova Child Templates für JTL-Shop 3
Kundengruppenrabatte werden bei einzelnen Artikeln nicht übernommen – „Rabatte ignorieren“ springt nach Speichern zurück JTL-Wawi 2.0 2
nach Update von 5.3 auf 5.7 neue Position im Warenkorb "Gebühr" die auch in den Auftrag übernommen werden Einrichtung JTL-Shop5 2
Neu Wie übertragt ihr Kurzbeschreibungen nach Shopify? Shopify-Connector 5
Beantwortet Shop Abgleich nach Update auf 5.7.2 nicht mehr möglich JTL-Shop - Fehler und Bugs 4
Login Wawi nicht möglich nach Update auf 1.11.11 JTL-Wawi 1.11 1
Neu Nach Wawi Update Probleme mit Rechnungsdrucker JTL-POS - Fehler und Bugs 4
ändern von Servernamen nach Neuinstallation von SQL und Verbindung mit neuem Server in der Wawi JTL-Wawi 2.0 2
JTL APP - Fehlermeldung nach Update auf Wawi 1.11. JTL-Wawi App 6
Nach Wawi Update keine Fehlermeldung mehr sichtbar kaufland.de - Anbindung (SCX) 2
Nach Update auf 2.0.3 Keine Fehlermeldungen mehr sichtbar Otto.de - Anbindung (SCX) 3
Neu Update nach 5.7.1 hängt bei Mirgation Installation / Updates von JTL-Shop 4
JTL nach Update auf 2.0.3 im Bereich „Kunden“ extrem langsam JTL-Wawi 2.0 2
JTL-Wawi sucht falschen ShopType nach Gambio-Update JTL-Wawi 1.7 2
Nach update 1.8>1.11 Kein Mandant in JTL-Wawi gefunden JTL-Wawi 1.11 5
Neu Betrag auf der Rechnung nach Rechnungskorrektur User helfen Usern - Fragen zu JTL-Wawi 1
Fehler nach Update auf Version 1.11.11 und 2.0.4 JTL-Wawi 2.0 7
Neu DHL Versenden 4.0 - Versand nach USA - Parameter state must be between 1 and 20 characters long. JTL-ShippingLabels - Fehler und Bugs 1
Neu DHL Versenden 4.0 - Versand nach CH - Please enter a valid amount JTL-ShippingLabels - Fehler und Bugs 5
Neu OnFinds: KI-Suche für JTL-Shop mit fairer Abrechnung nach Artikelanzahl. 30 Tage kostenlos testen Plugins für JTL-Shop 11
Nach dem Update werden die Drucker nicht mehr erkannt JTL-Wawi 2.0 1
Neu Merkmal oder Attribut für Produktdetailseite und Strukturierte Daten Betrieb / Pflege von JTL-Shop 2
80.000 Artikel ohne Bewegung filtern JTL-Wawi 1.10 1

Ähnliche Themen