как отображать контент конкретной страни

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

Moderators: iturbay, wdwp

Post Reply
balabas
New Member
New Member
Posts: 6
Joined: Tue Mar 31, 2009 10:04 am

как отображать контент конкретной страни

Post by balabas »

Добрый день.
Подскажите пожалуйста, как выводить контент для отдельной странички по аналогии с тегом {content}, но для явно указанной страницы. Спасибо.
ilia3d

Re: как отображать контент конкретной стран&#

Post by ilia3d »

balabas wrote: Добрый день.
Подскажите пожалуйста, как выводить контент для отдельной странички по аналогии с тегом {content}, но для явно указанной страницы. Спасибо.
а зачем "по аналогии"? Можно сделать на эту явно указанную страницу ссылку, присвоить ей (странице) свой темплейт (если он должен отличаться) и все выведется через тег {content}. Страницу при этом необязательно отображать в меню.
balabas
New Member
New Member
Posts: 6
Joined: Tue Mar 31, 2009 10:04 am

Re: как отображать контент конкретной стран&#

Post by balabas »

спасибо большое за ответ. я немного не правильно сформулировал вопрос.
меня интересует следующая ситуация:
есть главная страница, на ней нужно отобразить в разных блоках контент из различных страничек.
тоесть например я вывожу в трёх блоках на главной "наши услуги". соответственно странички с "нашими услугами" редактируются в соответствующей ветке с контентом. как такого можно добиться штатными средствами cms ?
ZYV
Language Partners
Language Partners
Posts: 868
Joined: Tue Nov 15, 2005 9:08 pm

Re: как отображать контент конкретной стран&#

Post by ZYV »

А зачем так делать? Я не думаю, что каким-то штатным образом это возможно. Может быть через CGExtensions какие-то или если свой плагин написать. Можно просто блок контента создать, положить на главную и в услуги и редактировать его.
unsigned double ZYV;
User avatar
Il_Burbero
Forum Members
Forum Members
Posts: 128
Joined: Tue Apr 15, 2008 10:36 am

Re: как отображать контент конкретной стран&#

Post by Il_Burbero »

Сделайте то что нужно выводить где то еще как Блок Контента и выводите где хотите, отдельная страница - аналогично, только вместо контента вызов блока...
ZYV
Language Partners
Language Partners
Posts: 868
Joined: Tue Nov 15, 2005 9:08 pm

Re: как отображать контент конкретной стран&#

Post by ZYV »

Эээ... 1:1 о чем я и говорю.
unsigned double ZYV;
balabas
New Member
New Member
Posts: 6
Joined: Tue Mar 31, 2009 10:04 am

Re: как отображать контент конкретной стран&#

Post by balabas »

Спасибо, но если ситуация следующая:
имеем страницу аналогичную http://treli.ru/section.mhtml?Part=1
В центральной колонке выведены краткие анонсы статей со своими превьюшками,
как лучше реализовать аналог ?
User avatar
Il_Burbero
Forum Members
Forum Members
Posts: 128
Joined: Tue Apr 15, 2008 10:36 am

Re: как отображать контент конкретной стран&#

Post by Il_Burbero »

Понятно.
Есть пара-тройка способов.
1. Используя знания пхп смарти и класс ContentBase написать свой плаг для выдергивания превью. Интро и контент можно разделить Content Blockами.
2. Заюзать для этого модуль News. Если уже используется News то либо разделить категориями - т.е. Новости имеют категории Категория1, Категория2 и т.д. а Статьи КатегорияСтатьи1, КатегорияСтатьи2 и т.д. Либо руками перебить модуль News.
3. Используя ПХП написать плаг для простого выдергивания определенной части контента из БД.
von-hamster
Power Poster
Power Poster
Posts: 339
Joined: Thu Nov 01, 2007 3:11 pm

Re: как отображать контент конкретной стран&#

Post by von-hamster »

Есть как минимум 2 способа:
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.3. На странице вызываешь тэг {test parent='Здесь_id_родительской страницы'}
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;
    }
}
). Тогда в шаблоне нужно писать: {$item.ShortDesc|tru}

2. В принципе то-же первый, только меняю вручную файл Content.inc.php - добавляю краткое описание, и поле для него. Подробнее, как это делается - уже писал на форуме. Преимущества: не обязательно создавать свой шаблон для внутрених страниц. Недостатки: при обновлении теряются все исправления.
balabas
New Member
New Member
Posts: 6
Joined: Tue Mar 31, 2009 10:04 am

Re: как отображать контент конкретной стран&#

Post by balabas »

Спасибо друзья за исчерпывающие ответы, буду реализовывать  :)
Sonya

Re: как отображать контент конкретной стран&#

Post by Sonya »

Поздно увидела. Для таких целей использую content_dump

http://wiki.cmsmadesimple.org/index.php ... ntent_dump
Post Reply

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