Блок сайтов на MODX

Давно хотел накидать плагин для LS чтобы выводить превьюхи сайтов из каталога http://on-modx.ru. Сам код плагина выложил на github. Под катом небольшие подробности mini-API и прием предложений/отзывов по блоку и самому каталогу.

mini-API сайта on-modx.ru

display: число сайтов информацию о которых хочется получить. По умолчанию 1. Но не более 10.
random: Если параметр установлен, то сортировка у сайтов в случайном порядке
revo: Если параметр установлен, то выборка идет из списка сайты на MODX Revolution/
evo: если параметр установлен, то выборка идет из списка сайты на MODX Evolution
w: Ширина превьюхи сайта в пикселях (По умолчанию установлено максимально доступная ширина — 300 пикселей)
h: Высота превьюхи сайта в пикселях (По умолчанию 0 — вся высота картинки. Можно указать любое значение не больше 300)
mode: Формат выдачи результатов. На данный момент поддерживаеются XML и JSON. При чем если вы используете JSON, то можете сразу указать функцию для callback-а через одноименный параметр.

Таким образом, запрос данных будет примерно таким

Для XML
http://on-modx.ru/api?mode=xml&display=2&random&revo&evo&w=200&h=300

Для JSON
http://on-modx.ru/api?mode=json&display=2&random&revo&evo&w=200&h=300

Для JSONP
http://on-modx.ru/api?mode=json&display=2&random&revo&evo&w=200&h=300&callback=myfunction

25 комментариев

avatar
Небольшой недочет с блоком «Сайты на MODX».
Необходимо сделать, чтобы при нажитии на ссылку выбора версии, чтобы не кидало наверх страницы.
Комментарий отредактирован 2013-02-25 04:31:53 пользователем style-nes
avatar
fix
avatar
Круто! А на ЛС в шопе модуль доступен?
avatar
В шопе нет. На гитхабе доступен. Качай, загружай в папку plugin, активируй плагин в админке и блок появится на сайте.
avatar
Вот бы первую вкладку добавил mixt, т.е. Рево и Ево, которая шла бы по дефолу, а уже кто интересуеться, то отфильтровывает.
А так получаеться всё время при переходах по страницам я вижу только сайты Ево.
Fix?
avatar
fix
Комментарий отредактирован 2013-02-25 07:21:19 пользователем Agel_Nash
avatar
Надо прямой эфир только поднять теперь наверх а то совсем уехал в самый низ
avatar
И при просмотре профиля поднять фото и информацию о человеке.
avatar
fix
avatar
fix
avatar
Вот отдельная благодарность от меня за это.
avatar
Кстати, вопрос — сайты в каталоге обновляются? Просто балирехаб месяц назад перенесли на РЕВО, а в каталоге он в разделе ЕВО. Или только по запросу?))))
avatar
Информация по сайтам хранится только на момент добавления. Именно по этой же причине и обновление скриншотов не спешу делать.
avatar
Добавил форматы JSON и JSONP. Кто первый повесит на свой сайт про MODX виджет с сайтами из каталога?
avatar
Есть ли еще те у кого сайты о modx на лайвстрите?
avatar
Готовый плагин только для LS. Хотя в планах подготовить виджет и для Revolution. Но выгрузка данных ведь есть и в JSON и XML. Поэтому тут мы никак не привязаны в движку. Мы же эту тему разбирали с вами уже на курсе по PHP.
Комментарий отредактирован 2013-02-27 07:16:59 пользователем Agel_Nash
avatar
Выбираю вкладку Evolution, нажимаю на зеленый кружок, который «Обновить», а вкладка переключается на Revolution, и при обновлении показываются только сайты на Revo.
Так должно быть? Или при обновлении должна сохраняться выбранная вкладка?
avatar
Так должно быть? Или при обновлении должна сохраняться выбранная вкладка?
Вкладка Revo/Evo выбирается случайно. Если при первой загрузке была вкладка evo, то после нажатия на зеленый кружочек будет эта вкладка восстанавливаться. Аналогично и с revo. Но вообще да, логично было бы поправить, чтобы зеленый кружочек срабатывал только для текущей вкладки.
avatar
Добавил вменяемое описание API и набросал небольшой плагин на jQuery для создания виджета. Описание виджета может показаться немного сложноватым. Но на самом деле там все просто. Создаем чанк следующего содержания:

<div id="catalog"><h3>Сайты на MODX</h3>
<a href="#" class="reload">обновить блок</a>
<div id="listSite"></div>
<hr />
<a href="http://on-modx.ru/catalog/add-site">Добавить сайт</a>
</div>
<script src="http://on-modx.ru/assets/js/modxcatalog.min.js"></script>
<script type="text/html" id="itemSite">
	<a href="<%=fullinfo%>" class="siteItem" title="<%=name%>" target="_blank">
		<img src="<%=src%>" alt="<%=name%>" class="style2" width="150px" height="200px" />
	</a>
</script> 
<script>
!function ($) {
	var config = {
		imageWidth: 150,
		random:1,
		display:1,
		wrapBlockID: 'listSite',
		tpl: 'itemSite'
	};
	var MODXCat = $('#catalog').MODXCatalog(config);
	$(".reload").click(function(e){
		MODXCat.reload();
		return false;
	});
}(window.jQuery);
</script>

Если хочется выводить не 1, а больше сайтов. То меняем значение параметра display. Если хочется изменить вид блока, то меняем содержимое DIV блока с ID=catalog. Если хочется изменить способ отображения сайта (добавить название под картинкой и т.п.), то редактируем тег script с атрибутом id=itemSite. Более подробно я описал тут.
avatar
Обновил пример: on-modx.ru/api/jquery
И добавил в плагин новый параметр timer для автоматического обновления блока. Кто будет использовать, обратите внимание на замены кавычек в переменных которые подставляются в атрибуты alt и title
Комментарий отредактирован 2013-05-01 22:38:04 пользователем Agel_Nash
avatar
Очень нравится данное дополнение. Есть боковое меню, где 4 блока по >10 пунктов (стоит ограничение на 10) всё вызывается рандомным способом, можно ли сделать обновление блока без перезагрузки? Подскажите, пожалуйста, куда смотреть?
avatar
Вы топиком не ошиблись? Как боковое меню связано с виджетом «каталог сайтов на MODX»? Как меню может вызываться рандомно? Зачем обновлять меню да еще и без перезагрузки? В общем я сколько ни пытался понять ваш комментарий, но у меня ничего и не вышло… Отпуск видимо у отдела экстрасенсорики.
avatar
Боковое меню никак не связано с виджетом «каталог сайтов на ModX», понравился метод обновления без перезагрузки. В моём случае, как я уже писал, есть 4 блока меню, т.е. 4 страны, в каждом из блоков >10 городов, но выводятся только 10, случайных городов в каждом блоке страны. Обновлять меню без перезагрузки — для удобства посетителей сайтов, если вдруг им захочется увидеть город в списке, которого нет в этой загрузке страницы. )
Мудрено, но хочется это реализовать) Хочу понять сам принцип обновления, куда смотреть, что для этого нужно. Думаю, это не так сложно реализовать.
avatar
Каждые Х минут уходит ajax запрос на определенный адрес. При ответе заменяете содержимое блока…
avatar
Благодарю!
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.