FAQ по созданию кнопки в главном меню

Автор Mr. Anviss, 10 октября 2008, 20:20:33

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

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

digger®

Цитата: remixsamara от 17 июля 2023, 14:11:52Доброго времени суток!
Помимо приветствия в адрес МИРа, у меня в шаблоне отображается ещё и строчка навигации "Имя сайта » Форум". Подскажите, как её можно убрать?

https://remix.is-great.org/index.php?action=musical

https://www.simplemachines.ru/index.php?topic=8568.0
SSI.php загружать не надо, все остальное актуально при создании своей страницы внутри форума.

$context['linktree'] = [];уберет хлебные крошки.
 

remixsamara

#151
А применительно к версии 2.1, как добавить ещё и индивидуальную иконку к новому созданному пункту меню?

------

Сам спросил, - сам отвечу)

В исходные строчки:
'site' => array(
 'title' => $txt['site'],
 'href' => $scripturl . '?action=site',
 'show' => true,
 'sub_buttons' => array(
 ),
 ),

Нужно добавить параметр " 'icon' => 'site.png', "

'site' => array(
 'title' => $txt['site'],
 'href' => $scripturl . '?action=site',
 'show' => true,
 'icon' => 'site.png',
 'sub_buttons' => array(
 ),
 ),

Файл " site.png " должен лежать в папке "Themes\default\images\"



remixsamara

Так. Похоже, я рано радовался)

В Subs.php в переменной $buttons = array( прописана такая конструкция:

     'musical' => array(
'title' => $txt['musical'],
'href' => $scripturl . '?action=musical',
'show' =>  true,
'icon' => 'nota.png',
'sub_buttons' => array(
            'notrdam' => array(
'title' => $txt['notrdam'],
'href' => $scripturl . '?action=musical2',
'show' => true,
),
            'mozart' => array(
'title' => $txt['mozart'],
'href' => $scripturl . '?action=musical3',
'show' => true,
),
            'montecristo' => array(
'title' => $txt['montecristo'],
'href' => $scripturl . '?action=musical4',
'show' => true,
),
            'snowqueen' => array(
'title' => $txt['snowqueen'],
'href' => $scripturl . '?action=musical11',
'show' => true,
'is_last' => true,
),
),
),

При переходе на основной пункт меню он, как и положено, подсвечивается активным. А при открытии вложенных страниц активным горит пункт "Главная". Подскажите, где я накосячил?

https://remix.theatre.ru/index.php?action=musical

o-o-o

Цитата: remixsamara от 21 июля 2023, 14:14:28Подскажите, где я накосячил?
Не знаю ) Править  ручками Sub.php я бы не стал. Потому что после правок вручную человек уже не на версии допустим 2.1.4 , а на какой то своей индивидуальной, которая неизвестно как будет переходить на новую версию , неизвестно как с ней будут интегрироваться моды и т.д.
 
Но может это только я так смотрю на вещи... Когда я делал себе тему - сделал копию дефолта с новым именем, и уже ее правил, а обычный дефолт не трогал и оставил доступным, на всякий случай. Когда делал кнопку для редактора сообщений - сделал себе мод и установил его штатным порядком. Ну а пхп самого форума я править пока не хочу по указанным причинам...
 
А насчет кнопок в меню - тема начата в 2008 , Вы цитировали инфу ок. 15-летней давности. С тех пор много воды утекло. Я пару недель назад видел и устанавливал мод, который добавлает кнопки в меню. Правда там без иконок, но я использовал эмоджи в тексте на кнопке. (Позже я отказался и от экстра кнопки и от всех иконок на кнопках, а линк показал в своей нестандартной теме радом с линками на списки непрочитанного. Ну и мод тот деинсталировал за ненадобностью.) Вот этот мод:
https://custom.simplemachines.org/index.php?mod=3674
Plenus venter non studet libenter

remixsamara

Функционал любого мода отграничен возможностями, которые вложил в него создатель. Конечно, если бы был такой мод, реализующий мои хотелки, я бы не лез править исходники вручную. Указанный мод я пробовал, - не подсвечивает он активный пункт меню и возможности сделать вложенные пункты подменю я там тоже не нашёл. Может, плохо искал...)

В общем, приходится ковырять исходники методом "научного тыка". Я вот уже понял, в чём ошибка. Подпункты нужно было оформлять не в виде отдельных файлов. 
Как-то так: " ?action=musical;sa=musical2 "
Осталось только понять, как и где это реализуется... )  Пока копаем дальше...

o-o-o

Цитата: remixsamara от 21 июля 2023, 20:51:13Функционал любого мода отграничен возможностями, которые вложил в него создатель. Конечно, если бы был такой мод, реализующий мои хотелки, я бы не лез править исходники вручную. Указанный мод я пробовал, - не подсвечивает он активный пункт меню и возможности сделать вложенные пункты подменю я там тоже не нашёл. Может, плохо искал...)

В общем, приходится ковырять исходники методом "научного тыка". Я вот уже понял, в чём ошибка. Подпункты нужно было оформлять не в виде отдельных файлов.
Как-то так: " ?action=musical;sa=musical2 "
Осталось только понять, как и где это реализуется... )  Пока копаем дальше...

Если Вы поглядите почему пункт меню выглядит подсвеченным, то можно заметить что это из-за стиля `active` . Дальше, если у вас тема стандартная, то этот стить в ней ставится в index.template.php строка 565:

Цитировать<li class="button_', $act, '', !empty($button['sub_buttons']) ? ' subsections"' : '"', '>
                     <a', $button['active_button'] ? ' class="active"' : '', ' href="', $button['href'], '"', isset($button['target']) ? ' target="' . $button['target'] . '"' : '', isset($button['onclick']) ? ' onclick="' . $button['onclick'] . '"' : '', '>
                        ', $button['icon'], '<span class="textmenu">', $button['title'], !empty($button['amt']) ? ' <span class="amt">' . $button['amt'] . '</span>' : '', '</span>
                     </a>';


И зависит от $button['active_button']. И в Sub.php Вы можете найти где это ставится:

Цитироватьif (isset($context['menu_buttons'][$current_action]))
      $context['menu_buttons'][$current_action]['active_button'] = true;

То есть Вам надо установить $current_action в свое нужное значение musical где-то в ходе setupMenuContext(). Там есть где дефолтное значение ставится в home -

Цитировать// Figure out which action we are doing so we can set the active tab.
   // Default to home.
   $current_action = 'home';
где то после этого должно быть переставлено на musuical.

Только... опять же, разве это надежный путь, менять Subs.php? Вот есть тот мод, он MIT, значит можно было бы в нем, в моде поменять, если он не имеет всей той функциональности которая нужна. А менять сам Subs.php - значит уже переходить на индивидуальный вариант движка, надо ли оно... ну конечно как хотите...

Plenus venter non studet libenter