Trade Republic - Provisionsfrei Aktien handeln
Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Frage zur listing_filter.php

    HaldOn

    • Schreiberling
    • Beiträge: 455
    Frage zur listing_filter.php
    am: 31. August 2018, 14:47:21
    Wenn ich in einer Kategorie nur Artikel eines Herstellers habe, ist die Filtermöglichkeit auch für nur einen Hersteller aktiv was aus meiner Sicht keinen Sinn macht.

    In diesem Fall sollte der Filter nicht aktiv/auswählbar sein, oder gibt es eine Grund den ich übersehe?

    (Shopssoftware v2.0.4.2 rev 11374 dated: 2018-07-23)

    Linkback: https://www.modified-shop.org/forum/index.php?topic=39455.0
    Modulshop - Eine große Auswahl an neuen und hilfreichen Modulen für die modified eCommerce Shopsoftware

    Timm

    • Fördermitglied
    • Beiträge: 6.319
    Re: Frage zur listing_filter.php
    Antwort #1 am: 31. August 2018, 14:54:09
    Vielleicht ist es aber auch gut, wenn der Kunde sieht, dass es in der Kategorie nur einen Hersteller gibt!? Wenn der Filter nicht da wäre, dann wäre er vielleicht verunsichert und muss jedes Produkt einzeln anklicken.

    Gruß Timm

    manne35

    • Fördermitglied
    • Beiträge: 591
    • Geschlecht:
    Re: Frage zur listing_filter.php
    Antwort #2 am: 02. September 2018, 15:08:21
    Ich schliesse mich Timm an.

    Schreinermeister

    • Fördermitglied
    • Beiträge: 425
    • Geschlecht:
    Re: Frage zur listing_filter.php
    Antwort #3 am: 02. September 2018, 18:28:23
    Hallo zusammen,

    ich hatte zum Filter auch ähnliche Überlegungen wie HoldOn.

    Wäre es nicht übersichtlicher das wenn nur noch eine Auswahlmöglichkeit bei einem Filterkriterium übrig ist diese dann gleich als "ausgewählt" dargestellt wird?  (In HoldOn's Fall der Hersteller)

    Gruß Chris

    Timm

    • Fördermitglied
    • Beiträge: 6.319
    Re: Frage zur listing_filter.php
    Antwort #4 am: 02. September 2018, 19:47:33
    Noch ein Grund könnte sein, dass man auch Artikel ohne Hersteller in der Kategorie zusätzlich hat. Dann könnte es auch sinnvoll sein den Filter zu haben. Aber nicht vorausgewählt, weil dann ja die Artikel ohne Hersteller nicht angezeigt werden.

    Gruß Timm

    HaldOn

    • Schreiberling
    • Beiträge: 455
    Re: Frage zur listing_filter.php
    Antwort #5 am: 12. Januar 2020, 18:49:56
    Ich würde gerne, wenn nur ein Hersteller in der Kategorie vorhanden ist, den Hersteller-Filter ausblenden.

    Hat jemand einen Tip, wie man das umsetzen kann?

    Tante Uschi

    • Fördermitglied
    • Beiträge: 279
    Re: Frage zur listing_filter.php
    Antwort #6 am: 12. Januar 2020, 19:11:37
    Jo mein Tipp auf die Schnelle, setz mal da an:

    Code: PHP  [Auswählen]
      {if count($FILTER_TAG) == 1}

    bzw:

    Code: PHP  [Auswählen]
    {if count($FILTER_TAG) < 1 && $FILTER_MANUFACTURER != ''}

    wie gesagt nur auf die Schnelle, muss halt der $FILTER_MANUFACTURER auf == 1 sein.

    HaldOn

    • Schreiberling
    • Beiträge: 455
    Re: Frage zur listing_filter.php
    Antwort #7 am: 12. Januar 2020, 20:28:35
    Danke,

    geht so aber nicht.

    Code: PHP  [Auswählen]
    {if count($FILTER_TAG) == 1}
    sowie
    Code: PHP  [Auswählen]
    {if count($FILTER_TAG) < 1 && $FILTER_MANUFACTURER != ''}

    zeigt den Filter immer, auch wenn nur ein Hersteller.

    Der "count" Befehl, denke ich, müsste auf den Hersteller angewedet werden.
    mit
    Code: PHP  [Auswählen]
    {if count($MANUFAKTURER) > 1}
    oder
    Code: PHP  [Auswählen]
    {if count($module_MANUFAKTURER) > 1}
    sowie
    Code: PHP  [Auswählen]
    {if count($module_data.MANUFACTURER)  > 1}

    spricht im listing_filter.html nicht an, steht wohl dort nicht zur Verfügung

    hpzeller

    • Experte
    • Beiträge: 4.130
    • Geschlecht:
    Re: Frage zur listing_filter.php
    Antwort #8 am: 12. Januar 2020, 21:30:46
    In der Datei includes\modules\listing_filter.php wird ab ca. Zeile 153 aus folgendem Code die Smarty Variable "FILTER_MANUFACTURER" zusammengebaut.

    Code: PHP  [Auswählen]
      if (xtc_db_num_rows($filterlist_query, true) > 0) {
        $manufacturer_dropdown = xtc_draw_form('filter', xtc_href_link(basename($PHP_SELF), xtc_get_all_get_params(array('page', 'show', 'cat'))), 'get');
        if (isset($_GET['manufacturers_id']) && $_GET['manufacturers_id'] > 0) {
          if (basename($PHP_SELF) != FILENAME_ADVANCED_SEARCH_RESULT) {
            $options = array (array ('id' => '', 'text' => TEXT_ALL_CATEGORIES));
            if (SEARCH_ENGINE_FRIENDLY_URLS != 'true') {
              $manufacturer_dropdown .= xtc_draw_hidden_field('manufacturers_id', (int)$_GET['manufacturers_id']).PHP_EOL;
            }
          } else {
            $manufacturer_dropdown .= xtc_draw_hidden_field('manufacturers_id', (int)$_GET['manufacturers_id']).PHP_EOL;
          }
        } else {
          $options = array (array ('id' => '', 'text' => TEXT_ALL_MANUFACTURERS));
        }
        if (isset($_GET['cPath']) && !empty($_GET['cPath']) && SEARCH_ENGINE_FRIENDLY_URLS != 'true') {
          $manufacturer_dropdown .= xtc_draw_hidden_field('cPath', preg_replace('/[^0-9_]/','',$_GET['cPath'])).PHP_EOL;
        }
        if (isset($_GET['categories_id']) && !empty($_GET['categories_id'])) {
          $manufacturer_dropdown .= xtc_draw_hidden_field('categories_id', (int)$_GET['categories_id']).PHP_EOL;
        }
        if (isset($_GET['inc_subcat']) && $_GET['inc_subcat'] == '1') {
          $manufacturer_dropdown .= xtc_draw_hidden_field('inc_subcat', '1').PHP_EOL;
        }
        if (isset($_GET['pfrom']) && !empty($_GET['pfrom'])) {
          $manufacturer_dropdown .= xtc_draw_hidden_field('pfrom', stripslashes($_GET['pfrom'])).PHP_EOL;
        }
        if (isset($_GET['pto']) && !empty($_GET['pto'])) {
          $manufacturer_dropdown .= xtc_draw_hidden_field('pto', stripslashes($_GET['pto'])).PHP_EOL;
        }
        if (isset($_GET['keywords']) && !empty($_GET['keywords'])) {
          $manufacturer_dropdown .= xtc_draw_hidden_field('keywords', $_GET['keywords']).PHP_EOL;
        }
        if (isset($_GET['filter']) && is_array($_GET['filter'])) {
          foreach ($_GET['filter'] as $key => $val) {
           $manufacturer_dropdown .= xtc_draw_hidden_field('filter['.$key.']', $val).PHP_EOL;
          }
        }
        while ($filterlist = xtc_db_fetch_array($filterlist_query, true)) {
          $options[] = array ('id' => $filterlist['id'], 'text' => $filterlist['name']);
        }
        $manufacturer_dropdown .= xtc_draw_pull_down_menu('filter_id', $options, isset($_GET['filter_id']) ? (int)$_GET['filter_id'] : '', 'onchange="this.form.submit()"').PHP_EOL;
        $manufacturer_dropdown .= '<noscript><input type="submit" value="'.SMALL_IMAGE_BUTTON_VIEW.'" id="filter_submit" /></noscript>'.PHP_EOL;
        $manufacturer_dropdown .= xtc_hide_session_id() .PHP_EOL;
        $manufacturer_dropdown .= '</form>'.PHP_EOL;

        $filter_smarty->assign('FILTER_MANUFACTURER', $manufacturer_dropdown);
      }

    So wie ich das sehe könnte man also, damit der Herstellerfilter nur angezeigt wird wenn mehr als ein Hersteller zur Auswahl steht, die 0 in der ersten Zeile des Codes durch 1 ersetzen. Diese  Änderung ist aber nicht updatesicher.
    Eine updatesicher Lösung könnte man allenfalls in JavaScript programmieren.

    Gruss
    Hanspeter

    HaldOn

    • Schreiberling
    • Beiträge: 455
    Re: Frage zur listing_filter.php
    Antwort #9 am: 12. Januar 2020, 22:00:33
    Hallo Hanspeter,
    vielen Dank für die Hilfe.

    Durch Änderung
    von
    Code: PHP  [Auswählen]
      if (xtc_db_num_rows($filterlist_query, true) > 0) {

    in
    Code: PHP  [Auswählen]
      if (xtc_db_num_rows($filterlist_query, true) > 1) {

    hat es geklappt.

    Updatesicher ist in der Datei bei mir wegen einer anderen Änderung sowiso nicht gegeben, also passt es erstmal.

    hpzeller

    • Experte
    • Beiträge: 4.130
    • Geschlecht:
    Re: Frage zur listing_filter.php
    Antwort #10 am: 12. Januar 2020, 22:34:43
    Wenn man es beim Herstellerfilter so haben möchte wie es Chris in Antwort #3 für alle Filter wünscht könnte man testweise im Code aus meiner Antwort #8  folgende Codezeile

    Code: PHP  [Auswählen]
    $options = array (array ('id' => '', 'text' => TEXT_ALL_CATEGORIES));

    mit dieser ersetzen.

    Code: PHP  [Auswählen]
    if (xtc_db_num_rows($filterlist_query, true) != 1) $options = array (array ('id' => '', 'text' => TEXT_ALL_CATEGORIES));

    Obige  Änderung ist aber nicht updatesicher.

    Gruss
    Hanspeter

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.707
    • Geschlecht:
    Re: Frage zur listing_filter.php
    Antwort #11 am: 13. Januar 2020, 18:08:02
    Es gibt einen ähnlichen Diskussionspunkt in Ticket #1671 in meinem letzten Kommentar dort.
    Ich werde da dran bleiben und bin, wie man aus der Argumentation im Ticket ersehen kann, der Meinung, daß an dem Code für die Listing-Filter ohnehin einiger Verbesserungsbedarf besteht.

    Gruß,
    noRiddle

    dannyjung

    • Mitglied
    • Beiträge: 107
    Re: Frage zur listing_filter.php
    Antwort #12 am: 15. Januar 2020, 10:56:03
    ich stimme dem Listing-Filter-Problem mit der "ausgeblendeten" Auswahl vollkommen zu !  :thx:

    Scubi

    • Mitglied
    • Beiträge: 220
    Re: Frage zur listing_filter.php
    Antwort #13 am: 17. Januar 2020, 06:53:14
    Ich hätte da auch noch einen Vorschlag zum Filter. In einigen Kategorien macht die Anzeige des Filters keinen Sinn, weil z.B. nur noch 2 Produkte vorhanden sind.
    Ich fände es gut, wenn ich im Admin auf der Kategorieseite anklicken könnte: Filter an oder aus.

    hpzeller

    • Experte
    • Beiträge: 4.130
    • Geschlecht:
    Re: Frage zur listing_filter.php
    Antwort #14 am: 18. Januar 2020, 15:29:14
    Bin wie Scubi eigentlich auch der Meinung, dass wenn eine Kategorie eine sehr übersehbare Anzahl Artikel beinhaltet es bei deren Auflistung im Shopfrotend keine Filter braucht. Ich habe hier mal dazu eine Lösungsidee zusammengebaut die ins Template eingebaut wird und bei allen Kategorien die nicht mehr als drei Artikel beinhalten greifen sollte.

    Wer es testen möchte: Einfach in der Datei templates/bootstrap4 oder tpl_modified_responsive/module/includes/product_listing_include.html ganz am Ende folgenden Code einfügen.

    Code: XML  [Auswählen]
    {if $smarty.foreach.aussen.total < 4 &&
       !$smarty.get.page &&
       empty($smarty.get.filter_id) &&
       empty($smarty.get.filter.1) &&
       empty($smarty.get.filter.2) &&
       empty($smarty.get.filter.3) &&
       empty($smarty.get.filter.4) &&
       empty($smarty.get.filter.5) &&
       empty($smarty.get.filter.6) &&
       empty($smarty.get.filter.7) &&
       empty($smarty.get.filter.8) &&
       empty($smarty.get.filter.9) &&
       (!$smarty.session.filter_set || $smarty.session.filter_set > 3)
    }
    <style>
    .tags_bar,#set,#sort,#filter {ldelim}
      display:none;
    {rdelim}
    </style>
    {/if}

    Gruss
    Hanspeter
    2 Antworten
    1684 Aufrufe
    17. Juli 2018, 07:03:40 von hpzeller
    2 Antworten
    2384 Aufrufe
    16. Juli 2013, 12:47:02 von piru
    10 Antworten
    4852 Aufrufe
    14. April 2017, 18:01:06 von Modulfux
    8 Antworten
    4740 Aufrufe
    11. November 2015, 13:40:18 von Bonsai
               
    anything