Ссылка на новость при наличии ее контента — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
Строка 1: Строка 1:
<hr>
+
'''Задача:''' Вывести ссылку на новость при условии, что поле "Контент" этой новости заполнено, или не выводить в ином случае.<br/><br/>
<h2>Как при наличии полного текста новости ставить на нее ссылку, а при отсутствии - не ставить?</h2>
+
'''Реализация:'''
 
+
<h2>TPL-шаблонизатор</h2>
Чтобы реализовать условность в tpl, в шаблоне вывода новостей нужно использовать макрос % data getProperty(% id%, 'content', 'choice')%
+
В шаблоне вывода отдельной новости добавим вызов макроса  %data getProperty()%:
 
+
<source lang="html4strict">
В шаблоне ~/tpls/data/choice.tpl следует написать:
+
%data getProperty('%id%', 'content', 'choice')%
<pre>
+
</source>
 +
Создадим файл tpls\data\choice.tpl и добавим в него следующее содержимое:
 +
<source lang="html4strict">
 
<?php
 
<?php
 
$FORMS = Array();
 
$FORMS = Array();
FORMS['wysiwyg'] = <<<END
 
<a href="% data getProperty(% id%, 'link', 'template')%">
 
  
% data getProperty(% id%, 'h1', 'template')%</a>
+
$FORMS['wysiwyg'] = <<<END
 +
<a href="%content get_page_url(%id%)%">
 +
    %data getProperty(%id%, 'h1', 'default')%
 +
</a>
 
END;
 
END;
  
  
 
$FORMS['wysiwyg_empty'] = <<<END
 
$FORMS['wysiwyg_empty'] = <<<END
% data getProperty(% id%, 'h1', 'template')%
+
    %data getProperty(%id%, 'h1', 'default')%
 
END;
 
END;
?>  
+
?>
</pre>
+
</source>
 
  
Таким образом, у вас в случае наличия текста в поле content будет отдаваться содержимое блока wysiwyg, а в случае отсутствия текста содержимое wysiwyg_empty.
+
Так как, типом поля с идентификатором "content" является HTML Текст ("wysiwyg"), то при наличии содержимого в этом поле будет обработан блок ''''wysiwyg'''', в ином случае блок ''''wysiwyg_empty''''. В данном примере выводится ссылка на новость, если в поле с идентификатором "content" есть данные, или поле "h1" в ином случае.

Версия 12:54, 10 апреля 2014

Задача: Вывести ссылку на новость при условии, что поле "Контент" этой новости заполнено, или не выводить в ином случае.

Реализация:

TPL-шаблонизатор

В шаблоне вывода отдельной новости добавим вызов макроса  %data getProperty()%:

%data getProperty('%id%', 'content', 'choice')%

Создадим файл tpls\data\choice.tpl и добавим в него следующее содержимое:

<?php
$FORMS = Array();

$FORMS['wysiwyg'] = <<<END
<a href="%content get_page_url(%id%)%">
    %data getProperty(%id%, 'h1', 'default')%
</a>
END;


$FORMS['wysiwyg_empty'] = <<<END
    %data getProperty(%id%, 'h1', 'default')%
END;
?>

Так как, типом поля с идентификатором "content" является HTML Текст ("wysiwyg"), то при наличии содержимого в этом поле будет обработан блок 'wysiwyg', в ином случае блок 'wysiwyg_empty'. В данном примере выводится ссылка на новость, если в поле с идентификатором "content" есть данные, или поле "h1" в ином случае.