Вывод на сайте анонса случайной новости, статьи, картинки средствами 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