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: Artikelanzahl/Kategorie in der Product_Listing anzeigen

    fritten_fahrer

    • Mitglied
    • Beiträge: 149
    Hallo zusammen,

    ich möchte in der Artikelauflistung "Product_Listing" die Anzahl der Artikel einblenden.
    Mir geht es aber nicht um die Anzahl der Artikel auf den einzelnen Seiten sondern die gesamten in der jeweiligen Kategorie.

    Danke und Gruß

    Linkback: https://www.modified-shop.org/forum/index.php?topic=32230.0

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    Re: Artikelanzahl/Kategorie in der Product_Listing anzeigen
    Antwort #1 am: 09. Februar 2015, 18:29:36
    Mal ins standardtemplate reingesehen?
    [ Für Gäste sind keine Dateianhänge sichtbar ]

    Da steht:
    {$NAVIGATION}

    in der product_listing.php finde ich das:
    Code: PHP  [Auswählen]
      $navigation = '
        <table border="0" width="100%" cellspacing="0" cellpadding="2">
          <tr>
            <td class="smallText">'
    .$listing_split->display_count(TEXT_DISPLAY_NUMBER_OF_PRODUCTS).'</td>
            <td class="smallText" align="right">'
    .TEXT_RESULT_PAGE.' '.$listing_split->display_links(MAX_DISPLAY_PAGE_LINKS, xtc_get_all_get_params(array ('page', 'info', 'x', 'y', 'keywords')).(isset($_GET['keywords'])?'&keywords='. urlencode($_GET['keywords']):'')).'</td>
          </tr>
        </table>'
    ;
     
    Die vierte Zeile ist die interessante...
    $listing_split->display_count() würde ich mir also an Deiner Stelle mal näher ansehen .... damit könnte man in Deinem Fall eventuell was anfangen.

    Das sieht dann so aus (includes/classes/split_page_results.php)
    Code: PHP  [Auswählen]
        // display number of total products found
        function display_count($text_output) {
          $to_num = ($this->number_of_rows_per_page * $this->current_page_number);
          if ($to_num > $this->number_of_rows) $to_num = $this->number_of_rows;

          $from_num = ($this->number_of_rows_per_page * ($this->current_page_number - 1));

          if ($to_num == 0) {
            $from_num = 0;
          } else {
            $from_num++;
          }

          return sprintf($text_output, $from_num, $to_num, $this->number_of_rows);
        }
     

    Aha am Ende der entscheidende Hinweis:
    Code: PHP  [Auswählen]
    $this->number_of_rows

    Da $this-> die Klasse splitPageResults darstellt .....

    in der includes/product_listing.php
    nach dem instanzieren eben dieser Klasse
    Code: PHP  [Auswählen]
    $listing_split = new splitPageResults($listing_sql, (isset($_GET['page']) ? (int)$_GET['page'] : 1), MAX_DISPLAY_SEARCH_RESULTS, 'p.products_id');
     
    das rein:
    Code: PHP  [Auswählen]
    $module_smarty->assign('VERLEIHNIX', $listing_split->number_of_rows);

    und jetzt im Template product_listing_v1.html irgendwo
    Code: PHP  [Auswählen]
    {VERLEIHNIX}
    Fertig.

    Godzilla

    • Schreiberling
    • Beiträge: 489
    Re: Artikelanzahl/Kategorie in der Product_Listing anzeigen
    Antwort #2 am: 09. Februar 2015, 18:43:12
    In der V1.6 steckt der gesuchte Wert in dem Tabellen-Gewurschtel $navigation (includes/modules/product_listing):

    Code: PHP  [Auswählen]
     
    $navigation = '
        <table border="0" width="100%" cellspacing="0" cellpadding="2">
          <tr>
            <td class="smallText">'
    .$listing_split->display_count(TEXT_DISPLAY_NUMBER_OF_PRODUCTS).'</td>
            <td class="smallText" align="right">'
    .TEXT_RESULT_PAGE.' '.$listing_split->display_links(MAX_DISPLAY_PAGE_LINKS, xtc_get_all_get_params(array ('page', 'info', 'x', 'y', 'keywords')).(isset($_GET['keywords'])?'&keywords='. urlencode($_GET['keywords']):'')).'</td>
          </tr>
        </table>'
    ;

    ...

    $module_smarty->assign('NAVIGATION', $navigation);
     

    Bei anderen Forks gibt es da seit mindestens einem halben Jahrzehnt eine Trennung von Code und Design und dort sieht das dann so aus:

    Code: PHP  [Auswählen]
    $module_smarty->assign('COUNT', $listing_split->display_count(TEXT_DISPLAY_NUMBER_OF_PRODUCTS));

    Vielleicht dient dir das als Orientierungshilfe.

    web0null

    • Experte
    • Beiträge: 1.998
    Re: Artikelanzahl/Kategorie in der Product_Listing anzeigen
    Antwort #3 am: 09. Februar 2015, 19:32:08
    Das von Bonsai ist schon der richtige Wert, ich würde es aber folgendermaßen einfügen.
    Damit es auch innerhalb der if ($listing_split->number_of_rows > 0) Abfrage ist.

    Suche in "includes/modules/product_listing.php":
    Code: PHP  [Auswählen]
    $module_smarty->assign('CATEGORIES_DESCRIPTION', $category['categories_description']);
     
    Ersetze:
    Code: PHP  [Auswählen]
    $module_smarty->assign('CATEGORIES_DESCRIPTION', $category['categories_description']);
    $module_smarty->assign('PRODUCTS_TO_CATEGORIES', $listing_split->number_of_rows);
     

    Im Template kannst du es dann verwenden mit:
    Code: XML  [Auswählen]
    {$PRODUCTS_TO_CATEGORIES}
     

    @Bonsai, ich leihe dir ein,
    $ für dein {VERLEIHNIX}, und ein,
    modules/ für dein includes/product_listing.php ;-)

    Gruß

    fritten_fahrer

    • Mitglied
    • Beiträge: 149
    Re: Artikelanzahl/Kategorie in der Product_Listing anzeigen
    Antwort #4 am: 09. Februar 2015, 21:46:31
    Vielen Dank an Euch!

    fritten_fahrer

    • Mitglied
    • Beiträge: 149
    Re: Artikelanzahl/Kategorie in der Product_Listing anzeigen
    Antwort #5 am: 09. Februar 2015, 22:12:14
    Stellt sich für mich nur noch die Frage wie ich das in die specials und new_products einbaue.

    Vielen Dank für Eure Unterstützung!  ;-)

    Godzilla

    • Schreiberling
    • Beiträge: 489
    Re: Artikelanzahl/Kategorie in der Product_Listing anzeigen
    Antwort #6 am: 09. Februar 2015, 23:20:50
    Stellt sich für mich nur noch die Frage wie ich das in die specials und new_products einbaue.

    specials.php (root)
    Code: PHP  [Auswählen]
    if (($specials_split->number_of_rows > 0)) {
    //BOF - Dokuman - 2009-06-05 - replace table with div
    /*
      $smarty->assign('NAVBAR', '
      <table border="0" width="100%" cellspacing="0" cellpadding="2">
                <tr>
                  <td class="smallText">'.$specials_split->display_count(TEXT_DISPLAY_NUMBER_OF_SPECIALS).'</td>
                  <td align="right" class="smallText">'.TEXT_RESULT_PAGE.' '.$specials_split->display_links(MAX_DISPLAY_PAGE_LINKS, xtc_get_all_get_params(array ('page', 'info', 'x', 'y'))).'</td>
                </tr>
              </table>
      ');
    */

      $smarty->assign('NAVBAR', '
      <div style="width:100%;font-size:smaller">
        <div style="float:left">'
    .$specials_split->display_count(TEXT_DISPLAY_NUMBER_OF_SPECIALS).'</div>
        <div style="float:right">'
    .TEXT_RESULT_PAGE.' '.$specials_split->display_links(MAX_DISPLAY_PAGE_LINKS, xtc_get_all_get_params(array ('page', 'info', 'x', 'y'))).'</div>
        <br style="clear:both" />
      </div>
      '
    );
    //EOF - Dokuman - 2009-06-05 - replace table with div
    }

    Hier versteckt sich das in diesem DIV-Konstrukt Names $navbar.
    Immerhin wurde hier ja schon im Jahr 2009 von Dokuman das alte Tabellen-Layout ersetzt.
    Keine Ahnung, warum das im product_listing nicht wenigstens auch so gemacht wurde und auf diesem Wege dann auch direkt vereinheitlicht oder gar wie bei anderen Forks ins Template ausgelagert wurde.

    Bei der Seite products_new.php sieht der Code so aus:
    Code: PHP  [Auswählen]
    //BOF - Hetfield - 2009-08-11 - replace table with div
            $smarty->assign('NAVIGATION_BAR', '
                       <div style="width:100%;font-size:smaller">
                              <div style="float:left">'
    .$products_new_split->display_count(TEXT_DISPLAY_NUMBER_OF_PRODUCTS_NEW).'</div>
                              <div style="float:right">'
    .TEXT_RESULT_PAGE.' '.$products_new_split->display_links(MAX_DISPLAY_PAGE_LINKS, xtc_get_all_get_params(array ('page', 'info', 'x', 'y'))).'</div>
                              <br style="clear:both" />
                       </div>              
                       '
    );
    //EOF - Hetfield - 2009-08-11 - replace table with div
     

    Hier heisst das nicht $navigation oder $navbar sondern diesmal $navigation_bar.  :lol1:
    Immerhin hat sich Hetfield im Jahr 2009 dem Tabellen-Layout etwas angenommen.

    fritten_fahrer

    • Mitglied
    • Beiträge: 149
    Re: Artikelanzahl/Kategorie in der Product_Listing anzeigen
    Antwort #7 am: 10. Februar 2015, 14:44:20
    @Godzilla: Vielen Dank für deine Hilfe!  :wohow:

    fritten_fahrer

    • Mitglied
    • Beiträge: 149
    Re: Artikelanzahl/Kategorie in der Product_Listing anzeigen
    Antwort #8 am: 10. Februar 2015, 21:54:50
    Bekomme es leider nicht hin. Das was Web0Null und Bonsai geschrieben haben, habe ich auch gleich verstanden. Nur hier komme ich nicht weiter.

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    Re: Artikelanzahl/Kategorie in der Product_Listing anzeigen
    Antwort #9 am: 11. Februar 2015, 10:00:55
    Code: PHP  [Auswählen]
    $module_smarty->assign('PRODUCTS_TO_CATEGORIES', $listing_split->number_of_rows);
    funktioniert auch hier. In beiden Fällen. Also was bekommst du nicht hin? Die Formatierung?

    fritten_fahrer

    • Mitglied
    • Beiträge: 149
    Re: Artikelanzahl/Kategorie in der Product_Listing anzeigen
    Antwort #10 am: 11. Februar 2015, 10:15:19
    Hallo Bonsai,
    an welcher Stelle kommt das rein?

    Danke und Gruß

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    Re: Artikelanzahl/Kategorie in der Product_Listing anzeigen
    Antwort #11 am: 11. Februar 2015, 11:24:57
    Sorry, bin erkältet, habe gerade quatsch erzählt und das jetzt aufgrund Deiner Frage bemerkt.

    In Beiden Dateien findest Du ein Konstrukt das schematisch so aussieht:
    Code: PHP  [Auswählen]
    $idefix = new splitPageResults(irgendwas,irgendwas_anderes);
    Das bedeutet instanziere die Klasse splitPageResults unter dem Namen $idefix

    Da dahinter kannst du dann mit $idefix->number_of_rows arbeiten und es einem Smarty zuweisen.
    Code: PHP  [Auswählen]
    $majestix->assign('OBELIX', $idefix->number_of_rows);

    Jetzt ersetze einfach idefix mit dem Variablennamen der jeweils verwendet wurde und OBELIX mit dem Namen den der Smarty Tag haben soll und dann in der HTML mit {$OBELIX} aufgerufen wird.

    Ich würde für OBELIX das nehmen, was Du auch in den anderen html Dateien verwendet hast. Dann bleibt das übersichtlicher.

    Für majestix musst du den Namen nehmen den Du hier findest (meistens ziemlich am Anfang der Datei):
    Code: PHP  [Auswählen]
    $majestix = new Smarty;

    Die gallischen Namen dienen zur Veranschaulichung, dass die Namen frei wählbar sind, aber dann innerhalb des Gesamtkonstruktes beibehalten werden. Stichwort "Bezeichner"
    2 Antworten
    2785 Aufrufe
    15. Juli 2014, 10:54:13 von thenew
    2 Antworten
    2994 Aufrufe
    06. November 2009, 13:00:30 von Tomcraft
    7 Antworten
    2794 Aufrufe
    21. April 2015, 21:42:24 von robertko
    9 Antworten
    5992 Aufrufe
    28. November 2009, 20:08:58 von Tomcraft