Ankündigung

Einklappen
Keine Ankündigung bisher.

Suchergebnisse == alle, wenn kein Suchergebnis gefunden wird

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Tim
    antwortet
    Den Buttons gibt es bereits und es gibt ausreichend Möglichkeiten das System nach seinen Wünschen zu manipulieren. Gern vermittle ich an eine Partner-Agentur, die dein Szenario nach deinen Wünschen umsetzt.

    ---
    Beispiel:

    Liste-Einstellung: Zeige alle Einträge bei leerem Filter (NICHT AKTIV). Damit bekommt man Zähler 0, wenn die Suche keinen Treffer generiert.

    Im mod_customcatalog Template kann man die Ausgabe vollständig manipulieren. Und quasi die Modul-Einstellung fliegend ändern, wenn der Suchfilter genutzt ist.

    Mein Such-Filter heisst in der url "suche".

    [CODE
    <?php
    $objCustomCatalog = $this->CustomCatalog;
    $count = $objCustomCatalog->getCount(); // aktueller Zähler unter Beruecksichtung aller Filter etc.
    $module = $objCustomCatalog->getModule(); // aktuelle Modul-Einstellung (ist quasi das Liste-Modul)
    $activeFilters = $objCustomCatalog->getActiveFilters(); // aktive Filter


    // keine aktiven Filter, stelle Modul-Einstellung um auf ALLE anzeigen
    if( count($activeFilters) < 1 )
    {
    $module->customcatalog_filter_showAll = true;
    }
    // Suche-Filter ist aktiv und hat KEIN Ergebnis: stelle Modul-Einstellung um auf KEINE anzeigen.
    if( \Contao\Input::get('suche') !== null && $count < 1 )
    {
    $module->customcatalog_filter_showAll = false;
    }
    // neue Modul-Einstellung uebernehmen
    $objCustomCatalog->set('objModule',$module);
    ?>

    <?= $objCustomCatalog->render(); ?>
    [/CODE]
    Angehängte Dateien
    Zuletzt geändert von Tim; 30.11.2023, 12:57.

    Einen Kommentar schreiben:


  • SpeGal
    antwortet
    Wenn wir Strict einschalten für das Suchfeld, kommen gar keine Ergebnisse mehr, egal was man eingibt oder nicht eingibt.

    Die Anleitungen in dem anderen Thread verstehe ich nicht. Das hört sich sehr kompliziert an. Kann man da nicht einfach einen Button implementieren, der das regelt?

    Einen Kommentar schreiben:


  • Tim
    antwortet
    Dafür gibt es zusätzlich die "Ist Strikt" Optionen in Filtern. Bei eindimensionalen Filtern erzeugt diese Option ein "unmögliches" Ergebnis und zwingt damit die Ausgabe "leer" zu laufen.
    In mehrdimensionen Filtern, wie der Textsuche, setzt die Option zusätzlich ein AND statt einem OR zwischen die durchsuchbaren Attribute. Der Filter wird damit "strenger / strikter".
    https://forum.premium-contao-themes....7865#post27865
    Zuletzt geändert von Tim; 30.11.2023, 08:20.

    Einen Kommentar schreiben:


  • SpeGal
    antwortet
    Das funktioniert bei uns nicht. Die Option "Zeige alle Einträge bei leerem Filter" führt dazu, dass immer alles angezeigt wird, wenn es keinen Treffer gab. Also zum einen, wenn gar keine Suche vorgenommen wurde (was ja korrekt ist), zum anderen aber auch, wenn das Suchfeld bspw. mit "LJFAJSDLFKJL" ausgefüllt wird, werden ebenfalls alle Einträge angezeigt (ohne Meldung "Leider nichts gefunden ..."). Die Suche funktioniert aber, d.h. wenn man ein Stichwort eingibt, das tatsächlich zu Treffern führt, werden auch nur diese angezeigt.

    D.h. momentan ist es so:
    - Ohne Sucheingabe wird alles angezeigt
    - Mit Sucheingabe wird Ergebnis gezeigt
    - Wenn kein Ergebnis findbar -> wird alles angezeigt

    Einen Kommentar schreiben:


  • Tim
    antwortet
    - Ohne Sucheingabe wird alles angezeigt
    - Mit Sucheingabe wird Ergebnis gezeigt
    - Wenn kein Ergebnis findbar -> "Kein Objekt gefunden"
    Das entspricht dem Bordmittel: Liste-Modul Einstellung "Zeige alle Ergebnisse bei leeren Filter" (aktiviert)

    Einen Kommentar schreiben:


  • SpeGal
    antwortet
    Ich kämpfe mit demselben Problem und würde mir wünschen, dass das standardmäßig in CC so umgesetzt wird:

    - Ohne Sucheingabe wird alles angezeigt
    - Mit Sucheingabe wird Ergebnis gezeigt
    - Wenn kein Ergebnis findbar -> "Kein Objekt gefunden"

    Das wäre für die meisten Nutzer am logischsten. Ein kompliziertes Workaround sollte es eher geben, wenn man davon abweichen möchte.
    Ode rkönnte man hier nicht auch einfach einen Knopf irgendwo hinmachen, über den man das steuern kann? -> "Bei nicht benutzter Suche alles anzeigen"

    Einen Kommentar schreiben:


  • Tim
    antwortet
    Zitat von rethus Beitrag anzeigen
    Ok. Das ist dann auch kompatibel zur Contao 4.9.13 LTS ?
    Wo kann ich das update auf 4.3.8 runterladen?
    Ja.

    Die Daten finden sich im Kundenbereich je Bestellung zum Download. Bitte die Update-Hinweise in den Update-Threads beachten.

    Einen Kommentar schreiben:


  • rethus
    antwortet
    Ok. Das ist dann auch kompatibel zur Contao 4.9.13 LTS ?
    Wo kann ich das update auf 4.3.8 runterladen?

    Einen Kommentar schreiben:


  • Tim
    antwortet
    Mein Template basiert auf aktuellen CC Versionen. Bitte updaten. Min. 4.3.8: https://forum.premium-contao-themes....2507#post22507

    Einen Kommentar schreiben:


  • rethus
    antwortet
    Ok, ich habe nun folgendes gemacht:

    1) initconfig.php
    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: screenshot_ 8_25_48.jpg
