Вывод на сайте анонса случайной новости, статьи, картинки средствами XSLT
На днях случайно наткнулся на статью "". Суть статьи в том, чтоб вывести на сайте случайным образом содержимое какой-либо страницы.
Статейка не большая, а решение интересное. Единственный для меня минус в том, что в итоге кастомный макрос обрабатывается средствами TPL-шаблонизатора. А с TPL-шаблонизатором я ну вообще никак, а сайты разрабатываю исключительно с применением XSLT.
Итак, задача ясна. Для начала приведу код кастомной функции из статьи ссылка на которую есть выше.
public function random_child_id($element_id) {
$childs = Array();
$childs = umiHierarchy::getInstance()->getChilds($element_id);
$rand_element = array_rand($childs, 1);
return $rand_element;
}
Как и положенно, размещаем эту функцию в файле /classes/modules/custom.php сразу после строки //TODO: Write your own macroses here.
Теперь в шаблоне, где планируем вывод нашей случайной информации пропишем следующий код:
<xsl:apply-templates select="result" mode="random" />
Ну и давайте теперь напишем сам шаблон который и будет выводить результат работы кастомного макроса. Я приведу пример своего шаблона, который выводит на этом сайте случайные работы из раздела "Портфолио".
<xsl:template match="result" mode="random" >
<xsl:variable name="var_random_id" select="document('udata://custom/random_child_id/(7)')" />
<xsl:variable name="filepath_1" select="document(concat('upage://', $var_random_id,'.publish_pic'))//value/@path" />
<xsl:variable name="var_random_id_h1" select="document(concat('upage://', $var_random_id,'.h1'))/udata/property/value" />
<div class="random">
<h3>Случайная работа из портфолио:<h3>
<img alt="{$var_random_id_h1}" title="{$var_random_id_h1}">
<xsl:attribute name="src">
<xsl:value-of select="document(concat('udata://system/makeThumbnailFull/(', $filepath_1, ')/200/200/notemplate/0/1/2'))//src" />
</xsl:attribute>
</img>
</div>
</xsl:template >
Да кстати, цыфра (7) что фигуриррует в записи в переменной var_random_id - это ID страницы родителя, от куда будут браться содержимое случайных страниц.
16.11.2011