Как настроить текущую страницу для глобальной навигационной системы в ColdFusion Model Glue 3?
У меня есть страница navigation.cfm, которую я включаю во все свои страницы, используя пользовательский тип события MG3:
<event-type name="pageWithNav">
<after>
<views>
<include name="navigation" template="templates/navigation.cfm"/>
<include name="maintemplate" template="templates/main.cfm"/>
</views>
</after>
</event-type>
И я использую его в обработчике событий так:
<event-handler name="page.home" type="pageWithNav">
<views>
<include name="body" template="pages/home.cfm"/>
</views>
</event-handler>
У меня вопрос, как мне установить переменную, чтобы страница navigation.cfm знала, какая текущая страница? До сих пор я сделал следующее в page.home
обработчик события:
<include name="body" template="pages/home.cfm">
<value name="currentPage" value="home"/>
</include>
Устанавливая подобное значение, оно становится доступным для всех представлений, следующих за ним. Хотя это работает, семантика неправильна, потому что это выглядит как currentPage
переменная используется шаблоном home.cfm вместо navigation.cfm. Каков будет правильный способ сделать это?
1 ответ
Я не уверен, что лучший метод, но вы могли бы рассмотреть возможность установки значения в состоянии просмотра из основного представления, которое можно получить after
Просмотры.
например, в представлении page /home.cfm используйте <cfset viewState.setValue("currentPage","home") />
а потом в представлении templates/navigation.cfm используй <cfset viewState.getValue("currentPage","") />
чтобы восстановить это снова.
Я не пробовал это в контексте after
типы событий, но я использую это, чтобы установить pagetitle
переменная, которую шаблон использует для установки HTML title
приписывать.