Page 1 of 1

{menu} выводит страниц родителя

Posted: Fri Dec 12, 2014 5:46 pm
by sbupravi
Необходимо на дочерней странице выводить список других дочених страниц родителя. Есть тег {menu childrenof=$page_alias}, но как подставлять алиас автоматически?
Т.к. разделов много!

Re: {menu} выводит страниц родителя

Posted: Fri Dec 12, 2014 6:24 pm
by Dr.CSS
{menu start_level='2'} will show all children of the parent page even if you are on a second level child page...

Re: {menu} выводит страниц родителя

Posted: Fri Dec 12, 2014 9:09 pm
by sbupravi
Не подходит, потому как меню может быть многоуровневым и start_level будет равен 2,3 или 4...

Re: {menu} выводит страниц родителя

Posted: Sat Dec 13, 2014 1:41 pm
by guro
Создаёте тег пользователя "get_parent_alias"

Code: Select all

global $gCms;
global $smarty;

$manager =& $gCms->GetHierarchyManager();

$var = 'parent_alias';
if( isset($params['assign']) && $params['assign'] != '' ) {
  $var = $params['assign'];
}
$result = "NO RESULT";
$thisPage = $gCms->variables['content_id'];
$currentNode = &$manager->sureGetNodeById($thisPage);
$currentNode =& $currentNode->getParentNode();
$currentContent =& $currentNode->getContent();
$result = $currentContent->Alias();
$smarty->assign($var,$result);
Вызываете его перед

Code: Select all

 {menu childrenof=$parent_alias}

Re: {menu} выводит страниц родителя

Posted: Sat Dec 13, 2014 5:49 pm
by chandra
These sources are very old school and maybe they will not work.

Old school

Code: Select all

global $gCms;
global $smarty;
New style

Code: Select all

$gCms = cmsms();
$smarty = $template->smarty;
Additionally $gCms->variables['content_id'] is an internal variable now and should not used.

It's a lot easier to use Toolbox module and use the function {tbtools::getParentAlias()}

Re: {menu} выводит страниц родителя

Posted: Sat Dec 13, 2014 9:18 pm
by guro
Как же меня бесят вот такие комментаторы.
Казалось бы, русская ветка форума - отвечайте по русски. Какой тогда смысл в ней, если ответы будут давать на английском! Это тоже самое как если бы я писал по русски в английской ветке или еще какой-нибудь!

Re: {menu} выводит страниц родителя

Posted: Sat Dec 13, 2014 10:24 pm
by sbupravi
guro wrote:Создаёте тег пользователя "get_parent_alias"

Code: Select all

global $gCms;
global $smarty;

$manager =& $gCms->GetHierarchyManager();

$var = 'parent_alias';
if( isset($params['assign']) && $params['assign'] != '' ) {
  $var = $params['assign'];
}
$result = "NO RESULT";
$thisPage = $gCms->variables['content_id'];
$currentNode = &$manager->sureGetNodeById($thisPage);
$currentNode =& $currentNode->getParentNode();
$currentContent =& $currentNode->getContent();
$result = $currentContent->Alias();
$smarty->assign($var,$result);
Вызываете его перед

Code: Select all

 {menu childrenof=$parent_alias}
Не дает сохранить шаблон, если вставляю тег пользователя:{get_parent_alias}

Re: {menu} выводит страниц родителя

Posted: Sat Dec 13, 2014 10:29 pm
by sbupravi
guro wrote:Как же меня бесят вот такие комментаторы.
Казалось бы, русская ветка форума - отвечайте по русски. Какой тогда смысл в ней, если ответы будут давать на английском! Это тоже самое как если бы я писал по русски в английской ветке или еще какой-нибудь!
Может индус хотел подсказать что-то важное? =)

Re: {menu} выводит страниц родителя

Posted: Sun Dec 14, 2014 3:56 am
by guro
sbupravi wrote:Не дает сохранить шаблон
Да, действительно. Без if-ов отказывается работать. Вот исправленный вариант

Code: Select all

global $smarty;
$manager = cmsms()->GetHierarchyManager();
$var = 'parent_alias';
if( isset($params['assign']) && $params['assign'] != '' ) {
  $var = $params['assign'];
}
$result = "NO RESULT";
$thisPage = cmsms()->variables['content_id'];
$currentNode = $manager->sureGetNodeById($thisPage);
if ( isset($currentNode) ) {
  if ( $currentNode->getLevel() > 0 ){
    $currentNode =& $currentNode->getParentNode();
  }
  $currentContent =& $currentNode->getContent();
  $result = $currentContent->Alias();
}
$smarty->assign($var,$result);

Re: {menu} выводит страниц родителя

Posted: Sun Dec 14, 2014 5:41 am
by chandra
sbupravi wrote: Может индус хотел подсказать что-то важное? =)
Если ответ содержит ошибки, да ;D .

Кстати - как вы знаете, что я индус?

Благодаря Переводчик Google я могу читать по-русски. Только иногда смешные переводы я хотел, чтобы нанести на кого.

Re: {menu} выводит страниц родителя

Posted: Sun Dec 14, 2014 11:01 am
by sbupravi
chandra wrote: Кстати - как вы знаете, что я индус?
Ясновидящий.
guro wrote:Да, действительно. Без if-ов отказывается работать.
Круто! Спасибо!