Здравствуйте, очень нужен совет... Итак, задача заключается в том, чтобы используя D7 сделать меню картиками. Но прежде я расскажу что я делал.
1. Как я понимаю, для d6 есть модуль imagemenu, но для D7 его нет
2. Вариант с CSS сделать картику бекграундом мне не подходит
3. Костыли со вставкой в шаблон линка и обработка тем же css тоже не подходит
3. Пробовал создавать новый тип контента, в нём поле с картинкой, далее создать нужные ноды и далее views вывести картинки в блоке которые ссылаются на ноду (эмулируя тем самым меню), но и этот, на певый взгляд самый идеальный вариант, мне неподошёл.
Всё дело в том, что среди пунктов меню, должен быть пункт формы обратной связи, который включается встроенным в ядро модулем и по дизайну сайта, должен быть в одном ряду с остальными пунктами меню и выводится картинкой.
В идеале если б можно было при редактировании меню добавлять к нужным пунктам картики, а title скрывать, то проблема была бы решена, но такого модуля я ненашёл. Может быть кто то решал уже данную проблему?
Комментарии
Menu attributes не подойдет? Правда, он глючный какой-то — у меня он после создания материала сбрасывает класс у одного из пунктов меню, причем пункт выбирается рандомно)
Спасибо за совет, поставил menu_attributes, посмотрел, но мне это не подходит. Это очень хорошо подходит, чтобы придать пунктам меню разные стили офрмления. Можно конечно присвоить id или класс и использовать костыли с CSS, но мне нужно чтоб код генерировался с тегом img.
Вы бы sketch накидали к примеру https://moqups.com/ возможно вам и подсказал бы.
Тут 2 варианта либо переопределять menu_theme либо добиться эмитации меню через views (Что у вас не получилось)
Уважаемый Shok211, спасибо за идею со скечами, раньше не пользовался ими, очень удобно. Решил показать Вам шаблон, по которому и буду разрабатывать сайт. Меня интересует реализация верхнего горизонтального меню, иконки при наведении будут заменятся другими, с помощью css. Как видите, там присутствует форма обратной связи, которую через views картинкой не выведешь =(. Возможно я бы залез бы в PHP код если надо, но как программист - я начинающий, и куда копать чтобы сделать свой модуль с нужными мне функциями я пока не особо знаю. Надесь что в будущем разберусь с ядром друпала. Шаблон прикреплён к сообщению.
1. http://drupal.org/project/menu_icons
2. http://scito.ch/comment/30
Не проверял, но может поможет
Спасибо, сейчас потестирую.
К сожалению модуль обрезает картинки
если меню не большое, то не проще ли его сверстать и вставить потом в page.tpl.php?
если меню не большое, то не проще ли его сверстать и вставить потом в page.tpl.php?
Я думал про этот вариант, но в данном случае он будет костылём, так как нужна автоматизация для использования сайта людьми не знакомыми с HTML. Этот вариант будет так сказать на крайний случай. Но всё равно спасибо за совет, для кого то возможно он окажется очень ценным.
Или если уж очень хочется иметь возможность менять что-то потом, так сделать блок с картинками и вставить его в соответствующий регион, по-моему для такой задачи модуль уже не нужен.
Вы имеете ввиду создать блок, загрузить в него несколько картинок, сделать картинки линками на нужные ноды и вставить всё это в нужный регион? Я правильно понял?
Ну да, может я конечно не правильно понял задачу.
http://drupalblog.ru/blog/module-menu-icons
все же может стоит попробовать покопать этот модуль и поискать причину почему картинки обрезаются. может там все дело только в css?
Чтож, благодарю всех за ценные советы, покопаю menu-icons и css, а также вариант с добавлением картинок в блок. Если вдруг у кого то есть еще какие то варианты, будет очень кстати добавить их в эту тему. Всё это обязательно пригодится людям ищущим ответы на этом форуме. Спасибо.
Делай блоком, потом в page.tpl найдешь ему место.
Ну да, впринципе блоком будет самый безглючный вариант
Картинкам только папку задай отдельную...
По поводу обрезания картинок:
"When Imagecache is installed, you can choose an imagecache preset for uploaded images."
Проверьте настройки пресета, который используется для этих картинок и поменяйте на свои.
У меня D7 и вместо image cache используется image style встроенный в ядро, но это не суть. Пробовал делать разные пресеты, картинка обрезается по высоте строки. Там явно нужно колдовать с CSS.
Если по высоте, то проверьте высоту родительских элементов.
Меню выводится списком, для ссылок родителем будет элемент li, попробуйте задать ему высоту.
Пробовал, так почему то не выходит, возможно изза настроек шаблона. Возможно на самодельном шаблоне всё будет нормально.
"Обратная связь" Что вы имеете виду под этим понятием ? Ссылку на форму ? Форму (её я вобще в шаблоне не заметил) ? Всплывающее окно.
Или что то иное ?.
Если вы хотите сделать как у вас в шаблоне то достаточно использовать Views.
В шаблоне в горизонтальном меню есть кнопка "Обратная связь", в свою очередь это подразумевает по задумке включения модуля contact. Так вот через views опианным выше способом, иконку для формы не выведешь. Сделал всё блоком, залинковал картинки, всё получилось, всем спасибо.
Всем привет, всё таки нашлось отличное решение проблемы. Постарался довольно подробно описать это на своём сайте http://infobsd.ru/content/menyu-iz-kartinok-drupal-7
Тоже стояла проблема, нужно было сделать Главное меню с добавлением картинок как в прикрепленном файле.
Добавил Главное меню в регион header.
Потом в template.php добавил код для темизации главного меню:
$element = $variables['element'];
$sub_menu = '';
if ($element['#below']) {
$sub_menu = drupal_render($element['#below']);
}
$output = l($element['#title'], $element['#href'], $element['#localized_options']);
$output2 = l('<img src="/sites/all/themes/_tro/images/icon_'. $element['#href'].'.gif" alt="_">', $element['#href'], $options = array('html' => TRUE));
return '<li' . drupal_attributes($element['#attributes']) . '>' . $output2 .''. $output . $sub_menu . "</li>\n";
}
http://drupal.org/project/menu_icons
модуль работает как надо, единственное что в админке может криво отображать картинку, но это правится стилями в админской теме, на фротнэнде он выводит как надо в указанном формате