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
69
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 Ausliefern sortiert nach Gewicht User helfen Usern - Fragen zu JTL-Wawi 3
Neu Automatische Druckausgabe nach dem Tagesabschluss Allgemeine Fragen zu JTL-POS 0
Neu Automatische Öffnung der Kassenlade nach dem Tagesabschluss (Z-Bericht) verhindern Allgemeine Fragen zu JTL-POS 0
Neu Automatische Öffnung der Kassenlade nach dem Tagesabschluss (Z-Bericht) verhindern Allgemeine Fragen zu JTL-Shop 0
Neu Dringendes Problem: Bildabgleich nach Connector-Fix – "Parameter resourceUrl is empty" Fehler Shopify-Connector 4
Artikel Dialog öffnet nicht (F2) nach update auf 1.10.13 JTL-Wawi 1.10 0
Neu Worker macht Fehler nach Update. kein Abgleich möglich Betrieb / Pflege von JTL-Shop 1
Probleme mit Lagerbestandsübertragung bei Otto nach Artikelnummernänderung Otto.de - Anbindung (SCX) 0
Neu Fehlerhafter Abgleich nach Update auf Shop Version 5.5 Installation / Updates von JTL-Shop 4
Neu Nach Auftragsimport falsche Versandoption bei "Ausländern" JTL-Wawi - Fehler und Bugs 1
Neu Anmeldung an Datenbank nach Clientinstallation geht nicht ( Installation von JTL-Wawi 7
WAWI 1.10.12.0 startet nach Update auf einem Client nicht mehr JTL-Wawi 1.10 1
Neu Nach Größe sondieren im Jahr 2025 möglich? Allgemeine Fragen zu JTL-Shop 4
Neu JTL PayPal Checkout nach Updatefehler 2.0.0 doppelt vorhanden Plugins für JTL-Shop 3
Neu Bestand und Preisanbgleich Lister 1.0 nach 31.07.25 noch möglich Amazon-Lister - Ideen, Lob und Kritik 1
Neu Aufträge tauchen nicht in Versand auf. Nach Speichern ohne Änderung jedoch dann wieder User helfen Usern - Fragen zu JTL-Wawi 0
Nach Update: Shop Lizenz gültig aber mit anderen Kundenkonto verknüpft JTL-Wawi 1.10 1
Neu 500er Probleme nach Shop Update Betrieb / Pflege von JTL-Shop 4
Neu JTL-WMS Aufträge lassen sich nicht teilliefern, erst nach Neustart JTL-Wawi - Fehler und Bugs 2
Warnmeldung JTL-Shop Anbindung nach Update JTL-Wawi 1.10 5
Neu 5.5.2: OPC Akkordeon scrollt bei Wechsel der Gruppe ganz nach oben JTL-Shop - Fehler und Bugs 0
Neu Nach Update auf 5.5.2: Extrem lange Ladezeiten im Front- und Backend Installation / Updates von JTL-Shop 12
Wie kann man eine Vorkasse-Rechnung / Proforma Rechnung nach Bezahlung als Rechnung ausweisen? JTL-Wawi 1.9 11
Neu Dropdownliste Shop 5.5.1 öffnet sich nach oben Allgemeine Fragen zu JTL-Shop 7
Neu Auftragspriorität automatisch zuordnen nach voraussichtlichem Lieferdatum User helfen Usern - Fragen zu JTL-Wawi 1
JTL stürzt nach Update auf 1.10 ab JTL-Wawi 1.10 2
Neu Nach Update 5.5.0: Überall zu viele Nullen bei den Mengenangaben (1 wird als 1,0000 angezeigt) JTL-Shop - Fehler und Bugs 8
Neu Ameise - Ebay Vorlage Erstellen - Chaos nach Update JTL-Ameise - Fehler und Bugs 0
Nach Update > Artikel > Lieferanten friert ein JTL-Wawi 1.10 3
Neu Nach updatet auf 5.5.1 - erscheinen über dem Header 3 links Zum Hauptinhalt springen Zur Suche springen Zum Menü springen Installation / Updates von JTL-Shop 19
Nach Update - JTL Artikel Fehlerhaft JTL-Wawi 1.10 5
Hersteller können nicht hinzugefügt gelöscht oder bearbeitet werden nach Update auf 1.10.11.0 JTL-Wawi 1.10 3
Fehlermeldung nach Auswahl eines Filters in der Kategorie- / Artikel-ansicht JTL-Wawi 1.10 0
Neu Ameise CMD nach Paketwechsel - muss man noch was beachten? JTL-Ameise - Fehler und Bugs 3
Keine Zahlungsart nach erstellung eines Auftrages JTL-Wawi 1.10 1
Neu Nach Update 5.5.0 viele Nullen bei den Mengenangaben in der Bestellbestätigung JTL-Shop - Fehler und Bugs 16
Neu neue Sendungsnummer (DHL) wird nach Storno des 1. Label nicht an Amazon übergeben JTL-ShippingLabels - Fehler und Bugs 9
Neu Weisse Seite nach Update von Version 5.4.1 auf 5.5.0 Installation / Updates von JTL-Shop 3
Workflow-Hilfe Zahlungserinnerung nach 3 Werktagen & Storno nach 7 Werktagen ohne Zahlung JTL-Wawi 1.10 7
Neu Versandart Kosten nach Gewicht staffeln? Allgemeine Fragen zu JTL-Shop 2
Nach Update 2 Einträge im Komplettabgleich vorhanden JTL-Wawi 1.10 1
Neu Steuerklasse tax_class wird beim Artikelsync nach WooCommerce nicht mehr gesetzt WooCommerce-Connector 0
Beantwortet Ausliefern nach Kassenzahlung nicht möglich JTL-Workflows - Fehler und Bugs 1
Neu Artikel werden nach JTL-Abgleich aus Google & YouTube Vertriebskanal entfernt – seit letztem Connector-Update Shopify-Connector 3
Neu Nach Update auf Shop 5.5.0 "HTTP ERROR 500" JTL-Shop - Fehler und Bugs 19
Neu Versandbedingungen nach Lagerbestand eBay-Anbindung - Fehler und Bugs 2
Neu Gutschein E-Mail versand direkt nach den ändern der Kundenklasse Allgemeine Fragen zu JTL-Shop 0
Neu Kein Login in den Admin nach Update Installation / Updates von JTL-Shop 7
Nach Update auf JTL 10.10.4 wird kein Versand mehr an Amazon übermittelt JTL-Wawi 1.10 4
Neu Bestellvorschläge - meine Wahrnehmung nach Update auf 1.10.10.4 JTL-Wawi - Fehler und Bugs 4

Ähnliche Themen