БлогVkontakte CrossPoster 2. Возвращение.

Vkontakte CrossPoster

Сегодня знаменательный день, друзья - мой Vkontakte CrossPoster отмечает возвращение в строй. Чтобы пояснить, где же он был раньше и что с ним происходило, я расскажу небольшую историю.

История

В сентябре 2011 года я написал модуль, который позволяет автоматически отправлять материал вконтакт (пруфлинк). Он отправлял данные автоматически куда надо (использовалась авторизация через протокол OAuth 2.0), и пользователь мог даже не подозревать, что они отправляются. Однако через 4-5 месяцев разработчики вконтакте (ни слова не сказав, даже в документации) закрыли возможность отправлять данные с сайтов во вконтакте (через OAuth 2.0). Немного поковырявшись в имеющейся на тот момент документации, я нашёл другой метод кросспостинга - Open API. Это очень глобально затронуло модуль, т.к. теперь пользователю приходилось подтверждать кросспост в всплывающем окне (Open API работает на js). Это повлекло за собой массу неудобств, начиная от конфликта с некоторыми модулями (например, Overlay) и заканчивая абсолютной невозможностью кросспостить данные любому пользователю, отличному от авторизованного создателю и администратору группы. После этого я на модуле поставил крест, т.к. он потерял свою фишку и удобство в работе, хоть и кросспостить можно было продолжать.

УрокСистема кэширования Drupal 7. Часть первая: сегменты кэша.

По опыту начал замечать, что многие разработчики, особенно junior/mid уровня, имеют довольно слабое представление о системе кэширования Друпала. До сих пор ни один разработчик не ответил мне правильно на все вопросы о хранилищах и назначении стандартного кэша, который включается в ядро Друпала уже достаточно давно. Мне кажется, уже пора раз и навсегда закрыть этот вопрос.

Я надеюсь, самые базовые знания о том, что такое кэш у вас есть. Если же нет – сначала надо прочитать вводную статью о кэше, а потом продолжать чтение текущей.

Кэш Друпала хранится не в одном единственном месте, а разбит по сегментам. По умолчанию в Друпале каждый сегмент кэша находится в базе данных в виде таблиц под определённым именем. Это сделано по нескольким причинам:

УрокЗапись большого объёма данных в таблицу

Каждый хороший разработчик думает о производительности. И сегодня я расскажу о том, как можно быстро записать большие объёмы данных в таблицу за минимальный период времени.

Я уверен, что многие сталкивались с задачей, например, собирать какую-либо статистику и сохранять её в отдельную таблицу. Простейший пример: сохранять количество просмотров и комментариев к материалу за каждый день. А потом по этим данным построить график, который бы визуально отображал "популярность" материала за определённый период. Сама по себе задача простая - выбрать из двух таблиц данные и записать её в свою отдельную. Но когда у вас на сайте, скажем, 200 тысяч материалов, то вставка такого объёма данных может занять приличное количество времени. Но давайте поговорим о возможных вариантах записи этих данных.

УрокДобавляем к форме автосабмит с помощью Chaos Tools

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

Довольно удобные инструменты по добавлению автосабмита имеются в модуле Chaos Tools. С ним вам понадобится проделать всего три простых шага для получения результата.

Шаг первый

Добавляем js из ctools'a, который непосредственно выполняет сабмит формы при изменении нужного элемента:

ctools_add_js('auto-submit');

УрокЭкспорт и импорт данных из своей таблицы с помощью Chaos Tools

Наверняка многие из вас сталкивались с задачей переноса данных с одного сайта на другой. Например, создали локально представление вьюса - и надо быстро его перенести на рабочий сайт. И вы явно обратили внимание, что в каждом представлении есть вкладка "Экспорт". Благодаря такой возможности вы можете перенести это представление на рабочий сайт буквально за 10 секунд. Фактически происходит следующее: из таблицы выбирается запись с этим представлением, обрабатывается специальным образом и отдаётся пользователю в виде текста. А потом при импорте этот текст декодируется и вставляется как запись в таблицу. Одним из механизмов, позволяющих это реализовывать, является Ctools Exportable - о нём я и расскажу.

БлогРешение проблем с хлебными крошками в Drupal 7 раз и навсегда

Предисловие

То, что меня раньше всегда раздражало при построении хлебных крошек - это то, что модули есть только для отдельных частей сайта. Есть для материалов - Custom Breadcrumbs (хотя вроде во второй версии там сделан ряд доработок, но всё равно сомнительно), для панелей - Panel Breadcrumbs (кстати, работают не всегда корректно), Hansel - вообще сложно сказать для чего. Для хлебных крошек на статичных страницах модуля вообще не было до появления первой версии моего Path Breadcrumbs. И вот такой набор модулей кое-как справлялся с созданием навигационной линейки для сайта. Однако даже это работало для большинства страниц, но не для всех. Я уже молчу о разнице в интерфейсе и возможностях модулей (не всегда даже есть возможность сделать крошку текстом, а не ссылкой). В общем, мне это порядком надоело и я решил написать модуль, который будет справляться с любыми хлебными крошками для любых страниц. И надо сказать - это у меня получилось.

Описание

Я рад представить вам своё новое творение - Path Breadcrumbs 2. Это модуль, который умеет строить хлебные крошки для абсолютно любых страниц (как статичных, так и динамичных). Удобный интерфейс (частично слизан с page manager'a) позволяет быстро и красиво строить навигационную линейку по крошкам. В результате кропотливого труда создан модуль, который позволяет заменить все остальные для построения хлебных крошек.

УрокКак поменять направление списка комментариев и вынести форму комментариев наверх

По мало понятным мне причинам в седьмом Друпале нет возможности поменять направленость списка комментарив. Безусловно, для блогов вполне удобен "коробочный" вариант - старые комментарии вверху, новые внизу, а форма комментариев вообще в конце страницы. Однако могу привести пример сайта с сериалами: на одной странице есть плеер со всеми сериями сериала, а под ним располагаются комментарии. А теперь представьте, что серии постоянно добавляются в плеер, и в комментариях идёт живое обсуждение. И далеко не каждый пользователь захочет каждый раз пролистывать сотню-другую комментариев, чтобы почитать последние и/или написать своё мнение. И таких примеров можно привести много. Поэтому исключение возможности поменять направление комментариев, на мой взгляд, грубая ошибка. Однако что сделано - то сделано, и сейчас я расскажу как восстановить справедливость.

БлогФильтр матерных слов для Drupal 7

Недавно был озадачен поиском хорошего фильтра мата для седьмого Друпала. Сначала нашёл это решение под Drupal 7, поставил и радовался. Но радовался недолго, т.к. в результате анализа производительности кода оказалось, что он жрёт очень много ресурсов. Далее поиск натыкался либо на едва рабочие решения под PHP 4, либо на вариант простой замены матерных слов (без регурярных выражений, аля wordfilter).

В итоге набрёл на самое адекватное решение: php-censure. Фильтрует довольно грамотно, а главное - быстро. Вот наглядный пример работы:

Страницы