SinglWolf

Шаблон realia - пожалуйста, помогите с меню категорий [Решено]

Recommended Posts

Приветствую.

Хочу чтобы через меню категорий открывались статические страницы. Отредактировал категории через админку, получилось так:

post-2647-0-21029800-1429081579_thumb.pn

Страницы открываются, тут проблемы нет.

Но мне не надо чтобы пункты меню (ссылки на страницы) отображались здесь:

post-2647-0-61265600-1429081787_thumb.pn

Мои исследования кода привели в файл шаблона main.tpl и упёрлись в строку, которая содержит

{$navmenu}

Дальше я не знаю куда копать.  -_-

Пожалуйста, подскажите как реализовать мою задумку.

Share this post


Link to post
Share on other sites

Вы на правильном пути, но к сожалению в данный момент в системе не предусмотрено создания многоуровневого меню. (будет в следующих обновлениях.)

Меню можно создать однострочное (без вложений). 

{$navmenu} - это заложенная системой переменная для вывода категории.

В данный момент возможно только в ручную создать меню у разместить его на сайте.

Share this post


Link to post
Share on other sites

Вы на правильном пути, но к сожалению в данный момент в системе не предусмотрено создания многоуровневого меню. (будет в следующих обновлениях.)

Меню можно создать однострочное (без вложений). 

{$navmenu} - это заложенная системой переменная для вывода категории.

В данный момент возможно только в ручную создать меню у разместить его на сайте.

Что вы там такое курите забористое?  :ph34r: 

 

Какая печалька... Да я уже создал многоуровневое меню! Не видать на картинке?

 

Всё, что мне надо - описание сверхсекретной переменной {$navmenu}. И где она заполняется значениями.

Я уж как-нибудь сам приткну пункт меню "Услуги" в шаблоне, минуя админку.

Share this post


Link to post
Share on other sites

В таком случае вам нужно будет создать локальную копию файла. Находится в папке apps/system/lib/frontent/menu/далее файл самого меню подключенного в админке. Там можете уже вручную дописать.

Share this post


Link to post
Share on other sites

Итак, если у нас осталось место в навигаторе где изначально выводятся разделы структуры, у нас может возникнуть желание добавить туда что-то от себя.

 

Для формирования этого блока служит функция шаблона реалия getTemplateMenu, которая пользуется услугами декоратора меню. Логи этого декоратора довольно сложна, именно поэтому мы не стали выдавать его в виде шаблона, а свели до $navmenu.

 

Суть задачи - позволить нехитрым набором опций сообщать декоратору меню, что у куда вставить нам в нашу менюху. Я предусмотрел вставку двух типов:

1) вставка простой ссылки

2) вставка блока с выпадающими подпунктами, которые формируются на базе одного из меню из раздела Контент - Меню.

 

А) Для начала улучшим функцию getTemplateMenu.

 

Находим ее в /template/frontend/realia/main/main.php и заменяем на http://pastebin.com/NpibVwer

 

Главное отличие, что она теперь умеет понимать переданные нами параметры и пытается кешировать в сессию некоторые данные. Т.е. если вы укажете ей строить дополнительный пункт на базе какой-то менюшки, то она не будет на всех переходах требовать его от бд, а возьмет один раз и запомнит на всю вашу сессию.

 

Б) Параметры функции.

Что бы указать чем и где дополнить нам меню нужно указать функции параметры. Параметры указываются в виде массива

$menues=array( array( 'id'=>25, /*ID меню из Контент - Меню. Если указать ID не существующего в данный момент Меню, то получится просто пункт с меню, без выпадающего блока, тогда данный пункт даже не буде. Если нужно навставлять ссылок, то просто ставьте там 10000 и дальше*/      
    'title'=>'О нас', /*Выводимая надпись на пункте*/      
    'position'=>'behind',/*Расположение относительно пунктов Структуры. Если не указано или не behind, то after - в конце*/      
    'href'=>'/somelink/'/*Ccылка на корневом пункте. Если не указать, то будет якорь (#), те неактивная ссылка чисто для группировки*/ ),     
    array('id'=>23,'title'=>'О вас','position'=>'after','href'=>'http://dadada.ru'));

