Modulshop - Eine große Auswahl an neuen und hilfreichen Modulen für die modified eCommerce Shopsoftware
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: Kategorien eines Produkts ausgeben

    mcm

    • Mitglied
    • Beiträge: 151
    Kategorien eines Produkts ausgeben
    am: 25. Mai 2013, 01:32:59
    Hallo Leute,

    in der admin/includes/modules/categories_view.php
    werden mit folgender Funktion alle Kategorien ausgegeben, mit denen ein Produkt verknüpft ist:
    Code: PHP  [Auswählen]
    xtc_output_generated_category_path($multi_product, 'product')

    Dazu hab ich einige Fragen:
    1. wo wird diese Funktion definiert (oder erleutert)
    2. kann ich die Kategorien auch als Array ausgeben
    3. wie kann ich die ID's dieser Kategorien ausgeben
    4. wie mache ich daraus Links zur jeweiligen Kategorie

    Würde mich sehr über die Beantwortung einiger o. aller meiner Fragen freuen.

    Es geht u.a. darum, die Checkboxen in der Kategorieauswahlliste im Backend (bei Kopieren) bereits vorzuwählen, wenn Produkte bereits darin gelistet sind. Außerdem sollen sie verlinkt werden zur eigentlichen Kategorie.

    Letztendlich möchte ich gern das Projekt angehen, dass der Admin eine "Hauptkategorie" zuweisen kann. Da ich aber bereits an o.g. Problemen scheitere, bin ich mir da nicht mehr so sicher.....  zumindest bin ich dringend auf Eure Hilfe angewiesen.

    - mcm -



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

    Marcel G.

    • Fördermitglied
    • Beiträge: 398
    Re: Kategorien eines Produkts ausgeben
    Antwort #1 am: 25. Mai 2013, 02:29:59
    Die Funktion findest du in der admin/includes/functions/general.php.

    Für alles andere bin ich zu müde, sorry :-)

    mcm

    • Mitglied
    • Beiträge: 151
    Re: Kategorien eines Produkts ausgeben
    Antwort #2 am: 25. Mai 2013, 10:07:08
    Vielen Dank für die Info - Marcel - und den 24h-Support.
    Dann schlaf Dich mal schön aus, frühstücke was ordentliches (nicht die Pizzareste von gestern Nacht...).

    Und vielleicht kannst Du dann noch mal auf die restlichen Fragen schauen  :worship:

    Vielen Dank
    - mcm -

    Marcel G.

    • Fördermitglied
    • Beiträge: 398
    Re: Kategorien eines Produkts ausgeben
    Antwort #3 am: 26. Mai 2013, 00:09:09
    Zu deinen anderen Fragen - hast du dir die Funktion dann mal angeguckt und wenn ja was verstehst du nicht?

    Bin nicht so dafür eine komplette Lösung zu präsentieren ohne zu sehen das der Fragesteller sich bemüht hat selbst auf die Lösung zu kommen :-)

    mcm

    • Mitglied
    • Beiträge: 151
    Re: Kategorien eines Produkts ausgeben
    Antwort #4 am: 26. Mai 2013, 02:26:26
    Alles klar - ich hab's mir angeguckt und was zusammengeschrieben... ist aber noch unfertig.

    Also Schritt 1. ist, dass alle aktiven (keine Eltern-Elemente) Kategorien eines Produktes in der "Kopieren-Anzeige" (rechte Spalte, wenn man auf "Kopieren" klickt) bereits vorgewählt sind -> das verbessert den Überblick und ist irgendwie selbstverständlich.

    Da ich gern noch mehr Funktionen für die verknüpften Kategorien eines Produktes einrichten würde, hab ich mal eine Function geschrieben, die folgendes ausgibt:

    1. "all" -> alle verknüpften Kategorien (inkl. Elternpfad)
    2. "active" -> verknüpfte Kategorien ohne Elternpfad
    3. "ids" -> array mit allen IDs der verknüpften Kategorien
    4. "names" -> array mit allen Namen der verknüften Kategorien
    5. hinzu kommen sollen noch entsprechende Links der Kategorien

    Datei: admin/includes/functions/general.php

    Irgendwo einfügen:
    Code: PHP  [Auswählen]
    // BOF -mcm- products categories
      function get_product_categories($id, $from = 'category', $mode = 'active') {
        // gets values of the products categories:  all, active (not parents), ids, links, names
        $productAllCats = xtc_generate_category_path($id, $from);
        if ($mode == 'all') $productCats = $productAllCats;
        foreach ($productAllCats as $arr)  {
            foreach (end($arr) as $key => $val)  {  // end() -> no inactive parents
              if ($mode == 'active') {
                if ($key == 'id') $productCats['id'][] = $val;
                if ($key == 'text') $productCats['text'][] = $val;
              }
              if ($mode == 'ids'){
                  if ($key == 'id') $productCats[] = $val;
              }
              if ($mode == 'names'){
                  if ($key == 'text') $productCats[] = $val;
              }
              if ($mode == 'links'){
                //if ($key == 'id') $productCats[] = makeLink($val);
              }        
            }
        }
      return $productCats;
      }  
    // EOF -mcm- products categories
     

    In der Datei categories_views.php wird dann mit der Liste der anwählbaren Kategorien verglichen und bei Übereinstimmungen das Häkchen vorgewählt (checked). Zusätzlich wird noch abgefrag, ob nur ein Artikel gewählt wurde, da es bei mehreren keinen Sinn macht, die Kategorien vorzuwählen.

    Datei: admin/includes/modules/categories_view.php

    Suchen:
    Code: PHP  [Auswählen]
    for ($i=0;$n=sizeof($cat_tree),$i<$n;$i++) {  

    Ersetzen mit:
    Code: PHP  [Auswählen]

                 // BOF - mcm - checked categories  -- part 1/3    
                 $productCatIds = get_product_categories($multi_product, 'product', 'ids');
                   // gets values of the products categories; Parameter 3: all, active (not parents), ids, links, names
                   // defined in admin/includes/functions/general.php.
                 // EOF - mcm - checked categories  -- part 1/3      
                 
                  for ($i=0;$n=sizeof($cat_tree),$i<$n;$i++) {  
                 
                      // BOF -mcm- checked categories - part 2/3  
                      if (count($_POST['multi_products']) == 1 && in_array($cat_tree[$i]['id'], $productCatIds)){
                        $is_checked = ' checked="checked" ';
                        } else {$is_checked = "";
                      }
                      // EOF checked categories
                     
     

    Suchen:
    Code: PHP  [Auswählen]
    $tree .= '<input type="checkbox" name="dest_cat_ids[]" value="'.$cat_tree[$i]['id'].'"><font size="1">'.$cat_tree[$i]['text'].'</font><br />';

    Ersetzen mit:
    Code: PHP  [Auswählen]
    $tree .= '<input type="checkbox" name="dest_cat_ids[]" ' . $is_checked  .' value="'.$cat_tree[$i]['id'].'"><font size="1">'.$cat_tree[$i]['text'].'</font><br />'; // -mcm- checked categories - part 3/3  
     

    Soweit viel Aufwand für wenig Effekt...

    Frage: wie bekomme ich die Links zu den Kategorie-IDs in die Funktion

    Mein Hauptanliegen ist allerdings, pro Artikel ein Auswahlfeld der verlinkten Kategorien anzuzeigen, aus dem dann eine "Hauptkategorie" gewählt werden kann.
    Diese muss dann irgendwo in der DB in ein neues Feld.

    Wie würded Ihr das angehen?

    Gruß
    - mcm -
    Marktplatz - Eine große Auswahl an neuen und hilfreichen Modulen sowie modernen Templates für die modified eCommerce Shopsoftware
    19 Antworten
    9685 Aufrufe
    24. Juni 2021, 13:50:53 von scooterama
    1 Antworten
    1850 Aufrufe
    21. Juni 2013, 09:15:48 von p3e
    3 Antworten
    3320 Aufrufe
    11. Februar 2011, 10:22:55 von zvenson