serg525 0 Опубликовано 26 августа, 2013 Жалоба Share Опубликовано 26 августа, 2013 Было необходимо выводить развернутым дерево меню. Для этого использовал файл templates/имя_шаблона/source/boxes/categories.php из модуля CSS-меню. Получилось как надо, но не отмечается активный пункт меню (т.е. не добавляется стиль "Current") Подскажите, пожалуйста, куда добавить код, чтобы к текущему пункту меню добавлялось class="current" ? Вот листинг файла categories.php : <?php $start = microtime(); $box = new vamTemplate; $box_content = ''; $box->assign('language', $_SESSION['language']); // set cache ID if (!CacheCheck()) { $cache=false; $box->caching = 0; } else { $cache=true; $box->caching = 1; $box->cache_lifetime = CACHE_LIFETIME; $box->cache_modified_check = CACHE_CHECK; $cache_id = $_SESSION['language'].$_SESSION['customers_status']['customers_status_id'].$cPath; } if(!$box->is_cached(CURRENT_TEMPLATE.'/boxes/box_categories.html', $cache_id) || !$cache){ $box->assign('tpl_path', 'templates/'.CURRENT_TEMPLATE.'/'); // cssMenu - Begin of configuration // $cssMenuConfig = array(); $cssMenuConfig['ShowEmptyCategories'] = true; // Should CSS Menu show empty categories? true/false $cssMenuConfig['includeProducts'] = false; // Should CSSMenu show products $cssMenuConfig['maxProductsInMenu'] = 8; // Max.number of products to show in menu(stops massive menus being created) $cssMenuConfig['moreText'] = "More...."; // Max.number of products to show in a menu(stops massive menus being created) // cssMenu - End of configuration // // include needed functions //require_once (DIR_FS_CATALOG.'templates/'.CURRENT_TEMPLATE.'/source/inc/vam_show_category.inc.php'); require_once (DIR_FS_INC.'vam_has_category_subcategories.inc.php'); require_once (DIR_FS_INC.'vam_count_products_in_category.inc.php'); $categories_string = ''; if (GROUP_CHECK == 'true') { $group_check = "and c.group_permission_".$_SESSION['customers_status']['customers_status_id']."=1 "; } $categories_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 = '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_query = vamDBquery($categories_query); function PrintProducts( $category_id, $categories_string , $includeul, $languageID) { global $cssMenuConfig; $product_path="product_info.php?cPath=".$category_id."&products_id="; $products_query = vam_db_query("select pc.products_id, pc.categories_id from products_to_categories pc, products p where pc.categories_id = " . $category_id . " and p.products_id = pc.products_id and products_status=1 order by products_price"); $productsDisplay=mysql_num_rows( $products_query ); $addMore= false; if ( $includeul && $productsDisplay > 0 ) { $returnval .= "<ul>"; } if ( $productsDisplay > $cssMenuConfig['maxProductsInMenu'] ) { $productsDisplay=$cssMenuConfig['maxProductsInMenu']; $addMore= true; } $count_string = ''; if (SHOW_COUNTS == 'true') { if ($totalitemsincategory > 0) { $count_string = ' (' . $totalitemsincategory . ')'; } } $i=0; while ($i < $productsDisplay) { $products = vam_db_fetch_array($products_query); $product_query = vam_db_query("select products_name from products_description where products_id = " . $products['products_id'] . " AND language_id = ".$languageID ); $product = vam_db_fetch_array($product_query); $returnval .= "<li><a href='".$product_path.$products['products_id']."'>".$product['products_name']."</a></li>\n"; // $returnval .= "<li><a href='".vam_href_link(FILENAME_PRODUCT_INFO, vam_product_link($products['products_id'], $product['products_name']))."</a></li>\n"; $i++; } if ( $addMore ) { $returnval .= "<li><a href='".$categories_string."'>".$cssMenuConfig['moreText']."</a></li>\n"; } if ( $productsDisplay > 0 || !$includeul ) { $returnval .= "</ul>"; } return $returnval; } function PrintSubMenus( $parentID, $languageID, $start_path ){ global $cssMenuConfig; $returnval = ''; if (($start_path == '') && ($parentID > 0)) { $start_path = $parentID; } else { if ($parentID > 0) $start_path .= "_" . $parentID; } if ($parentID != 0) { $returnval .= "<ul>"; } else { $returnval .= "<div>"; $returnval .= "<ul id='CatNavimenu'>"; } if (GROUP_CHECK == 'true') { $group_check = "and c.group_permission_".$_SESSION['customers_status']['customers_status_id']."=1 "; } $categories_query = vam_db_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 = '".$parentID."' ".$group_check." and c.categories_id = cd.categories_id and cd.language_id='" . (int)$languageID ."' order by sort_order, cd.categories_name"); while ($categories = vam_db_fetch_array($categories_query)) { if ($start_path == "") { $grouppath = $categories['categories_id']; } else { $grouppath = $categories['categories_id']; // $grouppath = $start_path . "_" . $categories['categories_id']; } $cPath_new = vam_category_link($grouppath,$categories['categories_name']); $categories_string = vam_href_link(FILENAME_DEFAULT, $cPath_new); $totalitemsincategory = vam_count_products_in_category($categories['categories_id']); $count_string = ''; if ((SHOW_COUNTS == 'true') && ($totalitemsincategory > 0) ){ $count_string = ' (' . $totalitemsincategory . ')'; } if (cssMenu_ShowCategory($cssMenuConfig['ShowEmptyCategories'], $totalitemsincategory)) { $returnval .= "<li><a href='".$categories_string."'>".$categories['categories_name'].$count_string."</a>\n"; } if ( vam_has_category_subcategories($categories['categories_id'] ) ) { $returnval .= PrintSubMenus( $categories['categories_id'], $languageID, $start_path ); if ( $cssMenuConfig['includeProducts'] ) { $returnval .= PrintProducts($categories['categories_id'],$categories_string, false, $languageID); } } else { if ( $cssMenuConfig['includeProducts'] ) { $returnval .= PrintProducts($categories['categories_id'],$categories_string, true, $languageID); } } if (cssMenu_ShowCategory($cssMenuConfig['ShowEmptyCategories'], $totalitemsincategory)) { $returnval .= "</li>"; } } if ( !$cssMenuConfig['includeProducts'] ) { $returnval .= "</ul>"; } if ($parentID == 0) $returnval .= "</div>"; return $returnval; } function cssMenu_ShowCategory( $switch, $products) { if ( $switch == 1 ) { return true; } else { if ($products > 0) { return true; } else { return false; } } } $box->assign('BOX_CONTENT', PrintSubMenus( 0, $_SESSION['languages_id'], '' )); } // set cache ID if (!$cache) { $box_categories = $box->fetch(CURRENT_TEMPLATE.'/boxes/box_categories.html'); } else { $box_categories = $box->fetch(CURRENT_TEMPLATE.'/boxes/box_categories.html', $cache_id); } $vamTemplate->assign('box_CATEGORIES', $box_categories); ?> Спасибо. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 26 августа, 2013 Жалоба Share Опубликовано 26 августа, 2013 Можно посмотреть как в стадартном меню выделяется категория и сделать аналогично в Вашем меню. Ссылка на сообщение Поделиться на другие сайты
serg525 0 Опубликовано 26 августа, 2013 Автор Жалоба Share Опубликовано 26 августа, 2013 В стандартном меню активный пункт выделяется слассом Current Этот класс формируется не в оригинальном файле templates/имя_шаблона/source/boxes/categories.php а в файле templates/имя_шаблона/source/inc/vam_show_category.inc.php Вот его код: <?php function vam_show_category($counter) { global $foo, $categories_string, $id; $categories_string .= '<li class="CatLevel'.$foo[$counter]['level'].''; if ( ($id) && (in_array($counter, $id)) ) { $categories_string .= ' Current">'; } else { $categories_string .= '">'; } $categories_string .= '<a href="'; $cPath_new=vam_category_link($counter,$foo[$counter]['name']); $categories_string .= vam_href_link(FILENAME_DEFAULT, $cPath_new); $categories_string .= '">'; // display category name $categories_string .= $foo[$counter]['name']; if (SHOW_COUNTS == 'true') { $products_in_category = vam_count_products_in_category($counter); if ($products_in_category > 0) { $categories_string .= ' (' . $products_in_category . ')'; } } $categories_string .= '</a></li>'; if ($foo[$counter]['next_id']) { vam_show_category($foo[$counter]['next_id']); } else { $categories_string .= ''; } } ?> Но в новом файле categories.php из модуля CSS-меню ссылка на файл vam_show_category.inc.php закомментирована. Не силен в PHP и не знаю, как решить эту проблему. Т.е как засунуть условие, чтобы текуший пункт меню помечался классом Current Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 26 августа, 2013 Жалоба Share Опубликовано 26 августа, 2013 Может попробовать поменять: $returnval .= "<li><a href='".$categories_string."'>".$categories['categories_name'].$count_string."</a>\n"; на что-то типа: $returnval .= "<li><a ".(($_GET['cat'] == $categories['categories_id']) ? "class=current' " : "")."href='".$categories_string."'>".$categories['categories_name].$count_string."</a>\n"; Ссылка на сообщение Поделиться на другие сайты
serg525 0 Опубликовано 26 августа, 2013 Автор Жалоба Share Опубликовано 26 августа, 2013 Спасибо. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 27 августа, 2013 Жалоба Share Опубликовано 27 августа, 2013 Не за что, надеюсь, что помогло, хотя код не проверял. Но, по идее, должно работать. Ссылка на сообщение Поделиться на другие сайты
serg525 0 Опубликовано 1 сентября, 2013 Автор Жалоба Share Опубликовано 1 сентября, 2013 Да, работает. Спасибо! Но чтобы класс "вешался" на тег <li> (а не на тег <a href=.....) я немного изменил на это: $returnval .= "<li ".(($_GET['cat'] == $categories['categories_id']) ? "class=current'" : "")."><a href='".$categories_string."'>".$categories['categories_name].$count_string."</a>\n"; Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 1 сентября, 2013 Жалоба Share Опубликовано 1 сентября, 2013 Не за что. Хорошо, что разобрались. Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения