Плагин Static Page его меню подменю /Решено

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

Данные доработки сделаны на примере шаблона 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 комментариев

avatar
Я вроде сделал, как вы сказали, но у меня ничего не изменилось.
Директорию с кэшем шаблонов стер, на всякий случай — ничего не поменялось, подменю так и нет.
Правильно я понял пункт 4:
{if $sAction=='page'}
    {include file="menu.page.tpl"}
{/if}
добавляю сразу после строчки
<div id="nav-inner">
?
avatar
2QuadMan
Да все правильно. т.е
{if $sAction=='page'}
    {include file="menu.page.tpl"}
{/if}

А ошибок не выдает никаких?
должен быть в блоке
<div id="nav-inner">

— Давай посмотрим где косяк,
avatar
2QuadMan
зайди в файл, который ты создал,
plugins/page/templates/skin/new-jquery/main_sub_menu.tpl
и в самом верху кода напиши например «12345», сохрани и посмотри, появится ли данная надпись при переходе на стат страницу, имеющую дочерние страницы
avatar
Прошу прощения, исправил стать, см. добавления в п.1
avatar
Да, теперь все заработало!!!
Большое Вам спасибо, очень помогли!
Да, в пункте 2 небольшая опечатка: $this -> Viewer_Assign('aServerUri',$_SERVER['REQUEST_URI']); — не должно быть пробелов после $this.
avatar
ls 0.5
шаблон street-spirit
работает отлично
avatar
Спасибо! Как раз его искал.
avatar
А можешь сказать как на 4 верстку сделать
avatar
Внимание!
Чтобы вывести реально дочерние страницы, в методе правильная строчка такая:
$aPages=$this->PluginPage_Page_GetPages(array('main'=>0,'active'=>1));

т.е. main => 0 а не 1
avatar
Можете сказать как под новую версию это сделать?
avatar
Да, в версии 1.0.1 никто ничего подобного не делал еще?..
avatar
делали, демо показать могу, запросы в личку
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.