Контент другой страницы

Обсуждение CMS Made Simple в России.

Moderators: iturbay, wdwp

Post Reply
tyu
New Member
New Member
Posts: 7
Joined: Mon Aug 24, 2009 11:07 am

Контент другой страницы

Post by tyu »

Привет!
Можно ли вставить в шаблон страницы {content} от другой страницы (через ее ID или алиас)?
von-hamster
Power Poster
Power Poster
Posts: 339
Joined: Thu Nov 01, 2007 3:11 pm

Re: Контент другой страницы

Post by von-hamster »

Можно... Как это сделать - ищи - что-то подобное было на форуме... В любом случае придется писать свой тэг.
skyboy
Forum Members
Forum Members
Posts: 39
Joined: Mon Dec 01, 2008 11:41 am

Re: Контент другой страницы

Post by skyboy »

вопрос по структуре: может, если некий контент настолько универсальный, что появляется не на одной странице, а на нескольких, есть смысл вынести управление им(ими?) под отдельный модуль? или хотя бы в блок глобального контента?
мне сложно представить ситуацию, когда надо вывести именно кусок другой страницы(потому как страница, в отличие от вывода какого-то модуля предполагает вывод не только информации, но и собственного оформления - если же оформление особого нет, то это просто глобальный блок контента же!)
tyu
New Member
New Member
Posts: 7
Joined: Mon Aug 24, 2009 11:07 am

Re: Контент другой страницы

Post 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/, серые вкладки.
Last edited by tyu on Mon Aug 31, 2009 5:13 am, edited 1 time in total.
User avatar
m00nk
Forum Members
Forum Members
Posts: 57
Joined: Wed Sep 09, 2009 10:48 pm

Re: Контент другой страницы

Post 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'];
I hate CMSMS. :(
von-hamster
Power Poster
Power Poster
Posts: 339
Joined: Thu Nov 01, 2007 3:11 pm

Re: Контент другой страницы

Post by von-hamster »

ВНИМАНИЕ!!!
Описанный алгоритм работает не всегда. По какой-то неясной мне причине иногда массив $curcontent->mProperties->mPropertyValues содержит пустые значения. Поэтому лучше для надежности применять следующий вариант:
Он будет работать всегда, если вначале загрузить свойства...
$curcontent->mProperties->load($page_id);

или не напрямую обращаться к свойству, а через метод:
$curcontent->GetPropertyValue($name);
где, например, $name = 'content_en';
User avatar
m00nk
Forum Members
Forum Members
Posts: 57
Joined: Wed Sep 09, 2009 10:48 pm

Re: Контент другой страницы

Post by m00nk »

Спасибо за подсказку, как-нить попробую на практике.

А вообще было бы очень здорово, если бы авторы нашли время, чтобы написать нормальную документацию по API, а не отделываться от разработчиков парой статей...  :-[
I hate CMSMS. :(
von-hamster
Power Poster
Power Poster
Posts: 339
Joined: Thu Nov 01, 2007 3:11 pm

Re: Контент другой страницы

Post by von-hamster »

На самом деле API описано в коде... Другое дело - его нужно оттуда достать... Например при помощи phpdocumentor'a
User avatar
m00nk
Forum Members
Forum Members
Posts: 57
Joined: Wed Sep 09, 2009 10:48 pm

Re: Контент другой страницы

Post by m00nk »

На самом деле 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. :(
tyu
New Member
New Member
Posts: 7
Joined: Mon Aug 24, 2009 11:07 am

Re: Контент другой страницы

Post by tyu »

m00nk wrote: Делюсь своими наработками.
Выводимый контент будет содержать необработанные смарти-тэги
Здорово! Спасибо! Все получилось. Только вот как бы там смарти-тэги обработать?..:)
von-hamster
Power Poster
Power Poster
Posts: 339
Joined: Thu Nov 01, 2007 3:11 pm

Re: Контент другой страницы

Post by von-hamster »

Тэг eval тебе поможет
Post Reply

Return to “Russian - русский”