вторник, 1 октября 2013 г.

Константы TYPO3 в шаблоне FLUID


При формировании меню с помощью FLUID, а точнее вьюхелпером - page.menu из пакета VHS, столкнулся с задачей передачи значения константы TYPO3 в качестве одного из параметров вьюхелпера.

Вот как выглядел viewhelper изначально:

<v:page.menu showHidden="1" doktypes="3" classCurrent="" classActive="" classFirst="" classLast="last" pageUid="26">
<ul class="socicons-container">
<f:for each="{menu}" as="menuLink" iteration="menuIterator">
<li {f:if(condition: menuIterator.isLast, then: 'class="last"')}>
<a href="{menuLink.link}" title="{menuLink.title}" target="{menuLink.target}">
<img src="fileadmin/tmpl/florian/Resources/Public/images/icons/{menuLink.subtitle}" width="30" height="30" alt="{menuLink.title}" />
</a>
</li>
</f:for>
</ul>
</v:page.menu>

тут меню формируется на основании страниц, которые содержатся в системной папке с id=26.

Понятное дело, что тупое указание id это не очень хорошо как для пользователя сайта, так и для его разработчика, который планирует использовать наработку с последующих проектах. Поэтому я решил заменить число 26 на тайповскую константу, которую всегда можно будет изменить в разделе констант шаблона. Причем сделать это будет под силу кому угодно, даже не очень эдвансед юзеру.

Итак, создаем TYPO3-константу:

socialIcons = 26


Как же ее значение использовать вьюхелпером? Для этого нужен промежуточный этап. Сначала значение данной константы помещаем в объект lib:

lib.constants.socialIcons.id = {$socialIcons}

А вот значение параметра lib внутри вьюхелпера можно получить с помощью другого вьюхелпера - var.typoscript. В итоге получаем следующую конструкцию:

<v:page.menu showHidden="1" doktypes="3" classCurrent="" classActive="" classFirst="" classLast="last" pageUid="{v:var.typoscript(path: 'lib.constants.socialIcons.id')}">
<ul class="socicons-container">
<f:for each="{menu}" as="menuLink" iteration="menuIterator">
<li {f:if(condition: menuIterator.isLast, then: 'class="last"')}>
<a href="{menuLink.link}" title="{menuLink.title}" target="{menuLink.target}">
<img src="fileadmin/tmpl/florian/Resources/Public/images/icons/{menuLink.subtitle}" width="30" height="30" alt="{menuLink.title}" />
</a>
</li>
</f:for>
</ul>
</v:page.menu>


P.S. Т.к. в примере используется пакет VHS, то не забывайте подключать его с помощью - {namespace v=Tx_Vhs_ViewHelpers} в начале html-шаблона.



2 коммент.:

tim beggins комментирует...

www.cheport.com.ua разработка сайта услуги

Alarico Adalbert комментирует...

«Я не смог бы закрыть свой первый дом без мистера Бенджамина Ли! Бенджамин и его команда сделали все возможное для меня в этой сделке. Он с легкостью справился с моей очень трудной ситуацией и всегда был доступен для меня, когда у меня были вопросы (а у меня их было много), даже когда он был вдали от офиса, что я очень ценил! Он и его команда уладили множество споров с продавцом в последнюю минуту и ​​неустанно работали, чтобы убедиться, что я смогу закрыть до истечения срока аренды (и моей помощи в первоначальном взносе, если на то пошло). Г-н Бенджамин невероятно знающий кредитный специалист, вежливый и терпеливый. Перед моей последней покупкой я просмотрел пару предложений по недвижимости, и Бенджамин был рядом, чтобы помочь с каждым из них, часто координируя свои действия с моим агентом за кулисами. Я чувствовал поддержку на протяжении всего процесса. Благодаря Бенджамину и неустанным усилиям его команды я стал счастливым владельцем дома! Я бы посоветовал вам рассмотреть вопрос о ссуде Бенджамина Бриэля Ли. Г-н Бенджамин Ли Контактная информация через WhatsApp + 1-989-394-3740 Электронная почта- 247officedept@gmail.com.

Отправить комментарий

О себе

Моя фотография
Вадим Гиркало
Фрилансер, веб-разработчик сайтов на базе бесплатной, мощнейшей и очень гибкой CMS системы - TYPO3.
Просмотреть профиль

Позвонить мне в Skype

TOP - 3