Доработка главного меню и кнопки "Написать"

Не знаю как остальным, а меня очень напрягала в шаблоне «New» одна деталь: когда нажимаешь кнопку «Написать», она сама пропадает, а в главном меню активизируется пункт «Блоги». Меня это очень сильно путало в навигации. Гораздо логичнее было бы сделать так, чтобы под создание и просмотр своих топиков и блогов был отдельный раздел в меню.

Реализовал я это следующим образом:

1) В файле /templates/skin/new/header_nav.tpl вырезаем кусок
<div class="write">
	<a href="{$DIR_WEB_ROOT}/{$ROUTE_PAGE_TOPIC}/add/" alt="{$aLang.topic_create}" title="{$aLang.topic_create}" class="button small">
	<span><em>{$aLang.topic_create}</em></span>
	</a>
</div>
и сохраняем. Всё, теперь кнопки «написать» нет.


2) Идём в файл /templates/skin/new/header_top.tpl, находим там в районе 25 строки
<ul class="nav-main">
и между любыми из <ли>, куда нам надо, добавляем
{if $oUserCurrent}
<li {if $sMenuHeadItemSelect=='write'}class="active"{/if}><a href="{$DIR_WEB_ROOT}/{$ROUTE_PAGE_TOPIC}/add/" alt="{$aLang.topic_create}" title="{$aLang.topic_create}">{$aLang.topic_create}</a></li>
{/if}

Этим самым мы добавляем кнопку «Написать» в главное меню + она отображается всегда для залогиненных юзеров. Но сейчас этот пункт меню никогда не является активным, а активным по-прежнему будет пункт «Блоги».


3) Идём в файл /classes/actions/ActionTopic.class.php, находим 28 строку:
protected $sMenuHeadItemSelect='blog';
и заменяем на
protected $sMenuHeadItemSelect='write';

Теперь у нас пункт «Написать» активен при создании топика:


Но при создании топика-опроса или топика-ссылки снова активными станут блоги. Поэтому:


4) делаем тоже самое в файлах /classes/actions/ActionLink.class.php и /classes/actions/ActionQuestion.class.php, то есть в 28-й строке меняем

protected $sMenuHeadItemSelect='blog';
на
protected $sMenuHeadItemSelect='write';


Всё, теперь как надо:


Правда, при переходе по ссылке «Создать блог» активным станет пункт «Блоги», но на мой взгляд так логичнее (и к тому же я не разобрался как это сделать=)).

Зачем всё это надо? Может быть, здесь это не так заметно, но у себя на сайте я таким образом сделал навигацию значительно понятнее:


Кстати, если кто-то просто хочет зафиксировать кнопку «Написать», чтобы она всегда была на своём месте, а не пропадала внезапно, просто в файле /templates/skin/new/header_nav.tpl в 4-й строке замените
{if $oUserCurrent and ($sAction==$ROUTE_PAGE_BLOG or $sAction==$ROUTE_PAGE_INDEX or $sAction==$ROUTE_PAGE_NEW or $sAction==$ROUTE_PAGE_PERSONAL_BLOG)}

на
{if $oUserCurrent}


Поправьте, если я где-то сделал неправильно. Я не программист, и всё делал, просто опираясь на логику. Надеюсь, я кому-то помогу=)

6 комментариев

avatar
Просмотрел диагонально, но на мой скромный взгляд цепочка «блоги-люди-НАПИСАТЬ-...» мягко говоря нелогична. Один элемент явно не на своём месте.

avatar
А «блоги-люди-о проекте» логично? :)

Я например ссылку «Написать» со старта также переместил в главное меню. Вот так вот захотелось :)
avatar
На мой взгляд, главное меню оно на то и главное, что в нём собраны главные пункты, «высшие ступени иерархии меню». Порядок можно же поменять, например «написать» сделать первым и с помощью css его выделить.
avatar
Сделал по образцу. Спасибо. Все получилось.
Только:
а) «написать» с маленькой буквы;
б) не подчеркивается как линк.

Можете подсказать, как исправить? :)
avatar
а) Гоу в templates/language/russian.php

'topic_create' => 'Написать'
avatar
а) Гоу в templates/language/russian.php

'topic_create' => 'Написать'

б) Гоу в header_top.tpl, убрать хвост вида class=«button small» из <a href="{router page='topic'}add/" alt="{$aLang.topic_create}" title="{$aLang.topic_create}" class=«button small»>
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.