Плагин Static Page его меню подменю /Решено
При работе с данным плагином выскочила трабла, в меню выводились только страницы родители, при переходе на которые по сути должны появляется дочерние страницы. Но судя по всему функционал не доделан.
Данные доработки сделаны на примере шаблона new-jquery и на версии LS 0.5 (на других не тестил)
Все что нам нннужно:
1) Создаем хук, идем в файл plugins/page/classes/hook/HookPage.class.php
Добавляем в метод
Добавляем метод новый Sub_Menu в класс PluginPage_HookPage
2)Далее пилим в plugins/page/templates/skin/new-jquery и создаем там файл «main_sub_menu.tpl» со след содержимым
3)Создаем новый файл темплайт «menu.page.tpl» в папке /templates/scin/new-jquery/
туда добавляем
4) Идем /templates/skin/new-jquery/nav.tpl и добавляем туда
Теперь дочерние страницы будут именно там, где они должны быть.
И нет необходимости при создании дочерних страниц их в рукопашную прописывать.
Данные доработки сделаны на примере шаблона new-jquery и на версии LS 0.5 (на других не тестил)
Все что нам нннужно:
1) Создаем хук, идем в файл plugins/page/classes/hook/HookPage.class.php
Добавляем в метод
RegisterHookстроку
$this->AddHook('template_main_sub_menu','Sub_Menu');
Добавляем метод новый Sub_Menu в класс PluginPage_HookPage
public function Sub_Menu() { $aPages=$this->PluginPage_Page_GetPages(array('main'=>1,'active'=>1)); $this->Viewer_Assign('aSubPagesMain',$aPages); $this->Viewer_Assign('aServerUri',$_SERVER['REQUEST_URI']); return $this->Viewer_Fetch(Plugin::GetTemplatePath(__CLASS__).'main_sub_menu.tpl'); }
2)Далее пилим в plugins/page/templates/skin/new-jquery и создаем там файл «main_sub_menu.tpl» со след содержимым
{assign var="arrServerUri" value="/"|explode:$aServerUri} <ul class="menu"> {foreach from=$aSubPagesMain item=oPage} {assign var="sub_url" value="/"|explode:$oPage->getUrlFull()} {if $sEvent==$sub_url.0} <li {if $sAction=='page' and $sub_url.1==$arrServerUri.3} class="active" {/if}> <a href="{router page='page'}{$oPage->getUrlFull()}/" >{$oPage->getTitle()}</a> </li> {/if} {/foreach} </ul>
3)Создаем новый файл темплайт «menu.page.tpl» в папке /templates/scin/new-jquery/
туда добавляем
{hook run='main_sub_menu'}
4) Идем /templates/skin/new-jquery/nav.tpl и добавляем туда
{if $sAction=='page'} {include file="menu.page.tpl"} {/if}
Теперь дочерние страницы будут именно там, где они должны быть.
И нет необходимости при создании дочерних страниц их в рукопашную прописывать.
12 комментариев
Директорию с кэшем шаблонов стер, на всякий случай — ничего не поменялось, подменю так и нет.
Правильно я понял пункт 4:
добавляю сразу после строчки ?
Да все правильно. т.е
А ошибок не выдает никаких?
должен быть в блоке
— Давай посмотрим где косяк,
зайди в файл, который ты создал,
plugins/page/templates/skin/new-jquery/main_sub_menu.tpl
и в самом верху кода напиши например «12345», сохрани и посмотри, появится ли данная надпись при переходе на стат страницу, имеющую дочерние страницы
Большое Вам спасибо, очень помогли!
Да, в пункте 2 небольшая опечатка: $this -> Viewer_Assign('aServerUri',$_SERVER['REQUEST_URI']); — не должно быть пробелов после $this.
шаблон street-spirit
работает отлично
Чтобы вывести реально дочерние страницы, в методе правильная строчка такая:
т.е. main => 0 а не 1