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 Problem nach Update auf Shop 5.6.1 - Impressum JTL-Shop - Fehler und Bugs 2
Neu Fehlermeldung nach der Umstellung von DHL Versenden 4.0 JTL-Track&Trace - Fehler und Bugs 0
Neu Refresh nach Abgleich User helfen Usern - Fragen zu JTL-Wawi 0
Neu Artikel letzte 10 Versanddaten, sortiert nach Datum mit Plattform Eigene Übersichten in der JTL-Wawi 4
Neu Stücklisten nach Artikelkopie nicht mehr direkt änderbar – Bug oder gewollte Änderung? JTL-Wawi - Fehler und Bugs 1
Neu Strukturierte Daten vom Typ "Produkt" werden nach Update auf JTL Shop 5.6.1 nur fehlerhaft erkannt JTL-Shop - Fehler und Bugs 3
Neu JTL POS - nach Gerätetausch - Standard-Datenbank hinterlegen Einrichtung / Updates von JTL-POS 1
Neu Pickliste nach Teillieferung automatisch löschen Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 0
Neu Was genau passiert nach dem zurücksetzen? WooCommerce-Connector 0
Neu DSGVO – Automatisierte Löschung von Kundendaten nach 10 Jahren (JTL-Wawi / JTL-Shop) User helfen Usern - Fragen zu JTL-Wawi 2
Neu nach Update nicht alle Rechnungen mehr an Amazon Amazon-Anbindung - Fehler und Bugs 0
Neu OPC friert beim speichern von Änderungen ein nach JTL-Shop Update von Version 5.1.5 auf 5.6.1 JTL-Shop - Fehler und Bugs 0
Neu Sortierung nach Produkt Kategorie Arbeitsabläufe in JTL-Wawi 0
Export Zahlungen Amazon marketplace bei Kombi OSS und FBA erfolgt nach JTL2DATEV unvollständig JTL-Wawi 1.9 0
Neu Nach Shopupdate http error 500 JTL-Shop - Fehler und Bugs 9
Neu Abfrage Pakete nach Gewicht, Menge und durchschnittliches Gewicht Eigene Übersichten in der JTL-Wawi 0
Serienmails aus dem Shop nach Kundenimport Einrichtung JTL-Shop5 0
Neu POS-Server startet nicht mehr nach WaWi-update auf Version 1.11.6.0 JTL-POS - Fehler und Bugs 1
Nach Update auf 1.11.6 werden die Preisänderung nicht mehr von der Wawi an Amazon übertragen JTL-Wawi 1.11 0
Bankverbindung in der xml ZugFerd ändern je nach Zahlungsart JTL-Wawi 1.11 5
Ein Schritt vor, drei zurück – warum gehen nach Updates immer wieder Grundfunktionen kaputt? JTL-Wawi 1.11 2
Artikel kaputt nach Inventur JTL-Wawi 1.7 0
Neu Couponfeld nach Eingabe eines coupons automatisch ausblenden lassen Allgemeine Fragen zu JTL-Shop 4
Neu Kunden nach Onlineshop aktiv filtern? User helfen Usern - Fragen zu JTL-Wawi 2
Neu Karussell gehen auf der Startseite nach Update auf 5.6.1 nicht mehr Betrieb / Pflege von JTL-Shop 8
Neu Übergabe von Pickliste nach Packtisch User helfen Usern - Fragen zu JTL-Wawi 7
Neu Variationsartikel nicht in den Warenkorb legbar – unterschiedliches Verhalten je nach Auswahlweg JTL-Shop - Fehler und Bugs 5
Neu Artikel nach Storno weiterhin reserviert User helfen Usern - Fragen zu JTL-Wawi 2
Artikel Gehen nicht aus In Aufträge raus nach Versand JTL-Wawi 1.11 1
Neu Wie wird die Seite "suche nach:" erzeugt? Allgemeine Fragen zu JTL-Shop 4
Datenbank lässt sich nach Serverumzug nicht wiederherstellen JTL-Wawi 1.11 1
Neu Problem: Sprachumschaltung auf der Startseite nicht möglich bzw. nach 404-Fallback inkonsistent (nicht eingeloggte Benutzer) Einrichtung von JTL-Shop4 3
Neu 503 Service Unavailable bei Payrexx Webhook nach Plugin-Update - wer hat das auch? Plugins für JTL-Shop 0
DHL-Leitcodierungsdaten nach Wawi-Update nicht mehr vorhanden JTL-Wawi 1.11 0
JTL-Wawi startet nach Neustart nicht / hängt auf neu eingerichtetem PC (Remote-Datenbank) JTL-Wawi 1.11 24
Neu Fehler bei der Anmeldung nach Update auf 1.11.5 Installation von JTL-Wawi 11
Steuer Einstellung bei Sonderpreis und nach OSS Landauswahl JTL-Wawi 1.10 0
JTL-Wawi App (1.11.x) – Lizenz angeblich belegt nach Löschen aller App-Registrierungen / kein Reset möglich JTL-Wawi App 3
Neu JTL-Wawi 1.11.4 – Vaterartikel lässt sich nach Entfernen eines Kindartikels nicht mehr speichern JTL-Wawi - Fehler und Bugs 3
Neu POS doppelte Artikel und Kategorien nach Update Einrichtung / Updates von JTL-POS 3

Ähnliche Themen