Сниппет выводит дочерние ресурсы в виде ссылок на сами ресурсы. Использовал для вывода меню блоками по 5 строк.
Версия CMS: MODX Revolution 2.7.1-pl
Реализация сниппета для вывода дочерних ресурсов
Код снипета «VeiwMenuFooter»
1); // id родителя $resources = $modx->getCollection(‘modResource’,$where); $output = »; $i = 0; $row = 5; $output .= ‘get(‘uri’).'»>’.$res->get(‘pagetitle’).»; $i++; > $output .= »; return $output;
Вызов сниппета в чанке
[[VeiwMenuFooter]]
Вывод дочерних ресурсов с помощью pdoResources
Еще вариант вывода дочерних ресурсов с использованием плагина pdoTools и сниппета от него pdoResources
Код в шаблоне или чанке
где, tpl — имя шаблона, можно использовать чанк в ввиде шаблона
6 комментариев
Я не думала что найду, спасибо большое!
Не поняла как это так?
Не поняла как это так?
пожалуйста по конкретней, что именно не понятно?
в статье представлено два варианта,
1- это самому создать сниппет и вставить туда код, а потом его использовать в шаблонах или чанках
MODX шаблоны и чанки
2- это использовать готовое решение pdoResources, но перед этим его надо установить
oprolevorter
I’ve been absent for some time, but now I remember why I used to love this blog. Thanks , I will try and check back more frequently. How frequently you update your website?
Статьи/заметки пишу примерно раз в неделю, может немного реже, все зависит и выполняемых задач и проблемами с которыми сталкиваюсь при их реализации. Собственно решение таких проблем и описываю. Как показывает практика век живи, век учись.
Источник: small-whale.org
Выбор получателя в форме обратной связи Modx revo
Как на MODx сделать форму обратной связи с выбором получателя, причем так, что бы emailы не светились посетителям и роботам? Предлагаю следующий вариант:
Устанавливается дополнение FormIt. Создаем для формы обратной связи отдельный чанк. Назовём его FOS:
[[!FormIt? emailTpl=`sentEmailTpl` emailTo=`[[+emailAddresses]]` emailSubject = `Сообщение с сайта anart.ru` validate=`contact_name:required, contact_email:email:required, contact_message:required:stripTags` contactForm» method=»post» action=»[[~[[*id]]]]»> type=»hidden» name=»nospam:blank» value=»» /> for=»addressTo»>Получатель /> style=»width:250px;» name=»service»> value=»0″>Информационная поддержка value=»1″>Администратор сайта value=»2″>Администратор сервиса for=»contact_name»>Ваше имя class=»error»>[[!+fi.error.contact_name]] (обязательное поле, не менее 2 символов) /> style=»width:250px;» id=»contact_name» name=»contact_name» size=»30″ minlength=»2″ value=»[[!+fi.contact_name]]» /> for=»contact_email»>Ваш E-Mail для обратной связи class=»error»>[[!+fi.error.contact_email]] (обязательное поле) /> style=»width:250px;» id=»contact_email» name=»contact_email» size=»30″ value=»[[!+fi.contact_email]]» /> for=»contact_message»>Текст сообщения class=»error»>[[!+fi.error.contact_message]] (обязательное поле) /> id=»contact_message» name=»contact_message» cols=»70″ rows=»7″>[[!+fi.contact_message]] [[!+formit.recaptcha_html]] [[!+fi.error.recaptcha]] name=»submit» type=»submit» value=»Отправить»/>
Здесь параметр redirectTo содержит ID страницы, где сказано, что сообщение отправлено
Дополнительные поля (TV) в MODX Revolution
Созаем сниппет-хук groupSelector, который указан в хуках вызова formit и он будет хранить в себе emailы всех получателей:
Создаем чанк sentEmailTpl для оформления отправляемого письма. Он указан при вызове formit выше:
Сообщение с сайта anart.ru /> /> Имя отправителя: [[+contact_name]] /> Текст сообщения: /> [[+contact_message]] /> /> E-mail отправителя: href=»mailto:[[+contact_email]]»>[[+contact_email]] Вы можете ответить отправителю, нажав href=»mailto:[[+contact_email]]»>сюда
Источник: anart.ru
Как поставить галку в MODx, чтобы не отображать ресурс в списке
Довелось дорабатывать сайт http://biosfere.ru, и одна из задачек была связана с тем, чтобы с помощью checkbox отменить анонс страницы на главной странице.
На первый взгляд, а также на второй, третий и четвертый, задача тривиальная для любого, кто более-менее знаком с MODx.
Проиллюстрируем на примере конкретных страниц.
Вот главная страница сайта с прокручивающимся списком заболеваний.
В админке MODx Revolution 2.5.1 имеем вот такой checkbox:
Задача: чтобы при стоящей галке этот пункт не отображался на главной.
А вот так выглядит чанк на главной с вызовом сниппета pdoResources, выводящего список:
Флажок на странице каждого заболевания представляет собой булевый tv-параметр:
Казалось бы, нет ничего проще: выставить фильтр по tv-параметру и всего делов.
tvFilters=`desease_noshow<>1`
Почему это не сработало?
Все очень просто: tv-параметр был добавлен уже тогда, когда было забито порядка 150 страниц с видами заболеваний.
Когда мы зашли на 2 страницы из 150 и поставили там галки, в базе появилоcь две единички у tv с >
Больше в базе записей о значениях этого tv нет!
Поэтому решение задачи «в лоб» предполагает, например, такую конструкцию
Т. е., нужен второй сниппет, который будет собирать id документов, не содержащих tv-параметр desease_noshow со значением 1.
Также для этого в pdoResources предусмотрена минусация:
sanitizeString($_GET[‘resSearch’]); $searchFilter = ‘[» published = 1 AND deleted = 0 AND ( pagetitle LIKE «%’.$query.’%» OR description LIKE «%’.$query.’%» OR longtitle LIKE «%’.$query.’%» ) «]’; return $modx->runSnippet(‘pdoResources’, array( parents’ => 0, showLog’ => 1, where’ => $searchFilter ));
Источник: capweb.ru