Например, нам нужно поставить в верхнее меню следующее:

- в самом начале ссылку на главную

- после нее ссылку на отзывы /review

- в конце подключить выпадающий список из Меню - Полезная информация с ид в БД 215.

 

Сотв. наша конфигурация буде иметь вид

$menues=array(array('id'=>0, /*0-хитрое значение. Оно может быть только в одном пунке и на него автоматом ставится ссылка на корень сайта*/ 
                   'title'=>'Главная','position'=>'behind'),array('id'=>1000, /*поставили 1000 так как такого пункта у нас в меню нет*/ 
                   'title'=>'Отзывы','position'=>'behind','href'=>'review'),array('id'=>215, /*а такое меню есть и мы его запросили*/
                   'title'=>'Полезно','position'=>'after'));

В) Как это все включить.

 

В файле /template/frontend/realia/main/main.php находим вызов

 

$this->template->assert('navmenu', $this->getTemplateMenu());

 

И меняем его на

$menues=array(array('id'=>0,'title'=>'Главная','position'=>'behind'),
              array('id'=>1000,'title'=>'Отзывы','position'=>'behind','href'=>'review'),
              array('id'=>215,'title'=>'Полезно','position'=>'after')); /*наш набор пунктов*/
              $this->template->assert('navmenu', $this->getTemplateMenu($menues)); /*тут мы его передали в декоратор*/

В результате получаем

Prodazha_nedvyzhymosty_cherez_Ynternet.p

Share this post


Link to post
Share on other sites

 

Итак, если у нас осталось место в навигаторе где изначально выводятся разделы структуры, у нас может возникнуть желание добавить туда что-то от себя.

 

......................

Еще не пробовал реализовать, но спешу выразить человеческую благодарность. Спасибо! Я пока остаюсь... :) (© Злые вы! Уйду я от вас...)

Share this post


Link to post
Share on other sites

 

В) Как это все включить.

 

В файле /template/frontend/realia/main/main.php находим вызов

 

$this->template->assert('navmenu', $this->getTemplateMenu());

 

И меняем его на

$menues=array(array('id'=>0,'title'=>'Главная','position'=>'behind'),array('id'=>1000,'title'=>'Отзывы','position'=>'behind','href'=>'review'),array('id'=>215,'title'=>'Полезно','position'=>'after')); /*наш набор пунктов*/$this->template->assert('navmenu', $this->getTemplateMenu($menues)); /*тут мы его передали в декоратор*/

В результате получаем

 

 

Всё хорошо, но как быть с вложенными пунктами меню? Или я не понял? -_-

Share this post


Link to post
Share on other sites

Врубился. Значение 'id' в массиве должно иметь номер menu_id созданного меню через админку в таблице re_menu. Значение можно посмотреть через phpmyadmin. Спасибо за помощь!

Share this post


Link to post
Share on other sites

Блин, засада...

Создал меню в админке

post-2647-0-21367700-1429109656_thumb.pn

А выводится только 1 пункт

post-2647-0-05244300-1429109730_thumb.pn

Пожалуйста, помогите. Осталось чуть-чуть. Очень полезная фича.

Share this post


Link to post
Share on other sites

Блин, засада...

Создал меню в админке

attachicon.gif2015-04-15 19-52-36 Скриншот экрана.png

А выводится только 1 пункт

attachicon.gif2015-04-15 19-53-10 Скриншот экрана.png

Пожалуйста, помогите. Осталось чуть-чуть. Очень полезная фича.

 

 

Вы сначала создалли меню на один пункт, потом подключили его в это меню, а потом добавили остальные три пункта? Верно?

