LiveInternetMail.ru
Форум русской поддержки Joomla!® CMS
27.05.2012, 04:20:27 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 1.7 FAQ Joomla 1.5 FAQ Joomla 1.0 FAQ Правила форума Новости Joomla Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор Тема: Меню в 2 строчки  (Прочитано 2438 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
abk400
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 4


« : 12.03.2011, 20:03:02 »

Добрый вечер, использую стандартный модуль вывода меню
вот собственно результат

как сделать что бы "Экскурсии по Киеву"  были в 2 строчки?

Экскурсии
 по Киеву

Подскажите пожалуйста Sad
Записан
asomnia
Давно я тут
****

Репутация: +11/-0
Offline Offline

Пол: Женский
Сообщений: 208



« Ответ #1 : 12.04.2011, 16:39:34 »

а каким образом вы выводите меню ?

таблицы, списки ?
Записан
CTPZ
Давно я тут
****

Репутация: +20/-5
Offline Offline

Пол: Мужской
Сообщений: 345



« Ответ #2 : 12.04.2011, 21:19:28 »

это можно например через базу сделать
Записан
Efanych
Группа развития
*****

Репутация: +344/-3
Offline Offline

Пол: Мужской
Сообщений: 3339



« Ответ #3 : 12.04.2011, 21:35:51 »

Цитировать
как сделать что бы "Экскурсии по Киеву"  были в 2 строчки?
Ограничить ширину, чтоб 2 слова не влезли.
 width:150px; к примеру.
Записан
Shustry
Группа развития
*****

Репутация: +201/-0
Offline Offline

Пол: Мужской
Сообщений: 1682


Добрый зайка


« Ответ #4 : 12.04.2011, 21:58:34 »

По-хорошему, надо:
1. вынести хелпер в папку с шаблоном
2. написать регулярное выражение, которое бы делило записи типа "Экскурсии|по Киеву" на два тэга, до символа | (просто для примера, можете другой какой символ заюзать) и после.
3. в пунктах меню так и писать, с разделителем прям в названии.
Первый пункт не принципиален.
Записан
CTPZ
Давно я тут
****

Репутация: +20/-5
Offline Offline

Пол: Мужской
Сообщений: 345



« Ответ #5 : 13.04.2011, 22:48:39 »

все горахдо проще. спроси в личку отвечу
Записан
Shustry
Группа развития
*****

Репутация: +201/-0
Offline Offline

Пол: Мужской
Сообщений: 1682


Добрый зайка


« Ответ #6 : 26.04.2011, 12:29:08 »

Мне интересно как проще сделать. Отпиши пожалуйста сюда.
Продублировал в личку.
p.s. Без установки сторонних разрешений и хаков конечно. Если работать только в папке темплейта я лучшего способа чем предложил пока не знаю. Буду очень признателен за более простое решение.
Записан
dynamit
Практически профи
*******

Репутация: +195/-0
Offline Offline

Пол: Мужской
Сообщений: 1645


how low?


« Ответ #7 : 26.04.2011, 15:11:37 »

В факе эту тему почему-то удалили.

В файле modules/mod_mainmenu/helper.php после строки 297 - $tmp = clone($item); заменяем:
Код:
$tmp->name = '<span><![CDATA['.$item->name.']]></span>';
на
Код:
if (strpos("|",$item->name)) {
  $tmp->name = '<span><![CDATA['.$item->name.']]></span>';
} else {
  $pmenu = $item->name;
  $pmenu = explode("|",$pmenu);
  $tmp->name = '<span class="pname">'.$pmenu[0].'</span><br /><span class="sname">'.$pmenu[1].'</span>';
}
Разделитель в меню - |

Т.е. в случае ТС -  Экскурсии | по Киеву
« Последнее редактирование: 26.04.2011, 15:14:39 от dynamit » Записан
Taatshi
Профи
********

Репутация: +219/-0
Offline Offline

Сообщений: 3208


« Ответ #8 : 26.04.2011, 15:43:57 »

я проще делала - ограничить ширину, как выше писали, а высоту поставить в "auto" - и все. подробнее - дайте ссылку на сайт
Записан
Shustry
Группа развития
*****

Репутация: +201/-0
Offline Offline

Пол: Мужской
Сообщений: 1682


Добрый зайка


« Ответ #9 : 26.04.2011, 20:29:58 »

dynamit, спасибо. У меня аналогичный рецепт, тоже с разделителем |, но там коду больше (мапед не мой). Я всё-таки верстак, а не прогер. Зато <br> здесь можно не писать. css`ом можно на две строки разнести.
Записан
SSStylish
Давно я тут
****

Репутация: +10/-0
Offline Offline

Сообщений: 221


« Ответ #10 : 04.05.2011, 11:05:09 »

Рецепт с разделителем не есть гуд с точки зрения СЕО при наличии ключей в названиях пунктов. Наши методы - CSS
Записан
Shustry
Группа развития
*****

Репутация: +201/-0
Offline Offline

Пол: Мужской
Сообщений: 1682


Добрый зайка


« Ответ #11 : 04.05.2011, 11:11:14 »

Отчего же? Чем плох пункт меню <a><span>Наша </span><span>компания</span><a>? Про <br> согласен, не айс. Лучше двумя любыми инлайновскими тэгами разделить и в ксс уже разнести.
Записан
st.smolyakov
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 30


« Ответ #12 : 11.07.2011, 17:23:44 »

а если необходима обратная задача:
сайт: http://smolyakov.com.ua
там справа в меню "Статьи выводятся в две строчки - получается не красиво. как сделать что выводились в одну строчку независимо от длины пункта меню
Заранее спасибо
Записан
Shustry
Группа развития
*****

Репутация: +201/-0
Offline Offline

Пол: Мужской
Сообщений: 1682


Добрый зайка


« Ответ #13 : 12.07.2011, 06:07:31 »

Код:
{white-space:nowrap;}
У вас там разное оформление для строк, придёцо всё переделывать. Например, так:
Код:
#gk-nav #gk-menu span {
display:inline;
float:none;
text-align:left;
white-space:nowrap;
line-height:45px;
margin:0;
padding:0;
font-family:"Comic Sans MS",cursive;
font-size:20px;
font-weight:400;
font-style:normal;
color:#E0C771;
}
Записан
elscept
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 32


« Ответ #14 : 23.08.2011, 20:03:40 »

В файле modules/mod_mainmenu/helper.php после строки 297 - $tmp = clone($item); заменяем:
Код:
$tmp->name = '<span><![CDATA['.$item->name.']]></span>';
на
Код:
if (strpos("|",$item->name)) {
  $tmp->name = '<span><![CDATA['.$item->name.']]></span>';
} else {
  $pmenu = $item->name;
  $pmenu = explode("|",$pmenu);
  $tmp->name = '<span class="pname">'.$pmenu[0].'</span><br /><span class="sname">'.$pmenu[1].'</span>';
}
Разделитель в меню - |
У меня этот метод почему-то не сработал. Вернее сработал, но не совсем. Меню "развалилось" и стало не горизонтальным, а вертикальным.
« Последнее редактирование: 23.08.2011, 20:06:47 от elscept » Записан
SSStylish
Давно я тут
****

Репутация: +10/-0
Offline Offline

Сообщений: 221


« Ответ #15 : 25.08.2011, 02:31:47 »

У меня этот метод почему-то не сработал. Вернее сработал, но не совсем. Меню "развалилось" и стало не горизонтальным, а вертикальным.

Копать CSS
Записан
elscept
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 32


« Ответ #16 : 26.08.2011, 13:09:55 »

Копать CSS
Точно! Добавил CSS свойство float: left для меню и все встало на свои места.
Записан
Shustry
Группа развития
*****

Репутация: +201/-0
Offline Offline

Пол: Мужской
Сообщений: 1682


Добрый зайка


« Ответ #17 : 26.08.2011, 13:57:25 »

Точно! Добавил CSS свойство float: left для меню и все встало на свои места.
Лучше ...span {display:block;}. Флоатом вы элементы из потока вырываете.
Записан
elscept
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 32


« Ответ #18 : 10.01.2012, 19:13:39 »

А может кто-то подсказать как эту фишку реализовать на Joomla 1.7?
« Последнее редактирование: 10.01.2012, 21:30:46 от elscept » Записан
Shustry
Группа развития
*****

Репутация: +201/-0
Offline Offline

Пол: Мужской
Сообщений: 1682


Добрый зайка


« Ответ #19 : 10.01.2012, 19:28:41 »

1. Сначала сделайте альтернативный макет вывода меню, например так, как я здесь расписывал.
2. Потом назначьте его в настройках модуля.
3. Далее в topmenu_component.php и topmenu_component.php пишем тот же рецепт, только применительно к $item->title:

Код
if (strpos("|",$item->title)) {
 $item->title = '<span><![CDATA['.$item->title.']]></span>';
} else {
 $pmenu = $item->title;
 $pmenu = explode("|",$pmenu);
 $item->name = '<span class="pname">'.$pmenu[0].'</span><br /><span class="sname">'.$pmenu[1].'</span>';
}
 
Записан
elscept
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 32


« Ответ #20 : 11.01.2012, 15:51:43 »

Прошу прощения, но не совсем понял куда именно вставлять этот код
Код:
if (strpos("|",$item->title)) {
  $item->title = '<span><![CDATA['.$item->title.']]></span>';
} else {
  $pmenu = $item->title;
  $pmenu = explode("|",$pmenu);
  $item->name = '<span class="pname">'.$pmenu[0].'</span><br /><span class="sname">'.$pmenu[1].'</span>';
}
 

Пробовал заменять им этот
Код:
if ($item->menu_image) {
$item->params->get('menu_text', 1 )?
$linktype = '<img src="'.$item->menu_image.'" alt="'.$item->title.'" /><span class="image-title">'.$item->title.'</span> ' :
$linktype = '<img src="'.$item->menu_image.'" alt="'.$item->title.'" />';
}
else { $linktype = $item->title;
}
Но тогда текст в меню просто пропадает.
Записан
Shustry
Группа развития
*****

Репутация: +201/-0
Offline Offline

Пол: Мужской
Сообщений: 1682


Добрый зайка


« Ответ #21 : 11.01.2012, 15:59:19 »

Файл целиком:
Код
<?php
/**
* @version $Id: default_component.php 21322 2011-05-11 01:10:29Z dextercowley $
* @package Joomla.Site
* @subpackage mod_menu
* @copyright Copyright (C) 2005 - 2011 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/

 
// No direct access.
defined('_JEXEC') or die;
 
// Note. It is important to remove spaces between elements.
$class = $item->anchor_css ? 'class="'.$item->anchor_css.'" ' : '';
$title = $item->anchor_title ? 'title="'.$item->anchor_title.'" ' : '';
if ($item->menu_image) {
$item->params->get('menu_text', 1 )?
$linktype = '<img src="'.$item->menu_image.'" alt="'.$item->title.'" /><span class="image-title">'.$item->title.'</span> ' :
$linktype = '<img src="'.$item->menu_image.'" alt="'.$item->title.'" />';
}
else { $linktype = $item->title;
}
 
//начало вставки
if (strpos("|",$item->title)) {
 $item->title = '<span><![CDATA['.$item->title.']]></span>';
} else {
 $pmenu = $item->title;
 $pmenu = explode("|",$pmenu);
 $item->title = '<span class="pname">'.$pmenu[0].'</span><br /><span class="sname">'.$pmenu[1].'</span>';
}
//конец вставки
 
switch ($item->browserNav) :
default:
case 0:
?><a <?php echo $class; ?>href="<?php echo $item->flink; ?>" <?php echo $title; ?>><?php echo $linktype; ?></a><?php
break;
case 1:
// _blank
?><a <?php echo $class; ?>href="<?php echo $item->flink; ?>" target="_blank" <?php echo $title; ?>><?php echo $linktype; ?></a><?php
break;
case 2:
// window.open
?><a <?php echo $class; ?>href="<?php echo $item->flink; ?>" onclick="window.open(this.href,'targetWindow','toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes');return false;" <?php echo $title; ?>><?php echo $linktype; ?></a>
<?php
break;
endswitch;
 
Записан
Poznakomlus
Живу я здесь
******

Репутация: +110/-2
Offline Offline

Пол: Мужской
Сообщений: 1218


Дядя Федор приехал!


« Ответ #22 : 11.01.2012, 17:15:37 »

if (strpos("|",$item->title)) так ошибочно
Правильно так будет default_url.php
Не забываем перед разделителем ставить пробел. Чтобы поисковики не читали Васяздесь. А так Вася Здесь
Код:
<?php
/**
 * @version $Id: default_url.php 21322 2011-05-11 01:10:29Z dextercowley $
 * @package Joomla.Site
 * @subpackage mod_menu
 * @copyright Copyright (C) 2005 - 2011 Open Source Matters, Inc. All rights reserved.
 * @license GNU General Public License version 2 or later; see LICENSE.txt
 */

// No direct access.
defined('_JEXEC') or die;

// Note. It is important to remove spaces between elements.
$class = $item->anchor_css ? 'class="'.$item->anchor_css.'" ' : '';
$title = $item->anchor_title ? 'title="'.$item->anchor_title.'" ' : '';
if ($item->menu_image) {
$item->params->get('menu_text', 1 )?
$linktype = '<img src="'.$item->menu_image.'" alt="'.$item->title.'" /><span class="image-title">'.$item->title.'</span> ' :
$linktype = '<img src="'.$item->menu_image.'" alt="'.$item->title.'" />';
}
else { $linktype = $item->title;
}

$pmenu = explode("|", $item->title);
switch ($item->browserNav) :
default:
case 0:
?><a <?php echo $class; ?>href="<?php echo $item->flink; ?>" <?php echo $title; ?>>
<?php if ($pmenu[1]){
echo $pmenu[0]."<span>".$pmenu[1]."</span>";
} else {
echo $pmenu[0];
} ?>
</a><?php
break;
case 1:
// _blank
?><a <?php echo $class; ?>href="<?php echo $item->flink; ?>" target="_blank" <?php echo $title; ?>><?php echo $linktype; ?></a><?php
break;
case 2:
// window.open
$attribs = 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,'.$params->get('window_open');
?><a <?php echo $class; ?>href="<?php echo $item->flink; ?>" onclick="window.open(this.href,'targetWindow','<?php echo $attribs;?>');return false;" <?php echo $title; ?>><?php echo $linktype; ?></a><?php
break;
endswitch;

Записан
elscept
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 32


« Ответ #23 : 12.01.2012, 19:42:09 »

Shustry, Poznakomlus, спасибо за помощь. Все получилось. Ловите "+"  Smiley
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Рейтинг@Mail.ru Rambler Top100 Powered by SMF 1.1.16 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet