Алфавитный рубрикатор для ресурсов Modx Revo.
Результат работы тут: lab.nikann.ru/catalog#abc
За основу был взят: modx.ws/urok-modx-ajax-zagruzka-resursov
1. Создать чанк «ajaxGetResorces_abc-letter»:
3. Создать в корне сайта ресурс с пcевдонимом ajax-abc, который будет отдавать данные, чтобы полный адрес был sitename.com/ajax-abc. Задать ему шаблон Blank и вставить в содержимое вызов сниппета:
Если ничего не забыл :) должно работать.
За основу был взят: modx.ws/urok-modx-ajax-zagruzka-resursov
1. Создать чанк «ajaxGetResorces_abc-letter»:
<!-- Скрипт запроса и обработки -->
<script type="text/javascript">
$(document).ready(function() {
$('a.ltr').click(function() {
var data = $(this).data();
$.post('./ajax-abc', data, function(data) {
$('#result').html(data);
$('a.ltr').data();
})
return false;
})
})
</script>
<!-- Рубрикатор -->
<div class="cont-abc-letter" >
<a href="#" class="ltr" data-ltr="а" >А</a>
<a href="#" class="ltr" data-ltr="б" >Б</a>
<a href="#" class="ltr" data-ltr="в" >В</a>
<a href="#" class="ltr" data-ltr="г" >Г</a>
<a href="#" class="ltr" data-ltr="д" >Д</a>
<a href="#" class="ltr" data-ltr="е" >Е</a>
<a href="#" class="ltr" data-ltr="ж" >Ж</a>
<a href="#" class="ltr" data-ltr="з" >З</a>
<a href="#" class="ltr" data-ltr="и" >И</a>
<a href="#" class="ltr" data-ltr="к" >К</a>
<a href="#" class="ltr" data-ltr="л" >Л</a>
<a href="#" class="ltr" data-ltr="м" >М</a>
<a href="#" class="ltr" data-ltr="н" >Н</a>
<a href="#" class="ltr" data-ltr="о" >О</a>
<a href="#" class="ltr" data-ltr="п" >П</a>
<a href="#" class="ltr" data-ltr="р" >Р</a>
<a href="#" class="ltr" data-ltr="с" >С</a>
<a href="#" class="ltr" data-ltr="т" >Т</a>
<a href="#" class="ltr" data-ltr="у" >У</a>
<a href="#" class="ltr" data-ltr="ф" >Ф</a>
<a href="#" class="ltr" data-ltr="х" >Х</a>
<a href="#" class="ltr" data-ltr="ц" >Ц</a>
<a href="#" class="ltr" data-ltr="ч" >Ч</a>
<a href="#" class="ltr" data-ltr="ш" >Ш</a>
<a href="#" class="ltr" data-ltr="щ" >Щ</a>
<a href="#" class="ltr" data-ltr="э" >Э</a>
<a href="#" class="ltr" data-ltr="ю" >Ю</a>
<a href="#" class="ltr" data-ltr="я" >Я</a>
</div>
<!-- Сюда будут выводиться результаты: -->
<div id="result">Выберите букву, цифры</div>2. Создать сниппет «ajaxResources_abc»:<?php
// Отвечаем ТОЛЬКО на ajax запросы
if ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {return;}
// данный код можно расширить добавив другие действия и указать их в case
$action = 'getResources';
// Если в массиве POST нет действия - выход
if (empty($action)) {return;}
// А если есть - работаем
$res = '';
switch ($action) {
case 'getResources':
// Задаём параметры getResource для сниппета в AJAX запросе
$params = array();
$params['tpl'] = 'tpl.ajaxResources_abc'; // Задаём шаблон
$ltr = filter_input(INPUT_POST,'ltr');
$params['where'] = '{"pagetitle:LIKE":"'.$ltr.'%"}'; // Задаём условие
$params['parents'] = '481'; // ID родителя
$params['limit'] = '0'; // Задаём кол-во
$params['hideContainers'] = '1'; // Прячем контейнеры
$params['showHidden'] = '1'; // Показать не опубл. в меню
$params['sortby'] = '{"pagetitle":"ASC"}'; // Задаём сортировку
$res = $modx->runSnippet('getResources', $params); break;
}
// Если у нас есть, что отдать на запрос - отдаем и прерываем работу парсера MODX
if (!empty($res)) {
die($res);
} 3. Создать в корне сайта ресурс с пcевдонимом ajax-abc, который будет отдавать данные, чтобы полный адрес был sitename.com/ajax-abc. Задать ему шаблон Blank и вставить в содержимое вызов сниппета:
[[ajaxResources_abc]]4. Ну и вставить в нужное место шаблона чанк, созданный в п.1 [[$ajaxGetResorces_abc-letter]]Если ничего не забыл :) должно работать.
Комментарии: 15
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Жалко, что не генерируются ЧПУ ссылки, чтобы сразу перейти в какую-то открытую букву.
Можно попробовать «обернуть» в какой нибудь jQuery EasyTabs plugin и будут якоря+хистори…
Ну это теоретически…
И правильно ли я понимаю, нам еще необходимо создать чанк tpl.ajaxResources_abc с шаблоном? Например,[[+pagetitle]] [[+longtitle]].
Абсолютли.
Так подскажите, что необходимо в данной ситуации указывать в «ID родителя»?)
на обще странице словарика шаблон выдает левый прописывай не прописывай