Статьи

Mura CMS: переменные шаблона

При создании своих тем вы захотите добавить динамический контент с вашего сайта Mura для отображения метаинформации, заголовков, текста и так далее. Для переменных уровня страницы вам необходимо получить доступ к области content для этой страницы. Это делается с помощью $.content('variableName') . Например, если вам нужно мета-описание страницы, оно будет доступно так:

1
#$.content(‘metaDesc’)#

Полный тег в вашем html_head.cfm будет выглядеть так:

1
<meta name=»description» content=»#HTMLEditFormat($.content(‘metaDesc’))#» />

Для получения информации обо всем сайте, например имени сайта, вы должны использовать область siteConfig :

1
#$.siteConfig(‘variableName’)#

Например, если вы хотите отобразить заголовок вашей страницы, а также имя сайта в теге заголовка вашего шаблона, вы должны сделать следующее:

1
<title>#HTMLEditFormat($.content(‘HTMLTitle’)# — #HTMLEditFormat($.siteConfig(‘site’))#</title>

Совет: HTMLEditFormat() заменяет специальные символы ( < , > , & , " ) в строке их экранированными HTML-эквивалентами. Например, он заменит < на &lt;

Если вы хотите увидеть все доступные значения как для контента, так и для вашего сайта, поместите следующий код в любой из ваших шаблонов страниц и запустите страницу:

1
<cfdump var=“#$.content().getAllValues()#”>
1
<cfdump var=“#$.siteConfig().getAllValues()#”>

Каждый элемент в левом столбце может быть передан в соответствующую область. Например:

1
#$.content(‘metaKeywords’)#

и

1
#$.siteConfig(‘domain’)#

Иногда вам может потребоваться вывести некоторую разметку, только если в поле введено значение. Например, если вы хотите вывести автора страницы, вы можете сделать что-то вроде этого:

1
<strong>Written By:</strong> #$.content(‘credits’)#

Однако, если на этой конкретной странице не было автора, введенного в поле «Авторы», ваша страница просто отобразит « Автор»:

Чтобы избежать этого, мы можем использовать немного логику CFML:

1
2
3
<cfif len($.content(‘credits’)>
    <strong>Written By:</strong> #$.content(‘credits’)#
</cfif>

Функция len (сокращение от «length») в CFML определяет длину переменной. Если true (то есть в поле есть значение), оно будет идти вперед и выводить вашу разметку. В противном случае, он просто пропустит его и ничего не выдаст.

Mura имеет встроенную функцию для автоматического захвата всех страниц верхнего уровня в менеджере вашего сайта и отображения их в списке навигации:

1
#$.dspPrimaryNav()#

Функция $.dspPrimaryNav() будет отображаться в том порядке, который вы настроили в менеджере своего сайта. Элементы, для которых установлено значение « Нет» или «Навигация» установлена ​​на « Нет» , не будут отображаться в вашей основной навигации.

Вы можете передать несколько аргументов в эту функцию для управления различными аспектами вашей навигационной информации:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
#$.dspPrimaryNav(
viewDepth=1
, id=’navPrimary’
, class=»
, displayHome=’never’
, closeFolders=false
, showCurrentChildrenOnly=false
, liHasKidsClass=»
, liHasKidsAttributes=»
, liCurrentClass=»
, liCurrentAttributes=»
, liHasKidsNestedClass=»
, aHasKidsClass=’
, aHasKidsAttributes=»
, aCurrentClass=»
, aCurrentAttributes=»
, ulNestedClass=»
, ulNestedAttributes=»
, aNotCurrentClass=»
, siteid=$.event(‘siteid’)
)#

Полный список этих аргументов и их описания можно найти в документации Мура .

Вывод по умолчанию основной навигации — это простой неупорядоченный список ( <ul> ):

Однако, добавив некоторую дополнительную разметку вокруг навигационной панели и скорректировав некоторые аргументы, вы можете быстро встроить это в любую тему CSS:

Рекомендуется <cf_CacheOMatic> основной код навигации в <cf_CacheOMatic> чтобы повысить производительность своего сайта. Тег cf_CacheOMatic может использоваться для кэширования менее часто обновляемых элементов, которые имеют большие издержки сервера приложений. Он используется вместе с параметром « Кэширование» в разделе « Конфигурация сайта»> «Редактировать сайт» . Тег cf_CacheOMatic самом деле ничего не будет кэшировать, если не включено кэширование сайта. Префикс атрибута «ключ» (в данном случае dspPrimaryNav ) можно использовать для предоставления контекста уникальной переменной #$.content('contentid')# , созданной для кэшируемого элемента.

Ваш полный Primay Nav будет выглядеть примерно так:

1
2
3
4
5
<cf_CacheOMatic key=»dspPrimaryNav#$.content(‘contentid’)#»>
    #$.dspPrimaryNav(
        …
    )#
</cf_CacheOMatic>

Чтобы вывести заголовок страницы, тело и связанное изображение, вам нужно использовать тег $.dspBody() и указать эти элементы:

1
2
3
4
5
#$.dspBody(
body=$.content(‘body’)
, pageTitle=$.content(‘title’)
, showMetaImage=1
)#

Это автоматически выведет эти элементы вместе на визуализированной странице. Если вам нужно отделить заголовок страницы или полностью удалить его, вы также можете сделать это:

1
2
3
4
5
6
7
<h2 class=»pageTitle»>#HTMLEditFormat($.content(‘title’))#</h2>
 
#$.dspBody(
body=$.content(‘body’)
, pageTitle=»
, showMetaImage=1
)#

$.dspBody() — это специальная функция в Mura, которая поддерживает другие функции, такие как страницы, защищенные паролем, вывод папки и т. д. Рекомендуется использовать $.dspBody() для вывода тела в ваших шаблонах, чтобы гарантировать, что эти типы функций будут продолжайте работать правильно.

Наконец, вы можете использовать встроенную функцию Mura для вывода крошек страницы следующим образом:

1
#$.dspCrumbListLinks()#

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