Статьи

Mura CMS: Mura Iterator

Всякий раз, когда вы видите тему, в которой есть такие вещи, как блог, портфолио, наша команда и т. Д., Это набор контента, который просматривается из базы данных. С Mura CMS вы можете легко создавать коллекции контента и выводить их на любую страницу.

В этом уроке мы собираемся создать коллекцию членов команды для веб-сайта.

Создайте новую папку с именем Team Members в вашем менеджере сайта:

Примечание. Убедитесь, что для параметра «Навигация» установлено значение «Нет», поскольку мы просто используем эту папку в качестве хранилища для членов нашей команды.

Локальные индексы — это коллекции контента в администраторе Mura. Нажмите здесь, чтобы узнать больше о создании локальных индексов.

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

1
2
3
4
5
6
7
8
<cffunction name=»dspTeamFeed» output=»yes»>
    <cfsavecontent variable=»ret»>
        <!— Content Goes Here —>
    </cfsavecontent>
     
    <cfreturn ret>
     
</cffunction>

Первое, что нам нужно сделать, это сообщить Mura, из какого канала мы хотим выполнить итерацию:

1
<cfset feed=$.getBean(‘feed’).loadBy(name=’Team Feed’)>

Далее нам нужно установить новый итератор, используя источник канала:

1
<cfset iterator=feed.getIterator()>

Мы только хотим, чтобы разметка показывалась, если контент действительно существует в нашем фиде:

1
2
3
4
5
6
7
<!— Only display the following if there are items in the iterator —>
<cfif iterator.hasNext()>
    <!— Looped Content Here —>
 
<cfelse>
    <div class=»alert alert-danger»>Sorry, your feed has no items</div>
</cfif>

Теперь мы готовы просмотреть все элементы в нашей ленте:

01
02
03
04
05
06
07
08
09
10
11
<cfloop condition=»iterator.hasNext()»>
    <cfset item=iterator.next()>
                     
    <div class=»col-md-3″>
        <div class=»well»>
            <img src=»#item.getImageURL(‘medium’)#» alt=»#item.getTitle()#»>
            <h4>#item.getTitle()#</h4>
            #item.getSummary()#
        </div>
    </div>
</cfloop>
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<cffunction name=»dspTeamFeed» output=»yes»>
    <cfsavecontent variable=»ret»>
        <cfset feed=$.getBean(‘feed’).loadBy(name=’Team Feed’)>
        <cfset iterator=feed.getIterator()>
         
        <!— Only display the following if there are items in the iterator —>
        <cfif iterator.hasNext()>
            <div class=»row our-team»>
                <cfloop condition=»iterator.hasNext()»>
                    <cfset item=iterator.next()>
                     
                    <div class=»col-md-3″>
                        <div class=»well»>
                            <img src=»#item.getImageURL(‘medium’)#» alt=»#item.getTitle()#»>
                            <h4>#item.getTitle()#</h4>
                            #item.getSummary()#
                        </div>
                    </div>
                </cfloop>
            </div>
        </cfif>
    </cfsavecontent>
     
    <cfreturn ret>
     
</cffunction>

На типичной странице «О нас» вы можете кратко рассказать о компании, а затем отобразить пользовательскую функцию в теле:

Когда мы публикуем и просматриваем страницу, вы должны увидеть вывод команды:

И с небольшим количеством магии CSS, мы можем легко стилизовать этот вывод, чтобы быть немного более красивым:

Существует много вариантов использования Mura Iterator для создания ваших тем. Самое замечательное в Mura Iterators заключается в том, что он предоставляет пользователю контроль над контентом, отображая его в разметке вашей темы.