Создание сайта в Нижнем Новгороде дешево — принесет ли миллионную прибыль посредственный сайт?
8 (831) 410-79-69, 273-13-69

Как поставить галку в 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

Как оценить качество купленного текста за минуту?

Если текст явно низкого качества, Вы можете смело писать копирайтеру, требуя его переделать. Причиной можно смело указывать отсутствие стержневой... Подробнее >>

Почему мы успешно занимаемся продвижением сайтов

С другой стороны, страница эта появилась рано, потому что уверен — пройдут каких-то 5 лет, и я буду смотреть на себя сегодняшнего так же... Подробнее >>

Joomla: проблемы и решения. Как задать индивидуальные стили определенной странице, например, главной

I want to achieve this with the Pure template but there are no options for template profile overides. how can I hide the content from the home... Подробнее >>

10 правил успешного бренда

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

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