как отображать контент конкретной страни
как отображать контент конкретной страни
Добрый день.
Подскажите пожалуйста, как выводить контент для отдельной странички по аналогии с тегом {content}, но для явно указанной страницы. Спасибо.
Подскажите пожалуйста, как выводить контент для отдельной странички по аналогии с тегом {content}, но для явно указанной страницы. Спасибо.
Re: как отображать контент конкретной стран
а зачем "по аналогии"? Можно сделать на эту явно указанную страницу ссылку, присвоить ей (странице) свой темплейт (если он должен отличаться) и все выведется через тег {content}. Страницу при этом необязательно отображать в меню.balabas wrote: Добрый день.
Подскажите пожалуйста, как выводить контент для отдельной странички по аналогии с тегом {content}, но для явно указанной страницы. Спасибо.
Re: как отображать контент конкретной стран
спасибо большое за ответ. я немного не правильно сформулировал вопрос.
меня интересует следующая ситуация:
есть главная страница, на ней нужно отобразить в разных блоках контент из различных страничек.
тоесть например я вывожу в трёх блоках на главной "наши услуги". соответственно странички с "нашими услугами" редактируются в соответствующей ветке с контентом. как такого можно добиться штатными средствами cms ?
меня интересует следующая ситуация:
есть главная страница, на ней нужно отобразить в разных блоках контент из различных страничек.
тоесть например я вывожу в трёх блоках на главной "наши услуги". соответственно странички с "нашими услугами" редактируются в соответствующей ветке с контентом. как такого можно добиться штатными средствами cms ?
Re: как отображать контент конкретной стран
А зачем так делать? Я не думаю, что каким-то штатным образом это возможно. Может быть через CGExtensions какие-то или если свой плагин написать. Можно просто блок контента создать, положить на главную и в услуги и редактировать его.
unsigned double ZYV;
- Il_Burbero
- Forum Members
- Posts: 128
- Joined: Tue Apr 15, 2008 10:36 am
Re: как отображать контент конкретной стран
Сделайте то что нужно выводить где то еще как Блок Контента и выводите где хотите, отдельная страница - аналогично, только вместо контента вызов блока...
Re: как отображать контент конкретной стран
Спасибо, но если ситуация следующая:
имеем страницу аналогичную http://treli.ru/section.mhtml?Part=1
В центральной колонке выведены краткие анонсы статей со своими превьюшками,
как лучше реализовать аналог ?
имеем страницу аналогичную http://treli.ru/section.mhtml?Part=1
В центральной колонке выведены краткие анонсы статей со своими превьюшками,
как лучше реализовать аналог ?
- Il_Burbero
- Forum Members
- Posts: 128
- Joined: Tue Apr 15, 2008 10:36 am
Re: как отображать контент конкретной стран
Понятно.
Есть пара-тройка способов.
1. Используя знания пхп смарти и класс ContentBase написать свой плаг для выдергивания превью. Интро и контент можно разделить Content Blockами.
2. Заюзать для этого модуль News. Если уже используется News то либо разделить категориями - т.е. Новости имеют категории Категория1, Категория2 и т.д. а Статьи КатегорияСтатьи1, КатегорияСтатьи2 и т.д. Либо руками перебить модуль News.
3. Используя ПХП написать плаг для простого выдергивания определенной части контента из БД.
Есть пара-тройка способов.
1. Используя знания пхп смарти и класс ContentBase написать свой плаг для выдергивания превью. Интро и контент можно разделить Content Blockами.
2. Заюзать для этого модуль News. Если уже используется News то либо разделить категориями - т.е. Новости имеют категории Категория1, Категория2 и т.д. а Статьи КатегорияСтатьи1, КатегорияСтатьи2 и т.д. Либо руками перебить модуль News.
3. Используя ПХП написать плаг для простого выдергивания определенной части контента из БД.
-
- Power Poster
- Posts: 339
- Joined: Thu Nov 01, 2007 3:11 pm
Re: как отображать контент конкретной стран
Есть как минимум 2 способа:
1. стандартными средствами цмс
2. с помощью хаков
1.1. для внутренних страниц создаешь шаблон, в котором помимо основного контента добавляешь контент превьюшки ({content block="short_desc"})
1.2. пишешь тэг пользователя (например, test) примерно такого содержания:
1.3. На странице вызываешь тэг {test parent='Здесь_id_родительской страницы'}
1.4. пишешь шаблон ко всему этому, например:
Но в этом случае на страничке с полной статьей будет короткое описание, нужно придумать как его скрывать, если оно не нужно...
Ну или краткое описание вырезать из полного, тогда 'ShortDesc' => $one->GetValue('short_desc') заменяем на 'ShortDesc' => $one->GetValue('content_en') и обрезаем в шаблоне модификатором (если при помощи модификатора смарти truncate - то там могут быть проблемы, тк смарти использует стандартные функции работы со строками и в utf8 могут появиться вконце обрезки знаки вопроса. Я исправил это написав свой плагин для обрезки:
). Тогда в шаблоне нужно писать: {$item.ShortDesc|tru}
2. В принципе то-же первый, только меняю вручную файл Content.inc.php - добавляю краткое описание, и поле для него. Подробнее, как это делается - уже писал на форуме. Преимущества: не обязательно создавать свой шаблон для внутрених страниц. Недостатки: при обновлении теряются все исправления.
1. стандартными средствами цмс
2. с помощью хаков
1.1. для внутренних страниц создаешь шаблон, в котором помимо основного контента добавляешь контент превьюшки ({content block="short_desc"})
1.2. пишешь тэг пользователя (например, test) примерно такого содержания:
Code: Select all
global $gCms;
$allcontent =& ContentOperations::GetAllContent();
$list = array();
foreach ($allcontent as &$one) {
if ($one->mActive!=1) {
continue;
}
if ($one->FriendlyName() == 'Separator') {
continue;
}
if ($one->ParentId() == $params['parent']) {
$one->mProperties->Load($one->Id());
$url = $one->GetURL();
$url = substr($url, 0, 7) == 'http://' ? $url : '/' . $url;
$list[$one->Id()] = array(
'url' => $url,
'MenuText' => $one->MenuText(),
'Name' => $one->Name(),
'Title' => $one->TitleAttribute(),
'ShortDesc' => $one->GetValue('short_desc'),
);
}
}
$smarty =& $gCms->GetSmarty();
$smarty->assign('items', $list);
1.4. пишешь шаблон ко всему этому, например:
Code: Select all
<ol>
{foreach item=item from=$items}
<li><a href="{$item.url}">{$item.MenuText}</a><p>{$item.ShortDesc}</p>
{/foreach}
</ol>
Ну или краткое описание вырезать из полного, тогда 'ShortDesc' => $one->GetValue('short_desc') заменяем на 'ShortDesc' => $one->GetValue('content_en') и обрезаем в шаблоне модификатором (если при помощи модификатора смарти truncate - то там могут быть проблемы, тк смарти использует стандартные функции работы со строками и в utf8 могут появиться вконце обрезки знаки вопроса. Я исправил это написав свой плагин для обрезки:
Code: Select all
function smarty_cms_modifier_tru($string, $length = 80, $etc = '...') {
if ($length == 0) {
return '';
}
$string = trim(preg_replace('!\s+!uis', ' ', strip_tags($string)));
if (strlen($string) > $length) {
$string = mb_substr($string, 0, $length+1, 'utf8');
$string = preg_replace('/\s(\S+)?$/u', '', $string);
return $string . $etc;
} else {
return $string;
}
}
2. В принципе то-же первый, только меняю вручную файл Content.inc.php - добавляю краткое описание, и поле для него. Подробнее, как это делается - уже писал на форуме. Преимущества: не обязательно создавать свой шаблон для внутрених страниц. Недостатки: при обновлении теряются все исправления.
Re: как отображать контент конкретной стран
Спасибо друзья за исчерпывающие ответы, буду реализовывать 

Re: как отображать контент конкретной стран
Поздно увидела. Для таких целей использую content_dump
http://wiki.cmsmadesimple.org/index.php ... ntent_dump
http://wiki.cmsmadesimple.org/index.php ... ntent_dump