Page 1 of 1
Контент другой страницы
Posted: Tue Aug 25, 2009 2:02 pm
by tyu
Привет!
Можно ли вставить в шаблон страницы {content} от другой страницы (через ее ID или алиас)?
Re: Контент другой страницы
Posted: Tue Aug 25, 2009 3:02 pm
by von-hamster
Можно... Как это сделать - ищи - что-то подобное было на форуме... В любом случае придется писать свой тэг.
Re: Контент другой страницы
Posted: Sat Aug 29, 2009 8:19 am
by skyboy
вопрос по структуре: может, если некий контент настолько универсальный, что появляется не на одной странице, а на нескольких, есть смысл вынести управление им(ими?) под отдельный модуль? или хотя бы в блок глобального контента?
мне сложно представить ситуацию, когда надо вывести именно кусок другой страницы(потому как страница, в отличие от вывода какого-то модуля предполагает вывод не только информации, но и собственного оформления - если же оформление особого нет, то это просто глобальный блок контента же!)
Re: Контент другой страницы
Posted: Mon Aug 31, 2009 5:09 am
by tyu
Структура страниц по уровням:
1
1.1
1.1.1
1.1.2
1.1.3
1.2
1.3
2
2.1
2.2
и т. д.
На странице 1 выводится контент от 1.1, 1.2, 1.3.
На странице 1.1 выводится контент от 1.1.1, 1.1.2, 1.1.3.
На странице 2 выводится контент от 2.1, 2.2.
И так далее...
Вот что требуется реализовать...
Пример:
http://www.virgin.com/travel/, серые вкладки.
Re: Контент другой страницы
Posted: Wed Sep 09, 2009 10:57 pm
by m00nk
Делюсь своими наработками.
Получение контента нужной страницы
Выводимый контент будет содержать необработанные смарти-тэги
$hm =& $gCms->GetHierarchyManager();
$curnode =& $hm->getNodeById($pageid); // либо $curnode =& $hm->getNodeByAlias($page_alias);
$curcontent =& $curnode->GetContent();
echo $curcontent->mProperties->mPropertyValues['content_en'];
ВНИМАНИЕ!!!
Описанный алгоритм работает не всегда. По какой-то неясной мне причине иногда массив $curcontent->mProperties->mPropertyValues содержит пустые значения. Поэтому лучше для надежности применять следующий вариант:
если известен только элиас, и не известен ID:
$hm =& $gCms->GetHierarchyManager();
$curnode =& $hm->getNodeByAlias($alias);
$curcontent =& $curnode->GetContent();
$contentops =& $gCms->GetContentOperations();
$content =& $contentops->LoadContentFromId($curcontent->mId, true);
echo $content->mProperties->mPropertyValues['content_en'];
если же известен ID, то (теоретически, я не проверял) можно сократить код до такого:
$contentops =& $gCms->GetContentOperations();
$content =& $contentops->LoadContentFromId($Id, true);
echo $content->mProperties->mPropertyValues['content_en'];
Re: Контент другой страницы
Posted: Thu Sep 10, 2009 4:46 am
by von-hamster
ВНИМАНИЕ!!!
Описанный алгоритм работает не всегда. По какой-то неясной мне причине иногда массив $curcontent->mProperties->mPropertyValues содержит пустые значения. Поэтому лучше для надежности применять следующий вариант:
Он будет работать всегда, если вначале загрузить свойства...
$curcontent->mProperties->load($page_id);
или не напрямую обращаться к свойству, а через метод:
$curcontent->GetPropertyValue($name);
где, например, $name = 'content_en';
Re: Контент другой страницы
Posted: Thu Sep 10, 2009 9:39 am
by m00nk
Спасибо за подсказку, как-нить попробую на практике.
А вообще было бы очень здорово, если бы авторы нашли время, чтобы написать нормальную документацию по API, а не отделываться от разработчиков парой статей...

Re: Контент другой страницы
Posted: Thu Sep 10, 2009 9:47 am
by von-hamster
На самом деле API описано в коде... Другое дело - его нужно оттуда достать... Например при помощи phpdocumentor'a
Re: Контент другой страницы
Posted: Thu Sep 10, 2009 2:59 pm
by m00nk
На самом деле API описано в коде... Другое дело - его нужно оттуда достать...
Ну так неужели для разработчиков это такое сложное дело - при обновлении релиза (раз в месяц?) стартануть софтину, которая соберет нормальную документацию и выложить ее вместе с релизом? Пользователи были бы очень благодарны...
ЗЫ
Нас тут банить за флуд не начнут?
ЗЗЫ
Кстати, вопрос: можно ли как-то роутами заставить КМС обрабатывать урлы по принципу /module/action/par/par/par/ ?
А то она пытается элиас найти, а мне надо, чтоб модуль искала...
Re: Контент другой страницы
Posted: Thu Sep 10, 2009 10:46 pm
by tyu
m00nk wrote:
Делюсь своими наработками.
Выводимый контент будет содержать необработанные смарти-тэги
Здорово! Спасибо! Все получилось. Только вот как бы там смарти-тэги обработать?..

Re: Контент другой страницы
Posted: Fri Sep 11, 2009 5:11 am
by von-hamster
Тэг eval тебе поможет