Modx rowboat — вывод контента из любой таблицы базы данных

MODX rowboat — вывод контента из любой таблицы MODX Revo
Пакет rowboat поможет вам вывести любые данные из любой таблицы базы данных вашего сайта. К примеру я им пользуюсь чтобы выводить комментарии с TicketLatest или TicketComments к примеру на главной странице - таким образом не будут подключены скрипты от Ticket - что ускоряет скорость загрузки сайта.

Использование

Вывести первые 10 комментариев из таблицы modx_tickets_comments (где modx_ — это префикс таблиц в базе данных).

[[Rowboat?
   &table=`modx_tickets_comments`
   &tpl=`tpl.myTickets.comment`
   &limit=`10`
   &sortBy=`createdon`
]]

где чанк tpl.myTickets.comment содержит следующий код:

<div class="testimonial">
	<div class="testimonial-content nopadding">
		<p>[[+text]]</p>
		<cite>[[+name]]</cite>
	</div>
</div>

Все поля базы доступны в виде плейсхолдеров: [[+название_столбца]].

Столбцы таблицы базы данных

В примере выше, я вывожу данные из столбцов text и name.

Доступные свойства

ИмяОписаниеДефолт
tplЧанк, используемый для каждой строки. Если пусто, будет выведен массив доступных заполнителей.
tableТаблица, из которой нужно брать записи.
columnsОбъект JSON столбцов и псевдонимов для этих столбцов, которые нужно захватить для строки. Если не установлен, захватываются все столбцы в таблице.*
whereОбъект JSON для оператора where.
sortByЕсли установлено, выполняется сортировка по этому полю.
sortDirНаправление сортировки.ASC
limitКоличество строк, ограничиваемое за вызов. По умолчанию 10. Установите 0, чтобы показать все.10
offsetНачальный индекс, с которого начинается ограничение.0
cacheResultsЕсли установлено в 1, кэширует результаты конкретного запроса.1
cacheTimeЕсли для cacheResults установлено значение 1, количество секунд для кэширования запроса.3600
placeholderPrefixПрефикс, используемый при установке глобальных заполнителей, например total.rowboat.
outputSeparatorРазделитель между каждой пользовательской записью.
toPlaceholderПо желанию. Если установлено, вывод будет установлен в этот заполнитель и будет возвращен пустым.
debugПо желанию. Если установлено значение 1, будет выведена таблица с информацией о сгенерированном запросе и результатах. Всегда оставляйте 0 для производственных площадок.0

Свойства в чанке

В вашем & tpl Chunk у вас будут все столбцы, которые вы выбрали в качестве свойств, а также:

ИмяОписание
_idxИндекс этой строки.
_alt1, если это четная строка, 0, если нечетная.
_firstЕсли эта строка является первой из этого выгружаемого набора результатов, тогда это будет 1.
_lastЕсли эта строка является последней в этом выгружаемом наборе результатов, тогда это будет 1.

Официальные примеры

Возьмите 10 лучших дудлов, отсортированных по имени, из modx_doodles, в названии которых есть слово «Test»:

[[!Rowboat?
   &table=`modx_doodles`
   &tpl=`myDoodle`
   &limit=`10`
   &where=`{"name:LIKE":"%Test%"}`
   &sortBy=`name`
]]

Возьмите только столбцы id, name и description (с описанием с псевдонимом «desc») из приведенного выше примера: (обратите внимание, что для столбцов без псевдонима необходимо пустое поле «» для псевдонима)

[[!Rowboat?
   &table=`modx_doodles`
   &tpl=`myDoodle`
   &columns=`{"id":"","name":"","description":"desc"}`
   &limit=`10`
   &where=`{"name:LIKE":"%Test%"}`
   &sortBy=`name`
]]

Возьмите 10 дудлов, в которых описание не пустое или имя «Тест»:

[[!Rowboat?
   &table=`modx_doodles`
   &tpl=`myDoodle`
   &limit=`10`
   &where=`{"description:!=":"","OR:name":"Test"}`
   &sortBy=`name`
]]

Скоро будет больше.

Использование getPage с Rowboat

Это довольно просто — просто убедитесь, что для свойства totalVar в вызове getPage установлено значение «rowboat.total», и укажите cache = 0в вызове getPage. Например, это захватит все рисунки, в названии которых содержится слово «Fun», разбит их на 10 страниц на странице и добавит навигацию по страницам:

[[!getPage?
   &element=`Rowboat`
   &table=`modx_doodles`
   &sortBy=`name`
   &where=`{"name:LIKE":"%Fun%"}`
   &totalVar=`rowboat.total`
   &tpl=`myDoodle`
   &cache=`0`
   &limit=`10`
]]
<div class="paging">
<ul class="pageList">
  [[!+page.nav]]
</ul>
</div>

Внимание.

Будьте осторожны с аргументом &columns: если вы укажете несуществующий столбец, вызов фрагмента кода RowBoat не вернет результатов.

Понравилась статья? Можно поблагодарить автора: отправив ему донат на
YooMoney
или
Qiwi
. Либо поделившись статьей ☟
Поделиться с друзьями
Алексей

Веб-дизайнер и SEO оптимизатор. Занимаюсь созданием сайтов с 2010 года и их продвижение с 2012 года!

Оцените автора
( Пока оценок нет )
Web-Revenue.ru