alexanderkx
@alexanderkx

Как стилизовать вывод дерева ресурсов?

Хочу помимо вариантов (опубликовано/не показывать в меню) добавить ещё, например "заполнено", и выделять к примеру зелёным цветом.

В голову пока пришло только в плагине отлавливать поставлен ли чекбокс и в случаи, если да - стилизовать. Пока удалось изменить стили для кастомных состояний. А вот как добавить ещё одно - "заполнен", пока не осознал.

Хочется глянуть, как реализовано из коробки изменение пункта меню (опубликован/не показывать в меню). И от этого уже отталкиваться.

Не подскажите, куда глянуть.
Благодарю.
  • Вопрос задан
  • 143 просмотра
Решения вопроса 1
alexanderkx
@alexanderkx Автор вопроса
Разобрался.

в /core/model/modx/processors/resource лежит getnodes.class.php. В нём как раз таки и происходит выставление классов в зависимости от состояния чекбокса.

Не стал делать отдельный чекбокс. И так как не использовал поле menutitle, то привязался к нему.

В функцию prepareResourceNode() добавил:

if ($resource->get('menutitle') == "!") $class[] = 'my_class';


До класса (.my_class) уже добираюсь плагином на событии OnManagerPageInit, с таким содержимым:

$modx->regClientStartupHTMLBlock('<link rel="stylesheet" type="text/css" href="'.MODX_BASE_URL.'assets/css/my_style.css" />');


Соответственно в my_style.css нужные стили, например:

.my_class a span {
	color: green;
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Realetive
@Realetive
MODX Ambassador России, самозванный БЭМ-евангелист
Новые поля, чекбоксы, радибаттоны и проч. можно добавлять с помощью создания TV и привязки их к конкретному шаблону. С помощью кастомизации форм их можно разместить в том же блоке, что и (опубликовано/не показывать в меню).
Если вас конкретно интересует возможность получения состояния о том, заполнено какое-то поле или нет (longtitle, content, menutitle и д р.), можно воспользоваться фильтром вывода :empty=`condition`, например, чтобы пометить пункты меню, у которых не заполнено поле «description»:
<a href="[[*uri]]" class="link [[*description:is=``:then=`link_green`:else=``]]>Я буду зелёной, если не заполнить поле description</a>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы