Статьи

Mura CMS: Mura Scope

При создании тем вам потребуется доступ к различным значениям и объектам, хранящимся в Mura CMS, для вывода на разметку вашей темы или на страницы примеров. Mura Scope — это быстрый и простой способ доступа к данным и объектам в Mura CMS. Сфера Mura не только позволяет получить доступ к данным на уровне страниц, но также позволяет получить доступ ко всем объектам и функциям! Давайте посмотрим на несколько ключевых вариантов использования Mura Scope.

В учебнике Class Extensions мы добавили некоторые пользовательские атрибуты на страницу Book в Mura и вывели эти значения с помощью компонента. Мы использовали Mura Content Scope для доступа к контентному бину и получения требуемого атрибута. Базовый синтаксис для доступа к компоненту содержимого:

1
$.content(‘someAttribute’)

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

01
02
03
04
05
06
07
08
09
10
11
12
13
14
<!— Page Title —>
$.content(‘title’)
 
<!— Summary —>
$.content(‘summary’)
 
<!— Credits/Author —>
$.content(‘credits’)
 
<!— Type (Page, Folder, Gallery, etc) —>
$.content(‘type’)
 
<!— Extended Attributes —>
$.content(‘myExtendedAttribute’)

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

1
2
3
4
5
<cfif $.currentUser().isLoggedIn()>
    Hello, #$.currentUser(‘fname’)#
<cfelse>
    <!— Display Login Form —>
</cfif>

Эта область дает вам возможность доступа к глобальной информации о вашем сайте Mura CMS, в частности, к большинству значений, которые вы найдете в вашей конфигурации сайта> Изменить сайт в области администратора. Вы, наверное, уже видели, как это используется в теме html_head.cfm при динамическом связывании с вашими файлами CSS и JS:

1
<link rel=»stylesheet» href=»#$.siteConfig(‘themeAssetPath’)#/assets/bootstrap/css/bootstrap.css»>

Это говорит Mura, что независимо от того, как называется тема, найдите ее путь и найдите файл /assets/bootstrap/css/bootstrap.css . Это полезно, потому что предотвращает нарушение путей, если разработчик когда-либо решил изменить название темы на другое (например, название компании клиента) в процессе разработки. Например, если ваша тема ‘MuraBootstrap3’ (поставляется вместе с Mura), путь будет {siteID} / includes / themes / MuraBootstrap3 /

И если разработчик когда-либо изменил название темы на «CompanyABC», путь будет: {siteID} / includes / themes / CompanyABC /

Вы также можете использовать область «Конфигурация сайта» для доступа к имени сайта, так как оно введено администратором:

1
$.siteConfig(‘site’)

Это полезно для таких вещей, как теги заголовка или информация нижнего колонтитула для вашей темы.

В дополнение к извлечению переменных страницы и сайта, Mura Scope может также отображать все встроенные и пользовательские объекты в Mura.

1
$.dspForm(‘My Form’)

Отображение компонента очень распространено в разработке тем. Это позволяет вам иметь сложную разметку в шаблонах макета и позволять редактировать только те элементы, которые вы хотите редактировать пользователям, через администратора.

1
2
3
<div class=’my-class’>
    #$.dspComponent(‘Component Name’)#
</div>
1
$.dspFeed(‘Feed Name’)

Как мы узнали из учебника по пользовательским методам, Mura CMS позволяет легко добавлять пользовательские функции в contentRenderer.cfc вашей темы и получать к ним доступ через область действия Mura. Итак, учитывая следующую функцию в вашей теме contentRenderer.cfc :

1
2
3
<cffunction name=»dspMySlider» output=»yes»>
    <!— Custom Javascript Slider Markup —>
</cffunction>

Вы можете просто вызвать эту функцию с помощью Mura Scope:

1
$.dspMySlider()

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