Плагин «ushki to hook» (Ушки к хукам) достаточно специфичный и я даже долго думал, включить ли его в комплект поставки MaxSite CMS. Сам по себе плагин маленький, но при этом оказывается незаменимым в случаях когда следует подключиться к произвольному хуку системы. Хуков много - они предназначены под разные задачи и обычно используются, когда нужно немного изменить какое-либо действие. Например по хуку content_content выводится текст записи. Следовательно подключившись в этому хуку, можно произвольно менять текст.
Традиционно, для того, чтобы подключить к хуку свой функционал, требуется написать свой php-код в виде плагина. С помощью «ushki to hook» такая необходимость отпадает и все действия можно выполнить в админ-панели.
Предположим, мы хотим подключить кнопки социальных сервисов от Share42.com. Данный сервис предлагает скачать архив из двух файлов, которые следует разместить на своём сервере, и после прописать код вызова в шаблоне сайта.
И если проблем с загрузкой файлов обычно не возникает, то редактирование файлов шаблона уже представляет некоторые трудности для блогера, ведь помимо copy-paste ему следует не только точно определить файл шаблона, но и место в php-коде файла, куда следует вставить предлагаемый код.
Если рассматривать добавление данного кода в MaxSite CMS, то это как минимум потребует редактирование type_foreach-файла шаблона page.php.
Если бы сервис Share42.com предлагал какой-то плагин, который автоматизировал этот процесс, то технически пришлось бы подключиться к хуку content_end по которому и выводить иконки.
Таким образом, всё, что нам нужно, так это связать произвольный хук с функцией вывода. В плагине «ushki to hook» контейнером функции будет обычная ушка.
Обращаю ваше внимание, что для работы требуется последняя версия MaxSite CMS 0.441.
Рассмотрим полный порядок действий.
1. Заходим на Share42.com и на вкладке Генератор выбираем иконки, горизонтальный тип панели и кодировку UTF-8.
2. Скачиваем готовый скрипт.
3. Распаковываем его и по FTP загружаем файлы на свой сайт, например в /uploads/.
4. Активируем плагины «Ушки» (ushki) и «Ушки к хукам» (ushki_to_hook), если они ещё не активированы.
5. В опциях плагина ushki_to_hook указываем хук и ушку. Пусть ушка будет share42, а хук, по которому будем выводить иконки - content_end. То есть иконки появятся после текста записи. Пишем:
content_end | share42
В данном случае название ушки произвольно.
6. Переходим в настройки плагина Ушки и создаём ушку share42.
7. Возвращаемся на страницу share42 на вкладку Установка, где указываем путь до папки на нашем сайте. Например: «http://сайт/uploads/».
8. Выбираем Прочие CMS и видим код для размещения.
9. Находим ушку share42, отмечаем её тип как «TEXT/HTML» и вставляем следующий код:
if (!is_type('page')) return $args; global $page; $title = isset($page['page_title']) ? $page['page_title'] : ''; $s = '<script type="text/javascript" src="http://ваш-сайт/uploads/share42.js"></script> <script type="text/javascript">share42("ваш-сайт/uploads/", "' . mso_current_url(true) . '", "' . $title . '")</script><br><br>'; echo $s; return $args;
И сохраняем ушку.
Первой строчкой мы проверяем, чтобы это был тип page - одиночная страница. Если это не так, то сразу выходим из ушки по return. В ушке доступна глобальная переменная $page, которая содержит всю информацию о записи. Нас интересует только заголовок, поэтому переменной $title мы присваиваем элемент массива $page['page_title'], при условии, что он существует.
Далее мы подключаем загруженный js-скрипт и вызываем её функцию share42, где второй параметр принимает текущий URL (функция mso_current_url), третий - заголовок записи.
Если все сделали правильно, то на сайте появятся выбранные иконки соцсетей.
Кратко что мы сделали.
- Копирование кода, загрузка файлов - это исключительно требование Share42.com. У других сервисов будут другие требования. Для нас это совершенно не принципиально.
- Ушка share42 содержит вывод кода сервиса, так, как будто-бы мы отредактировали файлы шаблона или сделали отдельный плагин.
- Плагин ushki_to_hook связывает ушку с хуком. В нашем случае это content_end.
Отмечу особый момент. Текст ушки является php-кодом, который выполняет плагин ushki_to_hook. Но, чтобы этот код не выполнился в самой ушке, мы ставим её тип «TEXT/HTML». В тексте ушки не следует использовать открывающий <?php, поскольку это приведет к ошибке.
Рассмотрим еще один пример - вывод в конце записей блока facebook.com, как у меня на сайте. В данном случае Фейсбук предлагает несколько вариантов социальных виджетов и какой вы выберите для нашего примера не имеет значения.
В ushki_to_hook добавляем хук и ушку. Поскольку этот блок также будем выводить после записи, то хук будет content_end. Но, у нас уже есть блок с share42, поэтому мы зададим приоритет функции хука - это позволит управлять расположением блоков (выше или ниже друг друга). У меня вначале идут закладки, потом фейсбук. Поэтому я задал так:
content_end | share42 | 30 content_end | фейсбук | 20
Поскольку 30 больше 20, то ушка «share42» появится раньше ушки «фейсбук».
Теперь делаем ушку фейсбук с таким содержимым:
if (!is_type('page')) return $args; $href = urlencode(mso_current_url(true)); echo <<<EOF тут код фейсбука EOF; return $args;
Поскольку код фейсбука для вас будет уникальным (он настраивается), то отмечу, что обычно требуется указывать адрес страницы. Для этого мы и задаём переменную $href, в которой содержится текущий адрес страницы.
Дальше в коде фейсбука указываете эту переменную:
...тут код...like.php?href={$href}&...
в виде {$href}.
В заключении список некоторых хуков.
- content_end - срабатывает после текста записи.
- content_start - срабатывает перед текстом записи.
- content_content - сам текст записи.
- content - текст записи перед началом обработки.
- head - срабатывает в секции <head> страницы.
- body_start - сразу после <body>
- body_end - перед </body>
Комментариев: 5 RSS
1Evdokiyushka20-04-2011 14:20
Спасибо за информационную статью. Тоько что скачала скрипт, пытаюсь установить "Ушки к хукам".
2Мила21-04-2011 19:52
Плагин "Ушки к хукам" и правда весьма специфичен и настроить его новичкам будет сложновато, но блогеры которые его уже установили не пожалеют- т.к. это весьма полезная штука.
3xopek30-05-2012 03:24
Узнал тут на днях про сей сайт. Хотя Maxsite юзаю уже год :) Сижу читаю.
Сделал всё как тут сказано. Ничего не выходит. Кнопки шары42 просто не появляются. Может к версии 0.7 все сильно изменилось?
4xopek01-06-2012 19:04
Ау :(
5stepa1w1ka20-04-2013 20:53
Делаю все как выше написано но кнопки все равно не появляются , за место них просто появляется пустой отступ от текста статьи.. в чем проблема? помогите пожалуйста пользоваться CMS maxsite начал недавно, все нравится, но пока затруднения у меня при работе, поэтому прошу помощи. И ах да версия системы у меня: MaxSite CMS: 0.807