Работая над одним сайтом столкнулся с задачей, что в пункты меню сайта (в названия ссылок) нужно вставлять перенос строки (тег br), чтобы ссылки с длинным названием можно было сделать более компактными. Поискав в интернете я нашел немного ответов на свой вопрос, поэтому решил сделать это вручную, а чтобы не забыть решение этой задачи, записал пост на свой блог.
Итак. Меню сайта в шаблон вставляется модулем «Меню», его шаблоны я и решил изменить. Это может сделать даже новичок, который особо не разбирается в php.
Порядок действий (для joomla 2.5.3):
1) Идем в папку джумлы по адресу /modules/mod_menu/tmpl
2) Открываем файл default_url.php
3) В 28, 32 и 37 строках есть такой кусок кода:
1 |
<?php echo $linktype; ?> |
4) Заменяем его на
1 |
<?php echo str_replace('[br]', '<br/>', $linktype); ?> |
5) Сохраняем файл. Готово!
Теперь, чтобы вставить перенос строки в пункт меню joomla в названии ссылки в нужном месте вставляем [br] (Вот примеры: скриншот 1, скриншот 2), и этот бб-код будет превращаться в тег <br/>
внутри ссылки.
UPD: Также в папке /modules/mod_menu/tmpl есть другие файлы. Если у Вас перенос строки не вставляется, то попробуйте изменить файл default_component.php также заменив там
1 |
<?php echo $linktype; ?> |
на код
1 |
<?php echo str_replace('[br]', '<br/>', $linktype); ?> |
Надеюсь статья поможет, тем кто искал ответ на вопрос как вставить тег br в ссылку. Если остались вопросы, форма комментариев ждет Вас 🙂
Если вы вебмастер и хотите пообщаться с другими создателями сайтов, у Вас есть сложности, вопросы и нужна помощь более опытных мастеров посетите Форум WEB мастеров — здесь можно пообщаться, найти или оказать помощь, обсудить насущные вебмастерские вопросы.
<<<Теперь, чтобы вставить перенос строки в пункт меню joomla в названии ссылки в нужном месте вставляем [br], и этот бб-код будет превращаться в тег
внутри ссылки.>>> Где именно вставлять [br]? Заранее мпасибо
[br] вставлять нужно в название ссылки. Вставил скриншоты в запись, посмотрите.
Добрый день!
Вставил все по инструкции. Пункт меню выходит на экран в таком же виде, без переноса по строкам
Вот таким образом:
ОБРАЗОВАТЕЛЬНЫЕ [BR] ПРОГРАММЫ
Видимо не везде вставили. Там несколько мест где нужно поменять код.
В трех местах? 🙂 ставил по инструкции. По крайней мере на копи-пейст меня хватает — руки не подводят 🙂
Использую шаблон, сделанный своими руками, но меню используются родные Джумлы. Уже голову сломал :(((
А внутри шаблона сайта нет папок, которые переопределяли бы шаблон модуля меню?
Нет, только /CSS И /Images
Уважаемый автор, отличная идея, но, НЕ ВЫХОДИТ..
1) Joomla 2.5.7, в файле: /modules/mod_menu/tmpl/default_url.php
нахожу:
, Вы правы, они на 28, 32 и 37 строках,
2) заменяю на:
<?php echo str_replace('[br]', '’, $linktype); ?>
Более совпадений нет, сохраняю, перегружаю сервер и как в комменте выше, пункт меню выходит Вот таким образом:
ОБРАЗОВАТЕЛЬНЫЕ [BR] ПРОГРАММЫ
Подскажите, что не так? плиз.
Проверьте все повторно. У меня заработало. Может Вы что-то где-то упустили.
Все сделал почти по инструкции, но еще нужно было произвести аналогичную замену в файле:
default_component.php
что в той же директории.
Спасибо Вам большое за труды!!!
Вам спасибо за дополнение решения проблемы.
НЕ работает однако ваш способ, вставил код в во все места так сказать, но все равно видно [br]… куда копать??
Прочитайте комментарии. Тут было сообщение о том, что есть и другие файлы в которых возможно потребуется замена. В конце поста про это сказано.
Спасибо большое за ответ ну, а другие файлы это какие??? и где их искать, в той папке я заменил все что можно
Прочитайте то, что начинается со слов UPD. Используя тот же Notepad++ можете внутри всей папки произвести поиск нужного слова, чтобы найти совпадения и заменить их. Больше ничем не смогу помочь, думайте головой и будьте внимательнее. Не думаю, что у Вас какая-то особая версия Joomla, чтобы описанные действия не сработали.
А что скажете в плане SEO? Как к этому [br] отнесутся поисковики при наличии ключей в названиях пунктов?
Этот [br] в исходной коде превращается в обычный тег переноса строки. Как отнесуться? )) Отнесуться также как и к любому тегу переноса строки, так как их на сайте много. Ваш вопрос в целом странный.
Работает на Joomla 2.5.9. Спасибо
Спасибо!!!! огромнейшее!!!! за ваш пост, решение работает (иначе и быть не должно), версия Joomla 2.5.9, правда пришлось делать замену в 13 файлах, notepad++ помог.
в 8 файлах) 4 из них для мобильной версии. остальные оказались дублированными.
Спасибо! Все работает!
Спасибо! Работает на Joomla 3.1.1.
С первого раза не получиось, но почитав внимательно еще раз у меня все получилось. Читайте внимательно! Нужно изменить два файла.
У меня все получилось. Спасибо!
А есть возможность уменьшить текст после переноса строки? или вообще хоть как то его редактировать минуя 1ю строку?
Разобрался, просто добавил еще bb код
<?php echo str_replace(array('[br]','[small]'),array( '’,»),$linktype); ?>
оооо, как я вам благодарен. Не описать словами
Просто, но со вкусом. И никаких сторонних компонентов не требуется. Спасибо
Громадное спасибо)
Большое спасибо!!! все получилось!!!!
В Joomla 3.3 не работает, поменял в обоих файлах, не работает
Спасибо, на joomla 3.4.4 всё работает!
Круто — так понятно разжевали, спасибо за такое короткое решение))) надо тоже учить php))
Привет всем! Сегодня тоже парился с переносом строк в меню и вот что вышло:
Откройте файл modules\mod_menu\tmpl\default_component.php и поменяйте в строке 26
Код
на
Код
<?php echo str_replace('//', '’, $linktype); ?>
// — это разделитель строки, можно два пробела.
Перенос работает, переносов хоть сколько, но как их сделать разными классами?
Вот чего наваял: вместо
$menuitem = explode(» «,$linktype);
$menuitemclass = 0;
foreach ($menuitem as $val)
{
$menuitemclass = $menuitemclass + 1;
echo ‘‘.$val.’‘;
}
так добавляется класс menuitem+1 к каждой строчке меню.
А в CSS .menuitem1 {…} .menuitem2 {…} и тд.
Спасибо большое!!!!!
На joomla 3.5.0 получилось через файл
/modules/mod_menu/tmpl/default_component.php
и в нем изменил строчки 31 и 35.
Все получилось!!!!!!!!!!!