Добавление кнопок в главное меню Coopermine Gallery

Автор rewue, 10 января 2007, 23:30:41

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

rewue

Привет всем.
Очень часто при установке галереи возникает потребность добавить несколько кнопок в главное меню. Вы конечно можете возразить -в админке есть такая возможность. Согласен, есть, но, во-первых, там можно добавить только один пункт, а во-вторых этот пункт будет размещатсья в ПОДменю а не в главном.
Итак что нужно для этого сделать. Для начала нам понадобиться два файла
1. /include/theme.inc.php
2. /themes/yourmaintheme/theme.php

Первый отвечает за элементы которые отображаются в темах, второй отвечает непосредственно за вывод этих эелементов. (хотя если честно можно и обойтись только первым, но это совсем другая история). В моем случае использовалась тема без скрытых элементов (то есть не появлялось никакх меню при наведении на кнопки).
Поэтому проделалось вот что. В файле /include/theme.inc.php отыскиваем массив который описывает собственно кнопки меню.
Это приблизительно 1336 строка
Цитировать$param = array(
и дописывает несколько элементов массива - они и будут у нас отвечать за кнопки. В моем случае создавалось две кнопки - САЙТ и ФОРУМ.
Цитировать$param = array(
      '{SITE_TGT}' => "http://_www.knopka.co.uk", //add rewue
        '{SITE_TITLE}' => $lang_main_menu['site_title'],  //add rewue
        '{SITE_LNK}' => $lang_main_menu['site_lnk'], //add rewue
      '{FORUM_TGT}' => "http://_www.knopka.co.uk/forum", //add rewue
        '{FORUM_TITLE}' => $lang_main_menu['forum_title'],  //add rewue
        '{FORUM_LNK}' => $lang_main_menu['forum_lnk'], //add rewue
        '{HOME_TGT}' => $CONFIG['home_target'],
        '{HOME_TITLE}' => $lang_main_menu['home_title'],
        '{HOME_LNK}' => $lang_main_menu['home_lnk'],
те элементы которые я добавлял помечены комментарием. теперь поясню что сделалось

   '{SITE_TGT}' - куда ведет ссылка
        '{SITE_TITLE}' - текст всплывающей подсказки, берется из файла перевода
        '{SITE_LNK}' - текст самой ссылки (что увидит пользователь)
   
Теперь не забыть бы добавить в функцию создания кнопок новые кнопки - а вдруг пользовательзахочет перейти на другую тему!
Идем в 121 строку и дописываем (в коде помечено как //new element)
Цитировать// HTML template for template sys_menu buttons
  if (!isset($sys_menu_buttons)) { //{THEMES}
    // {HREF_LNK}{HREF_TITLE}{HREF_TGT}{BLOCK_ID}{SPACER}
   addbutton($sys_menu_buttons, 'SITE_LNK','SITE_TITLE','SITE_TGT','site', $template_sys_menu_spacer);//new element
   addbutton($sys_menu_buttons, 'FORUM_LNK','FORUM_TITLE','FORUM_TGT','forum', $template_sys_menu_spacer);//new element
   addbutton($sys_menu_buttons,'{HOME_LNK}','{HOME_TITLE}','{HOME_TGT}','home',$template_sys_menu_spacer);

После того как нужные элементы добавлены -нам необходимоих прописать в теме. Можно найти это описание и в этом же файле но для отдельной темы надежнее в соответсвующем /themes/yourmaintheme/theme.php

Находим где расположено системное меню
Цитировать// HTML template for sys menu
и внутри дописываем необходимые кнопки - я опустил для наглядности свою разметку, оставил только кнопки
Цитировать// HTML template for sys menu
$template_sys_menu = <<<EOT

...

<!-- BEGIN site -->
   <li><a href="{SITE_TGT}" target="_blank" title="{SITE_TITLE}">{SITE_LNK}</a></li>
<!-- END site -->
<!-- BEGIN forum -->
   <li><a href="{FORUM_TGT}" target="_blank" title="{FORUM_TITLE}">{FORUM_LNK}</a></li>
<!-- END forum -->

...


Вот в принципе и все, если не считать самой рутинной работы. В языковых файлах нужно добавить недостающие стринги
Поэтому открываем файл нужной локализации ищем строку №110
и добавляем в массив необходимые строки
Цитировать
// ------------------------------------------------------------------------- //
// File theme.php
// ------------------------------------------------------------------------- //

$lang_main_menu = array(
'site_title' => 'Перейти на сайт',
'site_lnk' => 'Сайт',
'forum_title' => 'Перейти на форум',
'forum_lnk' => 'Форум',

Пример добавления я привел для русской локализации, если же вы хотите дать возможность юзерам устанавливать свой язык интерфейса - эту операцию придется проделать СО ВСЕМИ ФАЙЛАМИ ЛОКАЛИЗАЦИИ, для каждого написать на соответствующем языке.
Ну вот как это выглядит на готовой галерее. Как делалась эта тема - описание еще будет
... потому что мы живем на последнем, седьмом, слое Сумрака...