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: Variable zum anzeigen aller Kategorien eines Produkts

    robertko

    • Schreiberling
    • Beiträge: 271
    Hallo.
    Ich habe die meisten Artikel in mehreren Kategorien als Kopie zugeordnet.
    Nun möchte ich in der products_info_tabs_v1.html
    Diese Kategorien anzeigen lassen.

    Also beispielweise so:

    Dieses Produkt gehört zu:
    a, b, c, d, e

    Gibts es dafür eine variable? oder ist da spezieller code von nöten.
    Vielen Dank

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

    robertko

    • Schreiberling
    • Beiträge: 271
    Re: Variable zum anzeigen aller Kategorien eines Produkts
    Antwort #1 am: 06. Mai 2015, 08:26:49
    Da ich bisher noch nichts gefunden habe, muss ich dieses Thema leider nochmal pushen.

    Das, was ich möchte sieht man des Öfteren in Filmshops, wo man auf einen Film klickt, sich die product_info öffnet und dann sowas steht wie:

    Filmgenre:
    Action, sci-fi, Abenteuer

    Schauspieler:
    Spongebob, Pittiplatsch, Plumps

    Und diese dann auch noch verlinkt sind zu den einzelnen Kategorien.
    Wenn ich also auf Action klicke, bekomme ich alle Filme aus der Kategorie "Action" angezeigt
    Klicke ich auf Spongebob,bekomme ich alle Spongebob Filme angezeigt.

    Das schwierige bei mir ist, ich habe tatsächlich auch 2 Kategorieboxen.
    Also "Genre" und "Schauspieler" und möchte die genau so ausgeben.
    Wäre das irgendwie möglich?
    Gibt's da was fertiges?

    Danke

    Alfred

    • Experte
    • Beiträge: 2.115
    Re: Variable zum anzeigen aller Kategorien eines Produkts
    Antwort #2 am: 06. Mai 2015, 08:46:40
    Hallo,

    Admin-> Kategorien und Artikel-> Artikel markieren.
    Rechts in der Box wird angezeigt unter  Informationen wo der Artikel verlinkt ist.

    Das sollte helfen.

    Gruß

    awids

    • Experte
    • Beiträge: 3.803
    • Geschlecht:
    Re: Variable zum anzeigen aller Kategorien eines Produkts
    Antwort #3 am: 06. Mai 2015, 08:56:15
    Moin Alfred,

    das hilft dem Admin, wenn er nicht mehr weiter weiß, in der vorliegenden Fragestellung geht es darum, diese Information für den Kunden auf der Produktseite zugänglich zu machen. Quasi eine Tag-Cloud speziell für das angezeigte Produkt und die Tags sind mit den jeweiligen (inkl. der aktuell aufgerufenen) Kategorie verlinkt.

    Für modified hab ich das aber noch gar nicht gesehen und wenn man das nicht für jedes Produkt quick & dirty einzeln einpflegen will, sollte da schon ein Fachmann ran, der weiß, wie man sowas am Besten automatisiert.

    Liebe Grüße

    Alex

    Alfred

    • Experte
    • Beiträge: 2.115
    Re: Variable zum anzeigen aller Kategorien eines Produkts
    Antwort #4 am: 06. Mai 2015, 09:03:34
    das hilft dem Admin....

    ....herauszufinden wie diese Ausgabe erstellt wird.
    Damit kann er das anwenden bei der Artikelansicht.

    Darum dreht sich die Fragestellung.

    Gruß

    robertko

    • Schreiberling
    • Beiträge: 271
    Re: Variable zum anzeigen aller Kategorien eines Produkts
    Antwort #5 am: 06. Mai 2015, 18:36:44
    Danke vorerst Alfred.
    Könntest du mir dahingehend Hilfestellung geben?
    Meine Programmierkenntnisse laufen gegen 0, aber mit etwas Hilfe kann ich das schaffen.
    In welcher Datei wird diese Ausgabe erzeugt?

    Ich hatte Anfangs erst an eine sql Abfrage gedacht, aber zum einen sind die Kategorien aus beiden Sektionen, in dem Fall "Genre" und "Schauspieler" in der Datenbank nicht klar getrennt und zum anderen weiß ich nicht, wie ich die Abfrage dann eben auf das aufgerufene Produkt beziehen soll.
    Bitte helft mir, das wäre klasse.

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: Variable zum anzeigen aller Kategorien eines Produkts
    Antwort #6 am: 07. Mai 2015, 10:53:58
    Hallo robertko

    Hier ein Programmier-Vorschlag zu Alfreds Idee:

    In includes/modules/product_info.php
    nach
    Code: PHP  [Auswählen]
      include (DIR_WS_MODULES.'product_attributes.php');
      include (DIR_WS_MODULES.'product_reviews.php');
      include (DIR_WS_MODULES.FILENAME_PRODUCTS_MEDIA);
      include (DIR_WS_MODULES.FILENAME_ALSO_PURCHASED_PRODUCTS);
      include (DIR_WS_MODULES.FILENAME_CROSS_SELLING);
     
    folgend Code einfügen
    Code: PHP  [Auswählen]
    // product to categories BEGIN //////////////////////////////////////////////////////////////////////////////////////////////////

      /**
       * xtc_generate_category_path()
       *
       * @param mixed $id
       * @param string $from
       * @param string $categories_array
       * @param integer $index
       * @return
       */

      function xtc_generate_category_path($id, $from = 'category', $categories_array = '', $index = 0) {
        if (!is_array($categories_array))
          $categories_array = array ();
        if ($from == 'product') {
          $categories_query = xtc_db_query("select categories_id from ".TABLE_PRODUCTS_TO_CATEGORIES." where products_id = '".$id."'");
          while ($categories = xtc_db_fetch_array($categories_query)) {
            if ($categories['categories_id'] == '0') {
              $categories_array[$index][] = array ('id' => '0', 'text' => TEXT_TOP);
            } else {
              $category_query = xtc_db_query("select cd.categories_name, c.parent_id from ".TABLE_CATEGORIES." c, ".TABLE_CATEGORIES_DESCRIPTION." cd where c.categories_id = '".$categories['categories_id']."' and c.categories_id = cd.categories_id and cd.language_id = '".(int)$_SESSION['languages_id']."'");
              $category = xtc_db_fetch_array($category_query);
              $categories_array[$index][] = array ('id' => $categories['categories_id'], 'text' => $category['categories_name']);
              if ((xtc_not_null($category['parent_id'])) && ($category['parent_id'] != '0'))
                $categories_array = xtc_generate_category_path($category['parent_id'], 'category', $categories_array, $index);
              $categories_array[$index] = array_reverse($categories_array[$index]);
            }
            $index ++;
          }
        } elseif ($from == 'category') {
          $category_query = xtc_db_query("select cd.categories_name, c.parent_id from ".TABLE_CATEGORIES." c, ".TABLE_CATEGORIES_DESCRIPTION." cd where c.categories_id = '".$id."' and c.categories_id = cd.categories_id and cd.language_id = '".(int)$_SESSION['languages_id']."'");
          $category = xtc_db_fetch_array($category_query);
          $categories_array[$index][] = array ('id' => $id, 'text' => $category['categories_name']);
          if ((xtc_not_null($category['parent_id'])) && ($category['parent_id'] != '0'))
            $categories_array = xtc_generate_category_path($category['parent_id'], 'category', $categories_array, $index);
        }
        return $categories_array;
      }


      /**
       * xtc_output_generated_category_path()
       *
       * @param mixed $id
       * @param string $from
       * @return
       */

      function xtc_output_generated_category_path($id, $from = 'category') {
        $calculated_category_path_string = '';
        $calculated_category_path = xtc_generate_category_path($id, $from);
        for ($i = 0, $n = sizeof($calculated_category_path); $i < $n; $i ++) {
          for ($j = 0, $k = sizeof($calculated_category_path[$i]); $j < $k; $j ++) {
            $calculated_category_path_string .= $calculated_category_path[$i][$j]['text'].'&nbsp;&gt;&nbsp;';
          }
          $calculated_category_path_string = substr($calculated_category_path_string, 0, -16).'<br />';
        }
        $calculated_category_path_string = substr($calculated_category_path_string, 0, -6); //DokuMan - remove <br /> from description
        if (strlen($calculated_category_path_string) < 1)
          $calculated_category_path_string = TEXT_TOP;
        return $calculated_category_path_string;
      }
     
      $info_smarty->assign('PRODUCTS_TO_CATEGORIES', xtc_output_generated_category_path($product->data['products_id'], 'product'));
       
    // product to categories END //////////////////////////////////////////////////////////////////////////////////////////////////
     

    In templates/xtc5/module/product_info/product_info_v1.html oder z.B. product_info_tabs_v1.html oder das Template welches Du für die Produktdarstellung verwendest
    nach
    Code: XML  [Auswählen]
                {$PRODUCTS_PRINT}
     
    folgend Code einfügen
    Code: XML  [Auswählen]
                {if $PRODUCTS_TO_CATEGORIES}<p><b>Dieser Film ist in folgenden Kategorien zu finden:</b><br />{$PRODUCTS_TO_CATEGORIES}</p>{/if}
     

    PS:
    Der obige Vorschlag ist nicht die komplette Umsetzung deines Problems aber es sollte als Einstieg helfen.

    Gruss
    Hanspeter

    web0null

    • Experte
    • Beiträge: 1.998
    Re: Variable zum anzeigen aller Kategorien eines Produkts
    Antwort #7 am: 07. Mai 2015, 13:56:51
    Ich denke du suchst so etwas in der Art.
    Code: PHP  [Auswählen]
    function xtc_products_to_categories($id = 0) {
      $array = array ();
      if ($id) {
        $categories = xtc_db_query("
          SELECT categories_id
          FROM   "
    .TABLE_PRODUCTS_TO_CATEGORIES."
          WHERE  products_id = "
    .(int)$id."
        "
    );
        while ($values = xtc_db_fetch_array($categories)) {
          if ($values['categories_id'] != '0') {
            $query = xtc_db_query("
              SELECT categories_id,
                     categories_name
              FROM   "
    .TABLE_CATEGORIES_DESCRIPTION."
              WHERE  categories_id = "
    .(int)$values['categories_id']."
              AND    language_id = "
    .(int)$_SESSION['languages_id']."
              LIMIT  1
            "
    );
            $values  = xtc_db_fetch_array($query);
            $array[] = '<a href="'.xtc_href_link(FILENAME_DEFAULT, xtc_category_link($values['categories_id'])).'">'.$values['categories_name'].'</a>' ;
          }
        }
      }
      return $array;
    }
    $info_smarty->assign('PRODUCTS_TO_CATEGORIES', implode(xtc_products_to_categories($product->data['products_id']), '<br />'));
     

    Gruß

    robertko

    • Schreiberling
    • Beiträge: 271
    Re: Variable zum anzeigen aller Kategorien eines Produkts
    Antwort #8 am: 07. Mai 2015, 14:00:21
    Wow.
    Ich danke euch.
    @hpzeller
    Was meinst du, das ist nicht die komplette Umsetzung?
    Was wird denn ausgegeben?
    Kann das gerade nicht einbauen, bin unterwegs.

    @web0null
    Wo genau pack ich den Code rein?

    Nochwas @hpzeller

    Lässt sie das auch auf das product _listing anwenden?
    Dann muss der Code sicher in die product_listing.php oder?

    web0null

    • Experte
    • Beiträge: 1.998
    Re: Variable zum anzeigen aller Kategorien eines Produkts
    Antwort #9 am: 07. Mai 2015, 14:31:36
    Es ist so einzubauen wie hpzeller schrieb, nur statt seinem Code meinen verwenden.

    Gruß

    robertko

    • Schreiberling
    • Beiträge: 271
    Re: Variable zum anzeigen aller Kategorien eines Produkts
    Antwort #10 am: 07. Mai 2015, 19:16:33
    Vielen Dank.

    Ich habe den Code von Web0null eingefügt.
    Funktioniert super. Erstmal danke dafür.
    Eine Sache habe ich noch.
    Unzwar habe ich wie schon gesagt 2. Kategorieboxen, nun möchte ich, das die Kategorien aus den beiden Boxen (sections) getrennt von einander angezeigt werden.
    Also so wie oben beschrieben, einmal "Genre" und einmal "Schauspieler"
    Mir werden mit deiner Version jetzt momentan alle angezeigt ohne Struktur.
    Ich nehme an, dass dafür 2 Abfragen gemacht werden müssen, allerdings hört an dieser Stelle mein wissen auf und hab absolut keine Ahnung wie ich das umsetzen kann.
    Die Idee ist da, aber das auf Papier bringen kann ich nicht.
    Es muss eigentlich nur noch eine section-abfrage mit rein.

    wenn Section 1 dann "Genre" wenn Section 2 dann "Schauspieler"

    Ich füge hier mal den Inhalt der categories_section.php mit ein, welche aus dem Modul stammt, welches die 2.Kategorie Box erzeugt. ich nehme an, das da auch die sections erzeugt werden,
    Vielleicht kannst du da nochmal drüber schauen und mir helfen.

    Ich danke dir vorerst vielmals für deine mühe.

    /templates/MEIN_TEMPLATE/source/boxes/categories_section.php
    Code: PHP  [Auswählen]
    <?php

    /* -----------------------------------------------------------------------------------------
       $Id: categories.php 1302 2005-10-12 16:21:29Z mz $  

       XT-Commerce - community made shopping
       http://www.(( Wir dulden keine kommerziellen Werbelinks - Bitte Forenregeln beachten! ))

       Copyright (c) 2003 XT-Commerce
       -----------------------------------------------------------------------------------------
       based on:
       (c) 2000-2001 The Exchange Project  (earlier name of osCommerce)
       (c) 2002-2003 osCommerce(categories.php,v 1.23 2002/11/12); www.oscommerce.com
       (c) 2003      nextcommerce (categories.php,v 1.10 2003/08/17); www.nextcommerce.org

       Released under the GNU General Public License
       -----------------------------------------------------------------------------------------
       Third Party contributions:
       Enable_Disable_Categories 1.3                Autor: Mikel Williams | mikel@ladykatcostumes.com

       Released under the GNU General Public License
       
       second Categorynavigation by (( Wir dulden keine kommerziellen Werbelinks - Bitte Forenregeln beachten! ))
       11.07.2006
       ---------------------------------------------------------------------------------------*/

    // reset var
    $start = microtime();
    $box_smarty = new smarty;
    $box_content = '';

    $box_smarty->assign('language', $_SESSION['language']);
    // set cache ID
    if (!CacheCheck()) {
            $cache=false;
            $box_smarty->caching = 0;
    } else {
            $cache=true;
            $box_smarty->caching = 1;
            $box_smarty->cache_lifetime = CACHE_LIFETIME;
            $box_smarty->cache_modified_check = CACHE_CHECK;
            $cache_id = $_SESSION['language'].$_SESSION['customers_status']['customers_status_id'].'section'.$cPath;
    }

    if(!$box_smarty->is_cached(CURRENT_TEMPLATE.'/boxes/box_categories_section.html', $cache_id) || !$cache){

    $box_smarty->assign('tpl_path', 'templates/'.CURRENT_TEMPLATE.'/');

    // include needed functions
    require_once (DIR_FS_CATALOG.'templates/'.CURRENT_TEMPLATE.'/source/inc/xtc_show_category_section.inc.php');
    require_once (DIR_FS_INC.'xtc_has_category_subcategories.inc.php');
    require_once (DIR_FS_INC.'xtc_count_products_in_category.inc.php');


    $categories_section_string = '';

    if (GROUP_CHECK == 'true') {
            $group_check = "and c.group_permission_".$_SESSION['customers_status']['customers_status_id']."=1 ";
    }
    $categories_section_query = "select c.categories_id,
                                               cd.categories_name,
                                               c.parent_id from "
    .TABLE_CATEGORIES." c, ".TABLE_CATEGORIES_DESCRIPTION." cd
                                               where c.categories_status = '1'
                                                                                       AND c.section = 1
                                               and c.parent_id = '0'
                                               "
    .$group_check."
                                               and c.categories_id = cd.categories_id
                                               and cd.language_id='"
    .(int) $_SESSION['languages_id']."'
                                               order by sort_order, cd.categories_name"
    ;
    $categories_section_query = xtDBquery($categories_section_query);

    while ($categories_section = xtc_db_fetch_array($categories_section_query, true)) {
            $foo[$categories_section['categories_id']] = array (
                    'name' => $categories_section['categories_name'],
                    'parent' => $categories_section['parent_id'],
                    'level' => 0,
                    'path' => $categories_section['categories_id'],
                    'next_id' => false);

            if (isset ($prev_id)) {
                    $foo[$prev_id]['next_id'] = $categories_section['categories_id'];
            }

            $prev_id = $categories_section['categories_id'];

            if (!isset ($first_section_element)) {
                    $first_section_element = $categories_section['categories_id'];
            }
    }

    //------------------------
    if ($cPath) {
            $new_path = '';
            $id = split('_', $cPath);
            reset($id);
            while (list ($key, $value) = each($id)) {
                    unset ($prev_id);
                    unset ($first_id);
                    $categories_section_query = "select c.categories_id, cd.categories_name, c.parent_id
                            from "
    .TABLE_CATEGORIES." c,
                                    "
    .TABLE_CATEGORIES_DESCRIPTION." cd
                                    where c.categories_status = '1'
                                    and c.parent_id = '"
    .$value."' ".$group_check."
                                    and c.categories_id = cd.categories_id
                                    and cd.language_id='"
    .$_SESSION['languages_id']."'
                                    order by sort_order, cd.categories_name"
    ;
                                   
                    $categories_section_query = xtDBquery($categories_section_query);
                    $category_check = xtc_db_num_rows($categories_section_query, true);
                    if ($category_check > 0) {
                            $new_path .= $value;
                            while ($row = xtc_db_fetch_array($categories_section_query, true)) {
                                    $foo[$row['categories_id']] = array (
                                            'name' => $row['categories_name'],
                                            'parent' => $row['parent_id'],
                                            'level' => $key +1,
                                            'path' => $new_path.'_'.$row['categories_id'],
                                            'next_id' => false);

                                    if (isset ($prev_id)) {
                                            $foo[$prev_id]['next_id'] = $row['categories_id'];
                                    }

                                    $prev_id = $row['categories_id'];

                                    if (!isset ($first_id)) {
                                            $first_id = $row['categories_id'];
                                    }

                                    $last_id = $row['categories_id'];
                            }
                            $foo[$last_id]['next_id'] = $foo[$value]['next_id'];
                            $foo[$value]['next_id'] = $first_id;
                            $new_path .= '_';
                    } else {
                            break;
                    }
            }
    }

            xtc_show_category_section($first_section_element);
            $box_smarty->assign('BOX_CONTENT', $categories_section_string);

    }

    // set cache ID
    if (!$cache) {
            $box_categories = $box_smarty->fetch(CURRENT_TEMPLATE.'/boxes/box_categories_section.html');
    } else {
            $box_categories = $box_smarty->fetch(CURRENT_TEMPLATE.'/boxes/box_categories_section.html', $cache_id);
    }

    $smarty->assign('box_CATEGORIES_SECTION', $box_categories);
    ?>

    robertko

    • Schreiberling
    • Beiträge: 271
    Re: Variable zum anzeigen aller Kategorien eines Produkts
    Antwort #11 am: 07. Mai 2015, 20:02:47
    Vielleicht hilf das auch noch.

    In der Datenbank unter der Tabelle "categories" wurde eine neue spalte eingefügt namens "section"
    mit werten "0" und "1".
    0 steht für die Standardbox
    1 steht für die neu hinzugefügte

    und je nachdem in welcher section ich im Admin eine neue Kategorie anlege, taucht deren id entweder unter section 0 oder 1 auf.

    Ich bin mir sicher man müsste nur die Datenbankabfrage modifizieren und eben duplizieren, einmal für section 0 und einmal für section 1

    robertko

    • Schreiberling
    • Beiträge: 271
    Re: Variable zum anzeigen aller Kategorien eines Produkts
    Antwort #12 am: 16. Mai 2015, 14:45:29
    Hi.
    Ich muss dieses Thema gerade nochmal aufgreifen.
    Alsooo, ich habe es hinbekommen, das die Anzeige zwischen section 0 und section 1 unterscheidet.
    War nicht ganz so einfach, aber hat geklappt.

    Das einzige was mich stört, liegt in dieser Zeile:
    Code: PHP  [Auswählen]
    implode(xtc_products_to_categories($product->data['products_id']), '<br />'));

    Ich habe aus dem '<br />' am ende ein ', ' gemacht, weil ich wollte, dass die Kategorien nebeneinander durch ein Komma getrennt angezeigt werden.
    Das klappt auch Wunderbar, aber leider ist es so, dass bei ausgeblendeten Kategorien, das Komma trotzdem ausgegeben wird.

    Also sieht die Ausgabe in etwa so aus:

    , , Spongbob, Pittiplatsch, Plump

    Das heißt, wenn ich Kategorien aus section 1 ausgebe, und die Kategorien aus section 0 ausblende, werden lediglich die Kategorienamen ausgeblendet, die Kommata erscheinen aber trotzdem.
    Lassen sich die überflüssigen Kommata irgendwie ausblenden oder mit den Kategorienamen verbinden, so dass die Kommata mit ausgeblendet werden?

    Hier der bearbeitete Code:

    Code: PHP  [Auswählen]
    //ANFANG:::::Ausgabe der Kategorien aus section 0
     
     function xtc_products_to_section0($id = 0) {
      $array = array ();
      if ($id) {
        $categories = xtc_db_query("
          SELECT categories_id
          FROM   "
    .TABLE_PRODUCTS_TO_CATEGORIES."
          WHERE  products_id = "
    .(int)$id."
        "
    );
        while ($values = xtc_db_fetch_array($categories)) {
          if ($values['categories_id'] != '0') {
            $query = xtc_db_query("                        
                                            SELECT categories_description.categories_id,
                                            categories_description.categories_name,
                                            categories.section
                                            FROM   categories_description
                                            INNER JOIN   categories
                                            ON categories_description.categories_id = categories.categories_id
                                            WHERE  section = 0
                                            AND  categories_description.categories_id = "
    .(int)$values['categories_id']."
                                            AND    language_id = "
    .(int)$_SESSION['languages_id']."
                                            LIMIT  1
                                            "
    );
            $values  = xtc_db_fetch_array($query);
            $array[] = '<a href="'.xtc_href_link(FILENAME_DEFAULT, xtc_category_link($values['categories_id'])).'">'.$values['categories_name'].'</a>' ;
          }
        }
      }
     
      return $array;
    }
    $info_smarty->assign('PRODUCTS_TO_SECTION0', implode(xtc_products_to_section0($product->data['products_id']), ', '));

    //ENDE:::::::Ausgabe der Kategorien aus section 0

    //ANFANG:::::Ausgabe der Kategorien aus section 1
     
     function xtc_products_to_section1($id = 0) {
      $array = array ();
      if ($id) {
        $categories = xtc_db_query("
          SELECT categories_id
          FROM   "
    .TABLE_PRODUCTS_TO_CATEGORIES."
          WHERE  products_id = "
    .(int)$id."
        "
    );
        while ($values = xtc_db_fetch_array($categories)) {
          if ($values['categories_id'] != '0') {
                     
            $query = xtc_db_query("                        
                                                                                           
                                            SELECT categories_description.categories_id,
                                            categories_description.categories_name,
                                            categories.section
                                            FROM   categories_description
                                            INNER JOIN   categories
                                            ON categories_description.categories_id = categories.categories_id
                                            WHERE  section = 1
                                            AND  categories_description.categories_id = "
    .(int)$values['categories_id']."
                                            AND    language_id = "
    .(int)$_SESSION['languages_id']."
                                            LIMIT  1
                                            "
    );
            $values  = xtc_db_fetch_array($query);
            $array[] = '<a href="'.xtc_href_link(FILENAME_DEFAULT, xtc_category_link($values['categories_id'])).'">'.$values['categories_name'].'</a>' ;
          }
        }
      }
     
      return $array;
    }
    $info_smarty->assign('PRODUCTS_TO_SECTION1', implode(xtc_products_to_section1($product->data['products_id']), ', '));

    //ENDE:::::Ausgabe der Kategorien aus section 1

    Danke in Voraus

    web0null

    • Experte
    • Beiträge: 1.998
    Re: Variable zum anzeigen aller Kategorien eines Produkts
    Antwort #13 am: 16. Mai 2015, 18:46:33
    Das müsste das sein was du brauchst
    Code: PHP  [Auswählen]
    // web0null function xtc_products_to_categories()
    function xtc_products_to_categories($id = 0, $section = false) {
      $array = array ();
      if ($id) {
        $section = $section === false
                   ? ''
                   : "JOIN " . TABLE_CATEGORIES . " c ON (p2c.categories_id = c.categories_id AND c.section = " . (int)$section . ")";
        $categories = xtc_db_query("-- " . __LINE__ . __FILE__ . "
          SELECT p2c.categories_id
          FROM   "
    . TABLE_PRODUCTS_TO_CATEGORIES . " p2c
          "
    .$section."
          WHERE  p2c.products_id = "
    . (int)$id . "
          AND    p2c.categories_id != 0
        "
    );
        while ($values = xtc_db_fetch_array($categories)) {
          $query = xtc_db_query("-- " . __LINE__ . __FILE__ . "
            SELECT categories_id,
                   categories_name
            FROM   "
    .TABLE_CATEGORIES_DESCRIPTION."
            WHERE  categories_id = "
    . (int)$values['categories_id'] . "
            AND    language_id = "
    . (int)$_SESSION['languages_id'] . "
            LIMIT  1
          "
    );
          $values  = xtc_db_fetch_array($query);
          $array[] = '<a href="' . xtc_href_link(FILENAME_DEFAULT, xtc_category_link($values['categories_id'])) . '">' . $values['categories_name'] . '</a>' ;
        }
      }
      return $array;
    }
    $info_smarty->assign('PRODUCTS_TO_CATEGORIES', implode(xtc_products_to_categories($product->data['products_id']), ', ')); // alle
    $info_smarty->assign('PRODUCTS_TO_CATEGORIES_0', implode(xtc_products_to_categories($product->data['products_id'], 0), ', ')); // section 0
    $info_smarty->assign('PRODUCTS_TO_CATEGORIES_1', implode(xtc_products_to_categories($product->data['products_id'], 1), ', ')); // section 1

     

    Gruß

    karsta.de

    • Experte
    • Beiträge: 3.156
    Re: Variable zum anzeigen aller Kategorien eines Produkts
    Antwort #14 am: 16. Mai 2015, 20:04:28
    Danke web0null!
    Finde deine Lösung super und besser als die Kategorieanzeige über global $breadcrumb; zu machen.
    Habe aber deine Lösung aus Beitrag 7 noch ein wenig abgeändert, dass nur die Kategorien angezeigt werden, die auch aktiv sind.

    Code: PHP  [Auswählen]
    function xtc_products_to_categories($id = 0) {
          $array = array ();
          if ($id) {
            $categories = xtc_db_query("
              SELECT categories_id
              FROM   "
    .TABLE_PRODUCTS_TO_CATEGORIES."
              WHERE  products_id = "
    .(int)$id."
            "
    );
            while ($values = xtc_db_fetch_array($categories)) {
              if ($values['categories_id'] != '0') {
                $query = xtc_db_query("
                  SELECT cd.categories_id,
                             c.categories_status,
                         cd.categories_name
                  FROM   "
    .TABLE_CATEGORIES_DESCRIPTION." cd,
                                     "
    .TABLE_CATEGORIES." c
                  WHERE  cd.categories_id = "
    .(int)$values['categories_id']."
                              AND    cd.categories_id = c.categories_id
                              AND    c.categories_status > 0
                  AND    cd.language_id = "
    .(int)$_SESSION['languages_id']."
                  LIMIT  1
                "
    );
                $values  = xtc_db_fetch_array($query);
                $array[] = '<a href="'.xtc_href_link(FILENAME_DEFAULT, xtc_category_link($values['categories_id'])).'">'.$values['categories_name'].'</a>' ;
              }
            }
          }
          return $array;
        }
        $info_smarty->assign('PRODUCTS_TO_CATEGORIES', implode(xtc_products_to_categories($product->data['products_id']), '<br />'));

     
    4 Antworten
    3101 Aufrufe
    26. Mai 2013, 02:26:26 von mcm
               
    anything