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:
// 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:
for ($i=0;$n=sizeof($cat_tree),$i<$n;$i++) { Ersetzen mit:
// 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:
$tree .= '<input type="checkbox" name="dest_cat_ids[]" value="'.$cat_tree[$i]['id'].'"><font size="1">'.$cat_tree[$i]['text'].'</font><br />';
Ersetzen mit:
$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 -