Bricolage: как проверить, есть ли в истории конкретное поле? - PullRequest
0 голосов
/ 18 апреля 2011

В Bricolage CMS, каким образом можно проверить, есть ли у истории определенный набор полей (в данном случае это называется «тизер»)?

1 Ответ

2 голосов
/ 18 апреля 2011

Вы имеете в виду в шаблоне? Если вы хотите узнать, есть ли в журнале поле в шаблоне, вы можете использовать метод get_field() или get_value(). Используйте get_field(), если вы просто хотите узнать, присутствует ли поле, так как оно возвращает объект Bric :: Biz :: Element :: Field (я предполагаю, что Мейсон использует шаблоны):

if (my $field = $element->get_field('teaser')) {
    $m->print('<p>', $field->get_value, "</p>\n");
}

Если вы хотите узнать, имеет ли поле значение, вы используете get_value():

if (my $val = $element->get_value('teaser')) {
    $m->print("<p>$val</p>\n");
}

Этот метод вернет undef, если объект поля отсутствует, и значение объекта поля, если он существует. Обратите внимание, что если значение является пустой строкой или 0, то там тоже ничего печататься не будет.

Но важно отметить, что документы Bricolage организованы в виде древовидной структуры элементов. Лучший способ создания шаблонов - один для каждого элемента контейнера. Приведенный выше пример может находиться в шаблоне элемента "story" верхнего уровня, где $element будет сам элемент верхнего уровня. Но если ваше поле «teater» находится в подэлементе, скажем «Metadata», вам нужно создать шаблон элемента «metadata» с приведенным выше кодом и вызывать его из шаблона элемента story, например:

$burner->display_element('metadata');

См. Bric :: Templates для ознакомления с шаблонами Bricolage и API.

НТН,

David

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...