Großartige Idee und sehr einfache Realisierung.
Aber es sollte sich ein jeder bewußt machen, dass mit dieser Methode eine Kategorie nicht deaktiviert ist.
Dieses Addon weißt den Sprachbezeichnungen einer Kategorie lediglich eine andere Sprach-ID zu.
Z.B. Kategorie ID 10:
ID__Bezeichnung__Language
10__Autos________2
10__Cars_________1
10__Coche________3
Wenn diese Kategorie nun deaktiviert wird, sieht es dann so aus:
ID__Bezeichnung__Language
10__Autos________23333
10__Cars_________13333
10__Coche________33333
Da es eine Sprache mit diesen ID's nicht gibt, wird die Kategorie nicht mehr angezeigt.
Wenn man aber über die ID 10 die Kategorie direkt aufruft, so ist sie ohne Titel erreichbar.
Wenn die Kategorie wieder aktiviert wird, wird die Sprach-ID wieder zurück gesetzt.
Auch beachten sollte man, dass wenn eine Kategorie deaktiviert ist, dass die Textfelder dann für eine Bearbeitung der Kategorie nicht zur Verfügung stehen.Daher kann es zu Problemen kommen, wenn man eine Kategorie bearbeitet, löscht oder verschieben möchte. Ich habe dies wie folgt gelöst:
Diese Zeile:
$contents[] = array('align' => 'center', 'text' => '<a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $category_path_string . '&cID=' . $cInfo->categories_id . '&action=edit_category') . '">' . tep_image_button('button_edit.gif', IMAGE_EDIT) . '</a> <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $category_path_string . '&cID=' . $cInfo->categories_id . '&action=delete_category') . '">' . tep_image_button('button_delete.gif', IMAGE_DELETE) . '</a> <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $category_path_string . '&cID=' . $cInfo->categories_id . '&action=move_category') . '">' . tep_image_button('button_move.gif', IMAGE_MOVE) . '</a>');
Ersetzen durch:
if ($cInfo->language_id < 3000) {
$contents[] = array('align' => 'center', 'text' => '<a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $category_path_string . '&cID=' . $cInfo->categories_id . '&action=edit_category') . '">' . tep_image_button('button_edit.gif', IMAGE_EDIT) . '</a> <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $category_path_string . '&cID=' . $cInfo->categories_id . '&action=delete_category') . '">' . tep_image_button('button_delete.gif', IMAGE_DELETE) . '</a> <a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $category_path_string . '&cID=' . $cInfo->categories_id . '&action=move_category') . '">' . tep_image_button('button_move.gif', IMAGE_MOVE) . '</a>');
}else{
$contents[] = array('align' => 'center', 'text' => 'Kategorien können nur bearbeitet werden,<br>wenn Sie aktiviert sind.');
}
So werden die 3 Button ausgeblendet, wenn eine Kategorie inaktiv ist.
Weiterhin ist es sinnvoll, die beiden categories_query etwas anzupassen:
finde 2 mal:
( cd.language_id = '" . (int)$languages_id . "' or cd.language_id > '3000')
ersetze 2 mal durch:
( cd.language_id = '" . (int)$languages_id . "' or cd.language_id = '" . (int)$languages_id . 3333 . "')
Dadurch selektiere ich definitiv nur die richtige Sprache.
Wenn eine Kategorie deaktiviert wird, möchte man bestimmt auch ale Produkte in dieser Kategorie deaktivieren.
Ich habe das wie folgt gelöst:
// ZDRAVKO PATCH ENABLE DISABLE CATEGORY AND PRODUCTS- Start
case 'setflag_cat':
$categories_id = $HTTP_GET_VARS['cID'];
if( $HTTP_GET_VARS['flag'] == '0' ){
$languages = tep_get_languages();
for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
$language_id = $languages[$i]['id'];
tep_db_query("update " . TABLE_CATEGORIES_DESCRIPTION . " set language_id = '" . $language_id . "3333' where language_id = '" . $language_id . "' and categories_id = '" . tep_db_input($categories_id) . "'");
tep_db_query("update " . TABLE_PRODUCTS . " set products_status = '0' where products_id in (select products_id from " . TABLE_PRODUCTS_TO_CATEGORIES . " where categories_id = '" . tep_db_input($categories_id) . "')");
}
} else {
$languages = tep_get_languages();
for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
$language_id = $languages[$i]['id'];
tep_db_query("update " . TABLE_CATEGORIES_DESCRIPTION . " set language_id = '" . $language_id . "' where language_id = '" . $language_id . "3333' and categories_id = '" . tep_db_input($categories_id) . "'");
tep_db_query("update " . TABLE_PRODUCTS . " set products_status = '1' where products_id in (select products_id from " . TABLE_PRODUCTS_TO_CATEGORIES . " where categories_id = '" . tep_db_input($categories_id) . "')");
}
}
if (USE_CACHE == 'true') {
tep_reset_cache_block('categories');
tep_reset_cache_block('also_purchased');
}
break;
// ZDRAVKO PATCH ENABLE DISABLE CATEGORY AND PRODUCTS- End
Nun werden immer alle Produkte in der entsprechenden Kategorie mit aktiviert bzw. deaktiviert.
Der Download beinhaltet diesen Text.