Вывод чанка в зависимости от параметра в ссылке
Добрый вечер, коллеги.
Подскажите пожалуйста начинающему Modx пользователю.
Суть задачи — на сайте есть много страниц, под сео продвижение, и одновременно, эти же страницы служат как «лендинги» для контекстной рекламы. Задача состоит в том, чтобы при переходе пользователя с контекста (Яндекс директ например) сайт не отображал чанк с меню.
Как я понимаю, команду спрятать чанк лучше всего передать через параметр в ссылке.
Только как это сделать на практике — не представляю.
Через сниппет, который парсит ссылку и определяет наличие необходимого параметра?
И как в этом случае дело обстоит с кэшированием? Кэш будет постоянно меняться?
Самый простой вариант — сделать дубли страниц с отдельным шаблоном, но это как-то… неправильно что-ли…
Подскажите пожалуйста начинающему Modx пользователю.
Суть задачи — на сайте есть много страниц, под сео продвижение, и одновременно, эти же страницы служат как «лендинги» для контекстной рекламы. Задача состоит в том, чтобы при переходе пользователя с контекста (Яндекс директ например) сайт не отображал чанк с меню.
Как я понимаю, команду спрятать чанк лучше всего передать через параметр в ссылке.
Только как это сделать на практике — не представляю.
Через сниппет, который парсит ссылку и определяет наличие необходимого параметра?
И как в этом случае дело обстоит с кэшированием? Кэш будет постоянно меняться?
Самый простой вариант — сделать дубли страниц с отдельным шаблоном, но это как-то… неправильно что-ли…
Комментарии: 5
<script>
var data = {};
var p = decodeURIComponent(location.search.substr(1)).split('&');
for(i in p) {
var d = p[i].split('=');
data[d[0]] = d[1];
}
if ('параметр' in data) {
$('.navbar').hide();
}
</script>
Как вариант использовать pdoParser (включённая галочка при установке pdoTools:
[[!#GET.paremetr:is=`1`:then=`[[$chunk-menu]]`]]
где параметр = ¶metr=1 [[!hideOnDirect? &chunk=`nav`]]
<?php
if (!$_GET['direct']) {
$key = $chunk;
if(!$output = $modx->cacheManager->get($key)) {
$output = $modx->getChunk($chunk);
$modx->cacheManager->set($key, $output);
}
return $output;
}
return;
Ну и ссылка должна быть такой: site.com/?direct=1
Илья, спасибо, выбрал ваш способ, все сразу заработало.
Остался только вопрос с нагрузкой и кэшем — получается он будет постоянно обновляться или нет?
Остался только вопрос с нагрузкой и кэшем — получается он будет постоянно обновляться или нет?
Нагрузки лишней не будет — всё, что надо закешируется.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.