Ansichten: 268
Größe: 31,1 KB
ID: 22709

    Erzeugt dann leider auch ein unschönen eintrag mit diesem nicht existierenden Such-String beim Betreten der Seite im Eingabefeld.

    2) templates/layout/mod_customcatalog_show_all.html5 angelegt.
    textsuche-1 habe ich gegen "suche" ersetzt, da mein Filter den Alias "suche" hat.
    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: screenshot_ 8_27_58.jpg
Ansichten: 215
Größe: 73,7 KB
ID: 22710

    ​Wenn ich das Modul nun in Themes⇒Frontendmodule ⇒ Module-Template wähle, steigt die Page mit nem kompletten error aus.
    Die Logs sagen dazu:

    Code:
    [2021-06-15 08:08:54] request.CRITICAL: Uncaught PHP Exception Error: "Call to a member function render() on null" at /homepages/32/xxxxx/htdocs/contao/templates/layout/mod_customcatalog_show_all.html5 line 21 {"exception":"[object] (Error(code: 0): Call to a member function render() on null at /homepages/32/xxxx/htdocs/contao/templates/layout/mod_customcatalog_show_all.html5:21)"} []
    Was mache ich falsch?


    Einen Kommentar schreiben:


  • Tim
    antwortet
    So, das gewünschte Resultat ist gut über ein eigenes mod_customcatalog Template abbildbar. Im mod_customcatalog Template kann man die gesamte Ausgabe des CCs manipulieren.

    Liste-Einstellung: Zeige alle Einträge bei leeren Filter deaktiviert

    "Im Falle eines leeren Ergebnisses (total = 0) und Textfilter ist nicht gesetzt, erzeuge ein neues Liste-Modul, setze die Zeige alle Einträge Einstellung auf aktiv und rendere damit den CC"

    mod_customcatalog_show_all.html5

    (mein Textfilter heisst: textsuche-1 -> gegen den eigenen Textfilter ersetzen)

    Code:
     [COLOR=#333333][FONT=Monaco][SIZE=11px] [COLOR=#878787]<?php[/COLOR]
      [COLOR=#0045aa]use[/COLOR] PCT\CustomElements\Plugins\CustomCatalog\Core\CustomCatalogFactory;
      [COLOR=#878787]?[/COLOR][COLOR=#878787]>[/COLOR]
        [COLOR=#0045aa]<div [/COLOR][COLOR=#007ab7]class=[/COLOR][COLOR=#5d8f00]"[/COLOR][COLOR=#878787]<?=[/COLOR][COLOR=#8735a5]$this[/COLOR][COLOR=#000000]->class;[/COLOR][COLOR=#878787]?[/COLOR][COLOR=#878787]>[/COLOR][COLOR=#5d8f00] block"[/COLOR][COLOR=#878787]<?=[/COLOR][COLOR=#8735a5]$this[/COLOR][COLOR=#000000]->cssID;[/COLOR][COLOR=#878787]?[/COLOR][COLOR=#878787]><?php[/COLOR]
        [COLOR=#0045aa]if[/COLOR][COLOR=#000000]([/COLOR][COLOR=#8735a5]$this[/COLOR][COLOR=#000000]->style):[/COLOR][COLOR=#878787]?[/COLOR][COLOR=#878787]>[/COLOR][COLOR=#007ab7]style=[/COLOR][COLOR=#5d8f00]"[/COLOR][COLOR=#878787]<?=[/COLOR][COLOR=#8735a5]$this[/COLOR][COLOR=#000000]->style;[/COLOR][COLOR=#878787]?[/COLOR][COLOR=#878787]>[/COLOR][COLOR=#5d8f00]"[/COLOR][COLOR=#878787]<?php[/COLOR][COLOR=#0045aa]endif[/COLOR][COLOR=#000000];[/COLOR][COLOR=#878787]?[/COLOR][COLOR=#878787]>[/COLOR][COLOR=#0045aa]>[/COLOR]
      [COLOR=#878787]<?php[/COLOR] [COLOR=#0045aa]if[/COLOR] [COLOR=#000000]([/COLOR][COLOR=#8735a5]$this[/COLOR][COLOR=#000000]->headline)[/COLOR]: [COLOR=#878787]?[/COLOR][COLOR=#878787]>[/COLOR]
      <[COLOR=#878787]<?=[/COLOR] [COLOR=#8735a5]$this[/COLOR][COLOR=#000000]->hl[/COLOR]; [COLOR=#878787]?[/COLOR][COLOR=#878787]>[/COLOR]>[COLOR=#878787]<?=[/COLOR] [COLOR=#8735a5]$this[/COLOR][COLOR=#000000]->headline[/COLOR]; [COLOR=#878787]?[/COLOR][COLOR=#878787]>[/COLOR]</[COLOR=#878787]<?=[/COLOR] [COLOR=#8735a5]$this[/COLOR][COLOR=#000000]->hl[/COLOR]; [COLOR=#878787]?[/COLOR][COLOR=#878787]>[/COLOR]>
      [COLOR=#878787]<?php[/COLOR] [COLOR=#0045aa]endif[/COLOR]; [COLOR=#878787]?[/COLOR][COLOR=#878787]>[/COLOR]
        [COLOR=#878787]<?php[/COLOR]
      [COLOR=#8735a5]$objCC[/COLOR] [COLOR=#000000]=[/COLOR] [COLOR=#8735a5]$this[/COLOR][COLOR=#000000]->CustomCatalog[/COLOR];
      [COLOR=#197020]// wenn textsuche nicht gesetzt, alle Einträge anzeigen[/COLOR]
      [COLOR=#0045aa]if[/COLOR][COLOR=#000000]([/COLOR] [COLOR=#8735a5]$this[/COLOR][COLOR=#000000]->total[/COLOR] [COLOR=#000000]<[/COLOR] [COLOR=#007ab7]1[/COLOR] [COLOR=#000000]&&[/COLOR] Input[COLOR=#000000]::[/COLOR][COLOR=#3f6e7d]get[/COLOR]([COLOR=#dd2400]'textsuche-1'[/COLOR]) [COLOR=#000000]==[/COLOR] [COLOR=#dd2400]''[/COLOR] [COLOR=#000000])[/COLOR]
      [COLOR=#000000]{[/COLOR]
      [COLOR=#8735a5]$objModule[/COLOR] [COLOR=#000000]=[/COLOR] ModuleModel[COLOR=#000000]::[/COLOR][COLOR=#3f6e7d]findByPk[/COLOR]([COLOR=#8735a5]$this[/COLOR][COLOR=#000000]->id[/COLOR]);
      [COLOR=#8735a5]$objModule[/COLOR][COLOR=#000000]->customcatalog_filter_showAll[/COLOR] [COLOR=#000000]=[/COLOR] [COLOR=#007ab7]1[/COLOR];
      [COLOR=#8735a5]$objCC[/COLOR] [COLOR=#000000]=[/COLOR] CustomCatalogFactory[COLOR=#000000]::[/COLOR][COLOR=#3f6e7d]findByModule[/COLOR]([COLOR=#8735a5]$objModule[/COLOR]);
      [COLOR=#000000]}[/COLOR]
      [COLOR=#878787]?[/COLOR][COLOR=#878787]>[/COLOR]
        [COLOR=#878787]<?=[/COLOR] [COLOR=#8735a5]$objCC[/COLOR][COLOR=#000000]->[/COLOR][COLOR=#3f6e7d]render[/COLOR](); [COLOR=#878787]?[/COLOR][COLOR=#878787]>[/COLOR]
        [COLOR=#878787]<?php[/COLOR] [COLOR=#0045aa]if[/COLOR] [COLOR=#000000]([/COLOR][COLOR=#8735a5]$this[/COLOR][COLOR=#000000]->allowComments)[/COLOR]: [COLOR=#878787]?[/COLOR][COLOR=#878787]>[/COLOR]
      [COLOR=#0045aa]<div [/COLOR][COLOR=#007ab7]class=[/COLOR][COLOR=#5d8f00]"ce_comments block"[/COLOR][COLOR=#0045aa]>[/COLOR]
      <[COLOR=#878787]<?=[/COLOR] [COLOR=#8735a5]$this[/COLOR][COLOR=#000000]->hlc[/COLOR]; [COLOR=#878787]?[/COLOR][COLOR=#878787]>[/COLOR]>[COLOR=#878787]<?=[/COLOR] [COLOR=#8735a5]$this[/COLOR][COLOR=#000000]->addComment[/COLOR]; [COLOR=#878787]?[/COLOR][COLOR=#878787]>[/COLOR]</[COLOR=#878787]<?=[/COLOR] [COLOR=#8735a5]$this[/COLOR][COLOR=#000000]->hlc[/COLOR]; [COLOR=#878787]?[/COLOR][COLOR=#878787]>[/COLOR]>
      [COLOR=#878787]<?=[/COLOR] [COLOR=#400080]implode[/COLOR]([COLOR=#dd2400]''[/COLOR], [COLOR=#8735a5]$this[/COLOR][COLOR=#000000]->comments[/COLOR]); [COLOR=#878787]?[/COLOR][COLOR=#878787]>[/COLOR]
      [COLOR=#878787]<?=[/COLOR] [COLOR=#8735a5]$this[/COLOR][COLOR=#000000]->commentsPagination[/COLOR]; [COLOR=#878787]?[/COLOR][COLOR=#878787]>[/COLOR]
      [COLOR=#878787]<?php[/COLOR] [COLOR=#0045aa]include[/COLOR] [COLOR=#8735a5]$this[/COLOR][COLOR=#000000]->[/COLOR][COLOR=#3f6e7d]getTemplate[/COLOR]([COLOR=#dd2400]'mod_comment_form'[/COLOR], [COLOR=#dd2400]'html5'[/COLOR]); [COLOR=#878787]?[/COLOR][COLOR=#878787]>[/COLOR]
      [COLOR=#0045aa]</div>[/COLOR]
      [COLOR=#878787]<?php[/COLOR] [COLOR=#0045aa]endif[/COLOR]; [COLOR=#878787]?[/COLOR][COLOR=#878787]>[/COLOR]
        [COLOR=#878787]<?php[/COLOR] [COLOR=#0045aa]if[/COLOR][COLOR=#000000]([/COLOR][COLOR=#8735a5]$this[/COLOR][COLOR=#000000]->pagination)[/COLOR]:[COLOR=#878787]?[/COLOR][COLOR=#878787]>[/COLOR]
      [COLOR=#878787]<?=[/COLOR] [COLOR=#8735a5]$this[/COLOR][COLOR=#000000]->pagination[/COLOR]; [COLOR=#878787]?[/COLOR][COLOR=#878787]>[/COLOR]
      [COLOR=#878787]<?php[/COLOR] [COLOR=#0045aa]endif[/COLOR]; [COLOR=#878787]?[/COLOR][COLOR=#878787]>[/COLOR]
        [COLOR=#878787]<?php[/COLOR] [COLOR=#0045aa]if[/COLOR][COLOR=#000000]([/COLOR][COLOR=#8735a5]$this[/COLOR][COLOR=#000000]->back)[/COLOR]: [COLOR=#878787]?[/COLOR][COLOR=#878787]>[/COLOR]
      [COLOR=#197020]<!-- indexer::stop -->[/COLOR]
      [COLOR=#0045aa]<p [/COLOR][COLOR=#007ab7]class=[/COLOR][COLOR=#5d8f00]"back"[/COLOR][COLOR=#0045aa]><a [/COLOR][COLOR=#007ab7]href=[/COLOR][COLOR=#5d8f00]"[/COLOR][COLOR=#878787]<?=[/COLOR][COLOR=#8735a5]$this[/COLOR][COLOR=#000000]->referer;[/COLOR][COLOR=#878787]?[/COLOR][COLOR=#878787]>[/COLOR][COLOR=#5d8f00]"[/COLOR][COLOR=#007ab7]title=[/COLOR][COLOR=#5d8f00]"[/COLOR][COLOR=#878787]<?=[/COLOR][COLOR=#8735a5]$this[/COLOR][COLOR=#000000]->back;[/COLOR][COLOR=#878787]?[/COLOR][COLOR=#878787]>[/COLOR][COLOR=#5d8f00]"[/COLOR][COLOR=#0045aa]>[/COLOR][COLOR=#878787]<?=[/COLOR] [COLOR=#8735a5]$this[/COLOR][COLOR=#000000]->back[/COLOR]; [COLOR=#878787]?[/COLOR][COLOR=#878787]>[/COLOR][COLOR=#0045aa]</a></p>[/COLOR]
      [COLOR=#197020]<!-- indexer::continue -->[/COLOR]
      [COLOR=#878787]<?php[/COLOR] [COLOR=#0045aa]endif[/COLOR]; [COLOR=#878787]?[/COLOR][COLOR=#878787]>[/COLOR]
        [COLOR=#0045aa]</div>[/COLOR]
     [/SIZE][/FONT][/COLOR]
    Angehängte Dateien

    Einen Kommentar schreiben:


  • Tim
    antwortet
    Ein leerer Wert im Parameter ist gleich der Anfrage für die initconfig.

    ?suche= IST GLEICH Input::get('suche') == '' // true
    ---
    Erstmal solltest du die Suche so konfigurieren, das sie so arbeitet die du willst. Dann solltest du den Moment ohne Eingabe von einem Benutzer definieren. Den Code dafür hast du bereits erhalten.

    Cool wäre es, wenn es zu solchen spezifischen Sachen so eine Art wiki geben würde, das die Schritte einmal komplett (auch für Laien verständlich) erklärt.
    Du bekommst personalisierten Support für dein Projekt. Komplexe Systeme wie CC sind leider kein Laien-Werk. Wir müssen uns auch in das gewünschte Verhalten eindenken und ich muss Szenarien nachbauen.
    Zuletzt geändert von Tim; 11.06.2021, 07:42.

    Einen Kommentar schreiben:


  • rethus
    antwortet
    Also ich habe das nun noch einmal analysiert.
    Wenn ich auf die Listenseite komme, habe ich niemals ein "?suche=" als prameter an der URL.
    Somit würde die Abfrage in initconfig.php - beim ersten Aufruf der Liste auch dort niemals greifen.

    Wenn ich dann etwas in die Suche eingebe, erscheint in der url "?suche=meinSuchwort".

    Was ich "gefühlt" bräuchte, wäre eine Möglichkeit herauszufinden, ob das Suchwort ein valides Ergebnis liefert oder nicht. Wenn nicht, und wenn "suche=" nicht gesetzt ist, dann soll er alles ausgeben.

    Wenn suche= gesetzt ist, aber kein valides ergebnis kommt, soll er ne Meldung ausgeben, das nichts gefunden wurde.


    Wenn ich nun in meinem Suchfilter "Zeige alle einträge bei leerem Filter" DEAKTIVERE, passiert folgendes:

    1) Ich komme auf die Seite ( also kein "?suche=" in der url), und es wird mir angezeigt, das nichts gefunden wurde
    2) Ich kann in die Suche eingeben was ich möchte, er schreibt, das nichts gefunden wird.
    3) Wähle ich eines der weiteren beiden Filterkriterien, erst dann sucht er wirklich und gibt mir entweder ein ergebnis, oder die meldung, das dazu keine einträge vorhanden sind).

    Was also demnach momentan fehlt ist :
    1) Ein Suchergebnis, wenn nur das Suchefeld bestückt wurde
    2) Die Anzeige aller Datensätze, wenn man die Seite betritt und noch nichts gesucht hat.


    Ich habe im Forum nach dem Stichwort gesucht, habe aber keine für mich verwertbaren Infos über dieses Vorbelegen gefunden. Das was ich gefunden habe hat mir kein vollständiges Bild vermittelt in dem ich es nachvollziehen oder verstehen könnte, wie es nun angewendet wird.

    Cool wäre es, wenn es zu solchen spezifischen Sachen so eine Art wiki geben würde, das die Schritte einmal komplett (auch für Laien verständlich) erklärt.

    Einen Kommentar schreiben:


  • rethus
    antwortet
    Ich habe keine initconfig.php gefunden, muss ich die in system/config/ anlegen? Ich habe da derzeit die auf dem Bild abgebildete Struktur:

    Oder kann ich das ggf. auch in die localconfig.php rein packen?

    Das mit dem Parameter habe ich dann so wie auf dem 2. Bild gemacht. ist das korrekt?
    Angehängte Dateien

    Einen Kommentar schreiben:


  • Tim
    antwortet
    Das geht nicht mit einfach "Zusammen"-Klicken mit dem Freitext-Filter nicht. Im Text-Filter wird die Suche nach dem Wert über die Felder strikt (wie du schon bemerkt hast). Unterschied quasi: Feld AND bzw. OR (nicht strikt)

    Bei anderen Filtern dient der "Ist strikt" Modus für genau dein Vorhaben. Er lässt das Gesamtergebnis "negativ" laufen. (keine Treffer)

    Den Text-Filter musst du austricken und einen "unmöglichen" Wert übergeben, wenn der Filter inaktiv ist, quasi nicht real benutzt wurde (Parameter in der Url gesetzt).
    Stichwort: Filter vorbelegen (hier im Forum)

    "meinTextFilter" mit deinem Filter-Namen / Paramter ersetzen

    initconfig.php

    // falls Text-Filter leer, setze unmöglichen Wert
    Code:
    if( Input::get('meinTextFilter') == '')
    {
    Input::setGet('meinTextFilter','michGibtEsGarantiertNicht');
    }
    Zuletzt geändert von Tim; 10.06.2021, 12:10.

    Einen Kommentar schreiben:

Lädt...
X