Контент другой страницы
Контент другой страницы
Привет!
Можно ли вставить в шаблон страницы {content} от другой страницы (через ее ID или алиас)?
Можно ли вставить в шаблон страницы {content} от другой страницы (через ее ID или алиас)?
-
- Power Poster
- Posts: 339
- Joined: Thu Nov 01, 2007 3:11 pm
Re: Контент другой страницы
Можно... Как это сделать - ищи - что-то подобное было на форуме... В любом случае придется писать свой тэг.
Re: Контент другой страницы
вопрос по структуре: может, если некий контент настолько универсальный, что появляется не на одной странице, а на нескольких, есть смысл вынести управление им(ими?) под отдельный модуль? или хотя бы в блок глобального контента?
мне сложно представить ситуацию, когда надо вывести именно кусок другой страницы(потому как страница, в отличие от вывода какого-то модуля предполагает вывод не только информации, но и собственного оформления - если же оформление особого нет, то это просто глобальный блок контента же!)
мне сложно представить ситуацию, когда надо вывести именно кусок другой страницы(потому как страница, в отличие от вывода какого-то модуля предполагает вывод не только информации, но и собственного оформления - если же оформление особого нет, то это просто глобальный блок контента же!)
Re: Контент другой страницы
Структура страниц по уровням:
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/, серые вкладки.
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/, серые вкладки.
Last edited by tyu on Mon Aug 31, 2009 5:13 am, edited 1 time in total.
Re: Контент другой страницы
Делюсь своими наработками.
Получение контента нужной страницы
Выводимый контент будет содержать необработанные смарти-тэги
$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'];
Получение контента нужной страницы
Выводимый контент будет содержать необработанные смарти-тэги
$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'];
I hate CMSMS. 

-
- Power Poster
- Posts: 339
- Joined: Thu Nov 01, 2007 3:11 pm
Re: Контент другой страницы
Он будет работать всегда, если вначале загрузить свойства...ВНИМАНИЕ!!!
Описанный алгоритм работает не всегда. По какой-то неясной мне причине иногда массив $curcontent->mProperties->mPropertyValues содержит пустые значения. Поэтому лучше для надежности применять следующий вариант:
$curcontent->mProperties->load($page_id);
или не напрямую обращаться к свойству, а через метод:
$curcontent->GetPropertyValue($name);
где, например, $name = 'content_en';
Re: Контент другой страницы
Спасибо за подсказку, как-нить попробую на практике.
А вообще было бы очень здорово, если бы авторы нашли время, чтобы написать нормальную документацию по API, а не отделываться от разработчиков парой статей...
А вообще было бы очень здорово, если бы авторы нашли время, чтобы написать нормальную документацию по API, а не отделываться от разработчиков парой статей...

I hate CMSMS. 

-
- Power Poster
- Posts: 339
- Joined: Thu Nov 01, 2007 3:11 pm
Re: Контент другой страницы
На самом деле API описано в коде... Другое дело - его нужно оттуда достать... Например при помощи phpdocumentor'a
Re: Контент другой страницы
На самом деле API описано в коде... Другое дело - его нужно оттуда достать...
Ну так неужели для разработчиков это такое сложное дело - при обновлении релиза (раз в месяц?) стартануть софтину, которая соберет нормальную документацию и выложить ее вместе с релизом? Пользователи были бы очень благодарны...

ЗЫ
Нас тут банить за флуд не начнут?

ЗЗЫ
Кстати, вопрос: можно ли как-то роутами заставить КМС обрабатывать урлы по принципу /module/action/par/par/par/ ?
А то она пытается элиас найти, а мне надо, чтоб модуль искала...
Last edited by m00nk on Thu Sep 10, 2009 3:03 pm, edited 1 time in total.
I hate CMSMS. 

Re: Контент другой страницы
Здорово! Спасибо! Все получилось. Только вот как бы там смарти-тэги обработать?..m00nk wrote: Делюсь своими наработками.
Выводимый контент будет содержать необработанные смарти-тэги

-
- Power Poster
- Posts: 339
- Joined: Thu Nov 01, 2007 3:11 pm
Re: Контент другой страницы
Тэг eval тебе поможет