Leere Kategorien ausblenden

Aus Wiki | modified eCommerce Shopsoftware
Zur Navigation springenZur Suche springen

(Quelle : www.extratore.de)


Nur Kategorien mit aktiven Artikeln anzeigen für xt:C und Gambio[Bearbeiten]

Die Anpassungen wurden von eXtraStore GbR entwickelt und sind zur nicht kommerziellen Weitergabe gedacht. Es wird keine Haftung übernommen, bitte machen Sie vor allen Anpassungen eine Sicherheitskopie der veränderten Dateien und ein Backup der Datenbank. Die gesamten Anpassungen beschränken sich auf vier Schritte. Bitte führen Sie diese gewissenhaft nacheinander aus. Falls Sie Ideen, eine Weiterentwicklung des Codes vorgenommen oder Probleme bei der Implementierung haben informieren Sie uns doch bitte. Wir sind für Sie unter der Website www.extrastore.de und e-Mail info@extrastore.de erreichbar.

Schritt 1:
Hierzu benötigen Sie einen Zugang zur Datenbank, da sich der erste Schritt auf einen Datenbankbefehl bezieht. Dieser Schritt ist obligatorisch und dient zur Steigerung der Effizienz der Datenbankabfrage. Sollten Sie diesen Schritt nicht durchführen, ist dies nicht schlimm, die Kommunikationszeit mit Ihrer Datenbank dürfte jedoch dann weitaus länger ausfallen.

Führen Sie folgenden MySql-Befehl in Ihrer Shopdatenbank aus:

 ALTER TABLE 'products_to_categories' ADD INDEX ( 'categories_id' )

Wenn Sie kein Datenimportmodul von uns besitzen, führen Sie noch bitte diesen MySql-Befehl aus:

 ALTER TABLE 'products' ADD INDEX ( 'products_model' )

Die Indizierung sorgt dafür, dass eine Art Inhaltsverzeichnis angelegt wird und somit der einzelne Datensatz schneller gefunden wird.

Schritt 2:
Verbinden Sie sich via FTP mit Ihrem Webserver und suchen Sie die Datei ./inc/xtc_count_products_in_category.inc.php. Öffnen Sie diese mit einem Editor.

Suchen Sie diese Zeile:

 function xtc_count_products_in_category($category_id,
 $include_inactive = false) {

und verändern Sie die Zeile wie folgt:

 function xtc_count_products_in_category($category_id,
 $include_inactive = false, $min = false) {

Suchen Sie diese Zeile:

 $products_count += $products['total'];

Schreiben Sie darunter:

 //Anpassung: Abfrage der Unterkategorien überspringen sofern bereits min. 1 Artikel gefunden wurde
 if(($min == true) AND ($products_count > 0)) return
 $products_count;
 //

Speichern Sie die Datei und laden Sie diese wieder in das ursprüngliche Verzeichnis.

Schritt 3:
Suchen Sie die Datei ./includes/modules/default.php, diese wird als Nächstes bearbeitet. Hier wird auch eine if-Abfrage in den Code eingebaut.

Suchen Sie folgende Schleife:

 while ($categories = xtc_db_fetch_array($categories_query, true))
 { .... }

Fügen Sie am Anfang (nach der { ) folgendes ein:

 if (xtc_count_products_in_category($categories['categories_id'], false, true) > 0) {

Damit das Ganze funktioniert muss nun am Ende der while-Schlefe noch eine Klammer gesetzt werden. Wichtig ist diese nicht zu vergessen!

Am Ende muss das Ganze so aussehen:

  while ($categories = xtc_db_fetch_array($categories_query, true))  { 
    if(xtc_count_products_in_category($categories['categories_id'], false, true) > 0) {
      $rows ++;
      $cPath_new = xtc_category_link($categories['categories_id'],
      $categories['categories_name']);
      $width = (int) (100 / MAX_DISPLAY_CATEGORIES_PER_ROW).'%';
      $image = '';
      if ($categories['categories_image'] != '') {
        $image = DIR_WS_IMAGES.'categories/'.
        $categories['categories_image'];
      }
      $categories_content[] = array (
        'CATEGORIES_NAME' => $categories['categories_name'], 
        'CATEGORIES_HEADING_TITLE' => $categories['categories_heading_title'],
        'CATEGORIES_IMAGE' => $image, 
        'CATEGORIES_LINK' => xtc_href_link(FILENAME_DEFAULT, $cPath_new),
        'CATEGORIES_DESCRIPTION' => $categories['categories_description']);
    }
  } // <- Nicht die Klammer vergessen !!!!


Speichern Sie die Datei und laden Sie diese wieder in das ursprüngliche Verzeichnis.

Schritt 4:
Öffnen Sie die Datei templates/XXX/source/inc/xtc_show_category.inc.php. XXX steht hier für den Namen des Templates welches Sie verwenden.

Innerhalb der Funktion suchen Sie:

 global $foo, $categories_string, $id;

Fügen Sie darunter die if-Abfrage ein:

 if(xtc_count_products_in_category($counter, false, true) > 0) {

Es muss jetzt noch die Klammer geschlossen werden, suchen Sie dies am Ende der Datei:

    if (SHOW_COUNTS == 'true') {
    $products_in_category = xtc_count_products_in_category($counter);
    if ($products_in_category > 0) {
      $categories_string .= '&nbsp;(' . $products_in_category . ')';
    }
  }

Und setzen Sie nach den zwei geschleiften Klammern noch eine Klammer ein. Speichern Sie die Datei und laden Sie diese wieder in das ursprüngliche Verzeichnis.

Sie haben alle Schritte durchgeführt und sollten bei Erfolg nur noch Kategorien im Frontend sehen bei denen mindestens ein aktiver Artikel vorhanden ist.


Weblinks[Bearbeiten]

http://www.extrastore.de
Download auf xtc-load.de