Custom menu items/ru
From Documentation of ABK-Soft Products
| Languages: |
English Русский |
Contents |
[edit] Главное меню в шаблоне
[edit] Пример файла
Главное меню скрипта находится в файле
_themes/main/template_name/_header.html
К примеру для шаблона new_age главное меню выглядит вот так:
<div class="menu">
<ul>
<!-- begin_menu_home --><li><a href="{url_main}home.php">{l_menu_home}</a></li><!-- end_menu_home -->
<!-- begin_menu_home_active --><li class="active"><a href="{url_main}home.php">{l_menu_home}</a></li><!-- end_menu_home_active -->
<!-- begin_menu_users --><li><a href="{url_main}users_online.php">{l_menu_whos_online}</a></li><!-- end_menu_users -->
<!-- begin_menu_users_active --><li class="active"><a href="{url_main}users_online.php">{l_menu_whos_online}</a></li><!-- end_menu_users_active -->
<!-- begin_menu_search --><li><a href="{url_main}search.php">{l_menu_search}</a></li><!-- end_menu_search -->
<!-- begin_menu_search_active --><li class="active"><a href="{url_main}search.php">{l_menu_search}</a></li><!-- end_menu_search_active -->
<!-- begin_menu_users_hon --><li><a href="{url_main}users_hon.php">{l_menu_rating}</a></li><!-- end_menu_users_hon -->
<!-- begin_menu_users_hon_active --><li class="active"><a href="{url_main}users_hon.php">{l_menu_rating}</a></li><!-- end_menu_users_hon_active -->
<!-- begin_menu_top5 --><li><a href="{url_main}top5.php">{l_menu_top5}</a></li><!-- end_menu_top5 -->
<!-- begin_menu_top5_active --><li class="active"><a href="{url_main}top5.php">{l_menu_top5}</a></li><!-- end_menu_top5_active -->
<!-- begin_menu_gallery --><li><a href="{url_main}gallery_index.php">{l_menu_gallery}</a></li><!-- end_menu_gallery -->
<!-- begin_menu_gallery_active --><li class="active"><a href="{url_main}gallery_index.php">{l_menu_gallery}</a></li><!-- end_menu_gallery_active -->
<!-- begin_menu_videogallery --><li><a href="{url_main}videogallery_video_view.php">{l_menu_videogallery}</a></li><!-- end_menu_videogallery -->
<!-- begin_menu_videogallery_active --><li class="active"><a href="{url_main}videogallery_video_view.php">{l_menu_videogallery}</a></li><!-- end_menu_videogallery_active -->
<!-- begin_menu_my --><li><a href="{url_main}my_friends.php">{l_menu_my}</a></li><!-- end_menu_my -->
<!-- begin_menu_my_active --><li class="active"><a href="{url_main}my_friends.php">{l_menu_my}</a></li><!-- end_menu_my_active -->
<!-- begin_menu_mail --><li><a href="{url_main}mail.php">{l_menu_messages}</a></li><!-- end_menu_mail -->
<!-- begin_menu_mail_active --><li class="active"><a href="{url_main}mail.php">{l_menu_messages}</a></li><!-- end_menu_mail_active -->
<!-- begin_menu_chat --><li><a href="{url_main}chat.php">{l_menu_chat}</a></li><!-- end_menu_chat -->
<!-- begin_menu_chat_active --><li class="active"><a href="{url_main}chat.php">{l_menu_chat}</a></li><!-- end_menu_chat_active -->
<!-- begin_menu_flashchat --><li><a href="{url_main}flashchat.php">{l_menu_flashchat}</a></li><!-- end_menu_flashchat -->
<!-- begin_menu_flashchat_active --><li class="active"><a href="{url_main}flashchat.php">{l_menu_flashchat}</a></li><!-- end_menu_flashchat_active -->
<!-- begin_menu_blogs --><li><a href="{url_main}blogs.php">{l_menu_blogs}</a></li><!-- end_menu_blogs -->
<!-- begin_menu_blogs_active --><li class="active"><a href="{url_main}blogs.php">{l_menu_blogs}</a></li><!-- end_menu_blogs_active -->
<!-- begin_menu_forum --><li><a href="{url_main}forum.php">{l_menu_forum}</a></li><!-- end_menu_forum -->
<!-- begin_menu_forum_active --><li class="active"><a href="{url_main}forum.php">{l_menu_forum}</a></li><!-- end_menu_forum_active -->
<!-- begin_menu_vacations --><li><a href="{url_main}vacations.php">{l_menu_vacations}</a></li><!-- end_menu_vacations -->
<!-- begin_menu_vacations_active --><li class="active"><a href="{url_main}vacations.php">{l_menu_vacations}</a></li><!-- end_menu_vacations_active -->
<!-- begin_menu_adv --><li><a href="{url_main}adv.php">{l_menu_adv_dating}</a></li><!-- end_menu_adv -->
<!-- begin_menu_adv_active --><li class="active"><a href="{url_main}adv.php">{l_menu_adv_dating}</a></li><!-- end_menu_adv_active -->
<!-- begin_menu_upgrade --><li><a href="{url_main}upgrade.php">{l_menu_upgrade}</a></li><!-- end_menu_upgrade -->
<!-- begin_menu_upgrade_active --><li class="active"><a href="{url_main}upgrade.php">{l_menu_upgrade}</a></li><!-- end_menu_upgrade_active -->
<!-- begin_menu_profile --><li><a href="{url_main}profile.php">{l_menu_my_account}</a></li><!-- end_menu_profile -->
<!-- begin_menu_profile_active --><li class="active"><a href="{url_main}profile.php">{l_menu_my_account}</a></li><!-- end_menu_profile_active -->
</ul>
</div>
[edit] Описание конкретного пункта в шаблоне
Рассмотрим подробнее один из пунктов, например пункт для поиска
<!-- begin_menu_search --><li><a href="{url_main}search.php">{l_menu_search}</a></li><!-- end_menu_search -->
<!-- begin_menu_search_active --><li class="active"><a href="{url_main}search.php">{l_menu_search}</a></li><!-- end_menu_search_active -->
Он делится на два блока, menu_search и menu_search_active. Первый из блоков парсится когда вы находитесь не на страницах поиска, второй наоборот когда вы находитесь на этих страницах, то есть на странице search.php, либо на страницах начинающихся c префикса 'search_' - search_*.php (search_advaced.php, search_results.php и т.д.)
О использующихся переменных {url_main}, {l_menu_search} вы можете посмотреть в разделах о шаблонах Templates и языках Languages
[edit] Класс обработки
Код обработки главного меню содержится в классе CHeader из файла _include/current/common.php. Это класс-обработчик шаблона _header.html. За генерацию меню отвечает этот код в методе parseBlock(&$html) этого класса:
$pages = array("index", "adv", "home", "users_hon", "top5", "users", "search", "mail", "profile", "blogs", "forum", "chat", "flashchat", "news", "gallery", "videogallery", "my", "vacations");
foreach ($pages as $v)
{
$next = false;
if ($v == "chat" and $g['options']['chat'] == "N") $next = true;
elseif ($v == "flashchat" and $g['options']['flashchat'] == "N") $next = true;
elseif ($v == "top5" and isset($g['options']['top5']) and $g['options']['top5'] == "N") $next = true;
elseif ($v == "forum" and isset($g['options']['forum']) and $g['options']['forum'] == "N") $next = true;
elseif ($v == "blogs" and isset($g['options']['blogs']) and $g['options']['blogs'] == "N") $next = true;
elseif ($v == "gallery" and isset($g['options']['gallery']) and $g['options']['gallery'] == "N") $next = true;
elseif ($v == "users_hon" and isset($g['options']['rating']) and $g['options']['rating'] == "N") $next = true;
elseif ($v == "vacations" and isset($g['options']['vacations']) and $g['options']['vacations'] == "N") $next = true;
elseif ($v == "videogallery" and isset($g['options']['videogallery']) and $g['options']['videogallery'] == "N") $next = true;
if (!$next)
{
if ($p == "users_hon.php") $pa[0] = "users_hon";
elseif ($p == "bookmark_friends.php") $pa[0] = "my";
else
{
$tmp = explode(".", $p);
$pa = explode("_", $tmp[0]);
}
if ($v == $pa[0]) $html->parse("menu_" . $v . "_active");
else $html->parse("menu_" . $v . "");
}
}
[edit] Добавление элемента
Здесь определен массив $pages с пунктами меню. Создать свой элемент меню вы можете добавив в него элемент, например "custom". Далее в в _header.html необходимо добавить блок отвечающий за этот элемент меню:
<!-- begin_menu_custom --><li><a href="{url_main}custom.php">{l_menu_search}</a></li><!-- end_menu_custom -->
<!-- begin_menu_custom_active --><li class="active"><a href="{url_main}custom.php">{l_menu_search}</a></li><!-- end_menu_custom_active -->
Теперь на страницах custom.php, так же на всех страницах начинающихся с префикса custom_ (например custom_my_page.php) будет парситься блок menu_custom_active, на других же menu_custom.