В империи царей мне довелось бывать только зимой, и я мечтал поехать туда летом, чтобы увидеть ее в свечении долгих летних дней, когда солнце садится всего на несколько минут. Я знал Санкт-Петербург, Москву, но мне еще неведом был Нижний Новгород.
А можно ли жить, не повидав Нижнего Новгорода?
(Теофиль Готье, "Путешествие в Россию")
+7(968)000-10-11 (в Москве)

Как поставить галку в MODx, чтобы не отображать ресурс в списке

Довелось дорабатывать сайт http://biosfere.ru, и одна из задачек была связана с тем, чтобы с помощью checkbox отменить анонс страницы на главной странице.

На первый взгляд, а также на второй, третий и четвертый, задача тривиальная для любого, кто более-менее знаком с MODx.

Проиллюстрируем на примере конкретных страниц.

Вот главная страница сайта с прокручивающимся списком заболеваний.

Иллюстрация с главной страницы

В админке MODx Revolution 2.5.1 имеем вот такой checkbox:

Галка Показывать на главной

Задача: чтобы при стоящей галке этот пункт не отображался на главной.

А вот так выглядит чанк на главной с вызовом сниппета pdoResources, выводящего список:

Исходный код MODx Revolution. pdoResources

Флажок на странице каждого заболевания представляет собой булевый tv-параметр:

TV-параметр

Казалось бы, нет ничего проще: выставить фильтр по tv-параметру и всего делов.

Например, так:

&sortbyTVType=`integer`
&tvFilters=`desease_noshow<>1`

Почему это не сработало?

Все очень просто: tv-параметр был добавлен уже тогда, когда было забито порядка 150 страниц с видами заболеваний.

Чтобы в таблице modx_site_tmplvar_contentvalues прописалось значение tv-параметра 0, нужно зайти на каждую из 150 страниц и сохранить ее, либо написать для этого некий скрипт (если знаете другой вариант – пишите на capweb@bk.ru.

Когда мы зашли на 2 страницы из 150 и поставили там галки, в базе появилоcь две единички у tv с id=82.

Больше в базе записей о значениях этого tv нет!

Поэтому решение задачи "в лоб" предполагает, например, такую конструкцию

&where=`{
"id:IN":[ [ [getnomenuid3 ] ] ]
}`

Т. е., нужен второй сниппет, который будет собирать id документов, не содержащих tv-параметр desease_noshow со значением 1.

Также для этого в pdoResources предусмотрена минусация:

&resources=`-2, -5`

В результате приходим к конструкции

Исходный код MODx Revolution. pdoResources

Остается лишь сделать пару xPDO-запросов для того, чтобы вытащить из базы эти id и оформить сниппет так, чтобы он выдавал их в виде '-2, -5'

Кто не знает, как это сделать, пишите, ответим почти всем.

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

$query = $modx->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
));

Следующая статья: MODx. Вопросительные знаки вместо текста. Решение проблемы http://capweb.ru/modx-voprositelnyie-znaki-vmesto-teksta.html

Предыдущая статья: Зарабатывайте с помощью сайта Avon! http://capweb.ru/zarabatyivajte-s-pomoshhyu-sajta.html

Позиции сайта veragold.ru на декабрь 2014 г.
reative
nalytics
romotion

Статьи от CapWeb

Преимущества видеоформата в сфере рекламы Внутренняя поисковая оптимизация сайта

Верстка также является одним из многих критериев сравнения сайта с конкурентами из первых строк выдачи Яндекса (Google) наряду с различными... Подробнее >>

Применение 3D-печати в быту и на производстве

Производство шаблона на 3D-принтере существенно сокращает время, облегчая работу конструкторам. К тому же, отпадает необходимость отливать форму и... Подробнее >>

Сколько стоит сайт

Не имеющим конкретных представлений о желаемом сайте и интересующимся некой средней, обычной, стандартной ценой сообщаем, что у нас нет стандартных... Подробнее >>

Оставьте Вашу контактную информацию, и мы свяжемся с Вами!

Оставьте Вашу контактную информацию и мы свяжемся с Вами!