«Гламурный» Информер С Gismeteo Для Modx

Собственно, на многих сайтах так или иначе полезно включать информацию о том, какая погода в том или ином месте нашей планеты.

Поскольку содержать собственную метеослужбу большинству людей как минимум накладно, гораздо логичнее воспользоваться одним из ресурсов, предоставляющих бесплатные информеры погоды, на достаточно мягких основаниях (нужно просто поставить ссылку на их сайт).

Одним из самых известных и популярных сервисов является gismeteo.ru .

Но его стандартные информеры подходят не всем.

а что, если вы хотите переделать информер под фирменный стиль компании или охватить одним информером несколько городов (по умолчанию на информер приходится один город)? Например, недавний клиент, туристическая компания, захотел получить информер со списком мест, где они работают. Вот (скриншот конечного результата):

«Гламурный» информер с Gismeteo для MODx

Вы думаете, это невозможно сделать? Насколько это возможно, и, более того, я уже облегчил вам работу, написав сегодня вечером специальный сниппет для MODx с парочкой демо-шаблонов! На самом деле, как маленький архивариус .

Как мы видим, он содержит три файла — собственно, сам сниппет (файл gismeteo.php, для корректной работы которого требуется libxslt, однако на большинстве обычных хостингов эта библиотека включена) и два xsl-файла с шаблонами.

Собственно, я думаю, что для человека, знакомого с идеологией MODx, проблем с установкой не возникнет: заходим в «управление ресурсами», создаем новый сниппет, называем его, например, Гисметео — и скопируйте туда содержимое файла gismeteo.php. То же самое и с шаблонами — для каждого из них мы создаем чанк (я старался придерживаться идеологии MODx и не использовать подключение файлов с жесткого диска без крайней необходимости), и хорошо бы дать имя одному из этих чанков» информатор " — значение параметра tpl по умолчанию.

однако об этом подробнее мы напишем позже.

Прежде чем перейти к подробному разбору параметров вызова сниппета (благо их всего два) и логики его работы, небольшое лирическое отступление.

Почему, собственно, XSLT — хотя это и не самая быстрая технология, казалось бы? Да, потому что Гисметео предлагает очень удобную функцию — получение сводок погоды в формате XML .

И именно с помощью XSLT-шаблонов мы можем представить эту информацию так, как нам хочется, минимизируя «ужесточение» представления информации в PHP-код и существенно экономя количество строк этого самого кода.

И, более того, нас никто не ограничивает - за один вызов сниппета мы можем запросить информацию сразу по нескольким городам, затем наложив эту информацию на общий шаблон представления.

а ведь это то, что нам нужно, да? Поэтому вызвать сниппет просто, как сибирский валенок.

Что-то вроде: [[Гисметео? &tpl=`informer_full` &source=` http://informer.gismeteo.ru/xml/32150_1.xml,http://informer.gismeteo.ru/xml/32158_1.xml `]] Да, как я уже сказал, параметров всего два.

Параметр tpl — это имя чанка с шаблоном XSLT (по умолчанию — «информер»).

Параметр source представляет собой разделенный запятыми список URL-адресов, содержащих XML-информеры для нужных вам городов (эти URL-адреса можно получить по ссылке выше).

Если параметр source не указан, по умолчанию он будет равен информеру для столицы нашей славной Родины :) Как это работает. Сам фрагмент отображает таблицу с заголовком.

Внутри него запускается итератор по всему списку значений исходного параметра.

Другими словами, для каждого города мы получаем XML-исходник, перекодируем его в обычный человеческий UTF-8 (а то в оригинале он задается в противном cp1251, да еще и закодирован методом urlencode), применяем к нему стиль XSL ( преобразовать его в обычный < tr> -s для таблицы, проще говоря) — а затем в полученном HTML заменяем числовые значения параметров «облачность» и «осадки» на нормальные словесные аналоги.

Да, не очень удобно, что здесь уже три этапа парсинга, а еще приходится «зашивать» в шаблон классы облачности и осадков — но, увы, с этим ничего не поделаешь, ведь владелец — господин, как хотел XML отдать, так и отдал.

В любом случае.

Детали всего этого можно увидеть в коде — благо он очень небольшой, да ещё и с комментариями.

В итоге мы получаем аккуратный знак — и уже можем его всячески извращать с помощью CSS, «затачивая» под дизайн всего остального.

В общем – наслаждайтесь! Думаю, найдутся те, кому эта маленькая, но полезная вещь окажется полезной.

P.S. Нет, сайт Гисметео не платит мне за рекламу, не подумайте :) Теги: #ModX #xslt #программирование #ModX

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.