16.02.2009 | 01:00

Данное решение полезно, если на сайте вам нужен блок преамбул случайных статей или отзывов.

Идеология такова: создаем в модуле структура "страницу контента", называем ее, к примеру, - "Статьи" и вкладываем в нее n-ное количество подстраниц (самих статей).

Далее открываем /classes/modules/custom.php и после строчки //TODO: Write your own macroses here вставляем следующий текст (внимание: после второго символа % поставлен пробел, уберите его после вставки в шаблон):

 

public function random_article($element_id, $template = 'default', $quantity = '1', $char_quantity = '0', $strip_tags = 1) {
list($template_block, $template_line) = def_module::loadTemplates("./tpls/custom/{$template}.tpl", "article_block_view", "article_line_view");
$lines = Array();

$childs = Array();
$childs = umiHierarchy::getInstance()->getChilds($element_id, false, false);
if (count($childs) < $quantity) $quantity = count($childs);
if ($quantity > 0) $rand_element_id = (array) array_rand($childs, $quantity);
else $rand_element_id = (array) $childs;

foreach($rand_element_id as $element_id) {
$article = u miHierarchy::getInstance()-> ;getElement($element_id)->g etObject();
$article_content = $article->getValue('content');
if ($strip_tags == 1) $article_content = strip_tags($article_content);
if ($char_quantity > 0) $article_content = $this->CutStr($article_content, ' ,.;nr>', $char_quantity);
$line_arr = Array();
$line_arr['attribute:id'] = $element_id;
$line_arr['attribute:link'] = umiHierarchy::getInstance()->getPathById($element_id);
$line_arr['attribute:name'] = $article->getName();
$line_arr['node:content'] = $article_content;

$lines[] = def_module::parseTemplate($template_line, $line_arr);
}
$block_arr['subnodes:items'] = $lines;

return def_module::parseTemplate($template_block, $block_arr);
}

public function CutStr($S, $Chars, $FromPos = 0) {
if (strlen($S) <= $FromPos) return $S;
$p = 0;
for ($i = 0; $i < strlen($Chars); $i++) {
$pos = strpos($S, $Chars[$i], $FromPos);
if (is_int($pos)) {
$p = $i == 0 ? $pos : min($p, $pos);
}
}
return substr($S, 0, max($p, $FromPos) );
}

 

Затем создаем файл шаблона
/tpls/custom/default.tpl

В него вставляем следующий текст:

 

<?php

$FORMS = Array();

$FORMS['article_block_view'] = <<<END
%items %

END;

$FORMS['article_line_view'] = <<<END
<div class="useful_info_content">
<a href="%link %">%name %</a>
<p>%content %...</p>
</div>

END;

?>

Внутри блока article_line_view можно использовать следующее:

%id % - id страницы
%link % - ссылка на страницу
%content % - содержание страницы
%name % - название страницы

Вызов макроса и параметры:
%custom random_article([element_id, template = 'default',  quantity = '1', char_quantity = '0', $strip_tags = '1']) %

  • element_id - id раздела
  • template - Имя шаблона
  • quantity - количество статей для вывода в блоке
  • char_quantity - количество символов в преамбуле, если 0, то то текст статьи обрезаться не будет
  • strip_tags - если 1, то из текста статьи будут удаляться теги, если 0, то очистка от тегов не будет происходить

Внимание, не включайте обрезку, если  strip_tags = 0, т.к. тут нету проверки на открывающие/закрывающие теги

....Но впринципе не сложно и дописать

Если кому-то нужен модуль "Статьи", представляющий по сути упрощенный модуль новостей, без лент сюжетов и прочего, но с рандомом, в будущем могу выложить.

Читайте также:

Категории

Теги

MySQL разделение баз данных партнеры технологии Кейсы мероприятия обзоры маркетинг developer программинг менеджмент xslt документация шаблоны Служба Заботы маркетинг веб студии москва UMI UMISummit события umisummit лицензии новинки UMI Edu UMI Cloud продукты UMI модуль business облако тегов кастомы uwdc Челябинск разработчики конференция Конкурс UMIRU exchange 28 Обмен данными 1C Интеграция с 1С версии UMICMS хостинг юмихост umihost UMICMS рейтинг техподдержка видео tpl local scope macro кейсы итоги года SAPE seo мероприятие рынок веб разработки экономика Алексей Самойлов Сергей Котырев KINETICA CMS Сибирская интернетнеделя UMIWorkshop интернетмагазин интернет-магазин интернет магазин интернет-маркетинг flash actionscript каталог анимация Золотой сайт umi_workshop акция стратегия партнерская_программа партнерство highload РуПромо Машков версия 2_7 кэширование скорость стихи день рождения статьи пресс конференция версия 2_5 Edit_in_Place онлайн платежи кризис достижения CeBIT внедрения umi cms блоги верстка релиз EditInPlace изучение Юми создание модуля модули ReMIX UMI_CMS_Net iPhone XML драйвер как убрать лампочку форма обратной связи языковые версии CMS Pistols музыка UMICMS 28 удобство юзабилити usability user experience интерфейсы CMS Eye tracking ай тракинг usability test UXRussia управление сайтом RIW Russian internet week Softool выставки интернет клиенты сайты umisound cms pistols РИФ 2011 Tagline качество 2012 UMISound Полюса Илья Разин Марат Машков

Авторы блога