Custom menu items/ru

From Documentation of ABK-Soft Products

Jump to: navigation, search

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.

Personal tools