Если да, то это кеширование в действии. Откройте в другом браузере или закройте этот и откройте снова, что бы сбросилась текущая сессия.

 

Либо, на время тестирования-отладки можете добавить в 

 

private function getTemplateMenu($menues=array(){

 

первой же строкой 

 

unset($_SESSION['_site_cache']['nave_menu']);

 

Это будет обнулять кеш при каждом F5, зато не будет пугать отсутствием пунктов

Share this post


Link to post
Share on other sites

Значение можно посмотреть через phpmyadmin

 

Либо просто в списке меню навести мышку на кнопку Редактировать с карандашиком и, в подсвеченной ссылке, посмотреть значение переменной menu_id

Share this post


Link to post
Share on other sites

Не могу вставить меню с вложенными пунктами...

Обычные ссылки типа "Главная, о компании, контакты" я вставил, все отображается, но когда по выше-предложенной инструкции вставляю меню, сайт перестает загружаться, просто пустая страница...

Мой  main.php файл, через него выводятся Главная и О компании

А пункты Ипотека и Контакты выводятся через файл template_menu_decorator.php

 

Я создал в админке новое меню, оно имеет menu_id=22

 

При вставке 

array('id'=>22,'title'=>'Иногородняя недвижимость','position'=>'after')

в 

$menues=array(array('id'=>0,'title'=>'Главная','position'=>'behind'),array('id'=>1,'title'=>'О компании','position'=>'behind','href'=>'o-kompanii.html')); /*наш набор пунктов*/$this->template->assert('navmenu', $this->getTemplateMenu($menues));

Сайт перестаёт загружаться....

Пожалуйста, помогите решить проблему...

Мой сайт http://afina-pallada89.ru/ необходимо между "Ипотека" и "Контакты" вставить моё меню "Иногородняя недвижимость"

Share this post


Link to post
Share on other sites

Пожалуйста, откликнитесь на мою просьбу о помощи. Не могу вставить пункт с вложением...

Share this post


Link to post
Share on other sites
В 29.04.2016 в 11:22, FD сказал:

Сайт перестаёт загружаться....

Можете показать полность строку с добавленным вами пунктом? Что-то вроде этого

$menues=array(
				array('id'=>0,'title'=>'Главная','position'=>'behind'),
				array('id'=>1000,'title'=>'Отзывы','position'=>'behind','href'=>'review'),
				array('id'=>215,'title'=>'Полезно','position'=>'after'),
				array('id'=>22,'title'=>'Иногородняя недвижимость','position'=>'after')
		);

 

Share this post


Link to post
Share on other sites
Только что, abushyk сказал:

Можете показать полность строку с добавленным вами пунктом? Что-то вроде этого


$menues=array(
				array('id'=>0,'title'=>'Главная','position'=>'behind'),
				array('id'=>1000,'title'=>'Отзывы','position'=>'behind','href'=>'review'),
				array('id'=>215,'title'=>'Полезно','position'=>'after'),
				array('id'=>22,'title'=>'Иногородняя недвижимость','position'=>'after')
		);

 

Ваш вопрос подтолкнул меня к правильному решению!

Вывод меню привел к следующему виду:

$menues=array(
				array('id'=>0,'title'=>'Главная','position'=>'behind'),
				array('id'=>1,'title'=>'О компании','position'=>'behind','href'=>'o-kompanii.html'),
				array('id'=>22,'title'=>'Иногородняя недвижимость','position'=>'after')
				);
				$this->template->assert('navmenu', $this->getTemplateMenu($menues));

в файле pure/main/main.php 

Теперь всё работает как нужно! Спасибо за помощь! =)

Share this post


Link to post
Share on other sites

Здравствуйте. Новая функция getTemplateMenu не предусматривает поддержку разных языков? Создал дополнительное меню, как положено с указанием значений на разных языках. Верхнее меню нормально переводиться, а созданное мною, дополнительное, не хочет.

Share this post


Link to post
Share on other sites
9 часов назад, TopRaN сказал:

А в редакторе форм пробовали нажать на кнопку языки для menu?

Языки выставлены. Для всех меню они меняются, кроме как для нового, добавленного по вышеуказанному способу

Share this post


Link to post
Share on other sites

Тут нужно сделать следующее.

Для менюшек вставленных вручную

1. нужны файлы языков в зоне шаблона. не скажу, что 100%, но в реалии они уже могут быть. это папка /template/frontend/realia/language. Если ее нет, то просто создайте ее и внутри нее создайте подпапки по вашим рабочим языкам - /template/frontend/realia/language/en  /template/frontend/realia/language/ru.

2. В каждой из этих папок должен лежать файл с именем dictionary.ini для хранения языковых меток.

3. внутри этот файл выглядит как-то так:

LT_NEWS="News"
LT_FOR_USER="For users"
LT_USEFUL="Usefull"
LT_SPECIAL="Special"

метка="текстовое_значение_на_соотв_языке"

4. Берете все ваши пункты меню из примера и проставляете метки

LT_MN_HOME="Главная"
LT_MN_ABCOMP="О компании"
LT_MN_OUTCITYEST="Иногородняя недвижимость"

напр для русского. названия меток не принципиальны, но я бы рекомендовал ставить префикс LT_ что бы потом знать где метка описана. таким префиксом я обозначаю метки из папки шаблона в отличии от меток из приложений или системных.

5. Сами текстовые слова в getTemplateMenu текстовые надписи меняем на 

Multilanguage::_('LT_MN_HOME', '_template'); c указанием подходящих меток.

...
array('id'=>0,'title'=>Multilanguage::_('LT_MN_HOME', '_template'),'position'=>'behind'),
...

 

Для менюшек вставленных из заготовленных меню и Контент - Меню

Я внес некоторые изменения в файл сборщика меню для реалии http://pastebin.com/XAr8uPvR для функции getTemplateMenu (правки на лету, код сырой. может сразу не завестись. я тут, если кто-то будет пробовать, пишите сюда)

От вас требуется задать для пунктов меню соотвествующие языковые поля-клоны.

Кеширование убрано из индивидуальных сессий в общий файл-хранилище.

Share this post


Link to post
Share on other sites

Всем добрый вечер! Сегодня обращалась в поддержку, но меня направили сюда т.к. рабочий день уже закончен. Спасите, помогите кто может )))

  • скажите, что у меня на сайте не так, на главной странице выходят только те объявления, которые помечены как спец. предложения, нету самой ленты (прокручивающихся спец предложений) и в колонке с VIP объявлениями фото с "лентой" прокрутки. ПОМОГИТЕ, подскажите где и что править!!!! Спасибо
     
     
  • и еще в строке браузера, открывая сайт, появляется значек S в оранжевом круге, а не "домик" )

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Similar Content

    • By ДимДимыч
      Установил шаблон Realia, и смотрю видео, где говорится о том, что контакты меняются в main.tpl
      Нижние поменял, а вот где менять верхние контакты (почта, телефон)? И где убрать надпись "CMS SiteBill шаблон", та которая возле логотипа и панель выбора языка (она совершенно ненужна, т.к. сайт ориентирован на русскоязычную аудиторию)? Спасибо.
    • By al0er
      Здравствуйте.
      Проблема в слайдере  Шаблон Realia.

      http://realty-nvrsk.ru/doma-uchastki/doma/realty39

      1. При просмотре фото (увеличенного), кнопки листания карусели "вправо-влево" лежат поверх фото (см. скриншот).
      Проверено В Google Chrome и Mozilla Firefox.

      2. Мы раньше уже спрашивали на счет перелистывание фотографий (в увеличенном виде), сказали уже работаете над этим. Когда это будет реализовано?