• Демоны на PHP

    Памятка начинающему экзорцисту.

    Прежде, чем начать: я знаю, что такое phpDaemon и System_Daemon. Я читал статьи по этой тематике, и на хабре тоже.

    Итак, предположим, что вы уже определились, что вам нужен именно демон. Что он должен уметь?
    • Запускаться из консоли и отвязываться от неё
    • Всю информацию писать в логи, ничего не выводить в консоль
    • Уметь плодить дочерние процессы и контролировать их
    • Выполнять поставленную задачу
    • Корректно завершать работу

    Отвязываемся от консоли


    // Создаем дочерний процесс
    // весь код после pcntl_fork() будет выполняться двумя процессами: родительским и дочерним
    $child_pid = pcntl_fork();
    if ($child_pid) {
        // Выходим из родительского, привязанного к консоли, процесса
        exit();
    }
    // Делаем основным процессом дочерний.
    posix_setsid();
    
    // Дальнейший код выполнится только дочерним процессом, который уже отвязан от консоли
    

    Читать дальше →
  • Генерирование баннеров-заглушек


      Есть такой отличный сервис placehold.it. Он позволяет легко генерировать изображения-заглушки для баннеров. Не так давно о нем писали на хабре, и с тех пор я им активно пользовался, пока он не начал периодически падать. Вечером на коленке был написан аналогичный сервис, может быть кому-нибудь пригодится.
      Читать дальше →
    • Работа с CCK Filefield. Вставка и отображение Flash

        imageИногда бывает необходимо отобразить на сайте файл не просто ссылкой, а как-нибудь иначе. Видео и аудиофайлы хочется отображать плеером, с возможностью просмотра (прослушивания), swf — сразу отображать на странице. Для прикрепления файлов к материалам есть отличный модуль Filefield, однако выбор форматтеров для него невелик. Файл можно отобразить просто ссылкой. Немного расширяют его функционал другие модули, например Imagefield позволяет отображать картинки. Я попытаюсь доступно объяснить как добавить возможность отображения Flash контента на примере модуля SWFfield.

        Далее будет много кода, мало картинок и вообще всё скучно и уныло...
        Читать дальше →
      • Paginator 3000

          Вдохновленный этим топиком я написал модуль для друпала, который организует такую постраничную навигацию.

          Добавлена прокрутка колесом мышки, исправлены некоторые косяки, добавлена стандартная навигация при отключенном js, адаптировано под друпал. Никаких настроек: включили модуль — работает, выключили — вернулись к стандартной навигации.

          UPD: Перенес подключение css и js в init модуля, дабы работало везде, исправил конфликт с другими GET параметрами.
          UPD2: Исправил баг со ссылками «Первая» и «Последняя». Спасибо gothica.
          Скачать можно здесь.
        • Техподдержка Logitech или как я мышь менял

            imageПро техподдержку Logitech была уже не одна статья (Часть 1, Часть 2). Вот и я надумал написать о том, как я мышь менял. Сразу оговорюсь, что делаю упор на один нюанс, который в вышеприведенных статьях не указан.

            Началось всё с того, что мышь умерла. Компьютер просто перестал реагировать на подключение приемника. Т.к. документов и коробки от мыши у меня уже не сохранилось, я немного погуглил и написал письмо в Logitech
            Читать дальше →
          • Создаём тему для Drupal. Часть 3

              image
              Часть 1, Часть 2

              Шаблоны


              Шаблоны мы будем складывать в sites/all/themes/mytheme/templates. Создадим шаблоны page.tpl.php — для страниц, node.tpl.php — для контента, block.tpl.php — для блоков, comment-wrapper.tpl.php — для блока с комментариями, comment.tpl.php — для одного комментария, header.tpl.php — для шапки, footer.tpl.php — для подвала, region.tpl.php — для регионов. Также, по аналогии с препроцессами, мы можем создавать файлы типа node-story.tpl.php для отображения материала типа story или block-user.tpl.php для блока user. Это позволяет темизировать отдельно разные типы содержимого сайта.
              Читать дальше →
            • Создаём тему для Drupal. Часть 2

                imageЧасть 1

                Препроцессы


                Препроцессы нужны для того, чтобы определить, какие переменные будут доступны в шаблонах. Препроцессы мы будем складывать в sites/all/themes/mytheme/preprocess. Создадим файлы preprocess-page.inc — для страницы, preprocess-node.inc — для контента, preprocess-header.inc — для шапки, preprocess-footer.inc — для подвала, preprocess-region.inc — для регионов, preprocess-block.inc — для блоков, preprocess-comment.inc — для комментариев. Также мы можем создавать файлы типа preprocess-node-story.inc для обработки материала типа story или preprocess-block-user.inc для блока user. Это позволяет обрабатывать отдельно разные типы содержимого сайта. В основном в препроцессах я определял классы для разных регионов сайта.
                Читать дальше →
                • +37
                • 9.6k
                • 9
              • Создаём тему для Drupal 6. Часть 1

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

                  Начало


                  Для начала нам потребуется создать директорию в каталоге sites/all/themes с названием нашей темы. Я назвал тему mytheme и создал каталог sites/all/themes/mytheme.
                  В созданном каталоге создаем директории css — для стилей, js — для скриптов, images — для картинок, templates — для шаблонов, preprocess — об этом позже. Также создаем файл template.php в котором мы будем писать всю логику темы и mytheme.info для описания темы. Можно еще добавить favicon.ico и logo.png.
                  Читать дальше →
                • Страничка для счастливых обладателей IE6

                    Вдохновлённый этим топиком я по-быстренькому наваял модуль для друпала, который всем пользователям IE6 показывает заготовленную страничку.
                    Если честно, не понял в чём смысл обновления для этой странички, поэтому оставил первую версию.

                    Спасибо AVR за отлично свёрстанную страничку.

                    Предвосхищая вопросы типа «а зачем это модулем когда можно и проще сделать» отвечу, что так удобнее. Модуль включен — пользователи IE6 отсеялись, модуль выключен — видят сайт.

                    Скачать можно здесь и здесь

                    UPD: Исправил некоторые проблемы с кэшированием, перезалил файлы.
                  • Модуль Views — API. Основы

                      Наверняка, многие, работающие с друпалом, знакомы с модулем Views. Как гласит Drupaler.ru, модуль Views — это Настройка и контроль за отображением любого типа контента в любом месте сайта, т.е. он позволяет создавать страницы, блоки, подменять содержимое нод, страниц пользователей и многое другое, формируя контент из любых доступных полей на сайте. Но что делать, когда необходимо вывести информацию, предоставляемую сторонним модулем, и к которой доступа из Views у нас нет?
                      Читать дальше →
                    • Интеграция поиска Google в сайт на Drupal

                        imageНекоторое время назад появилась необходимость организовать поиск по сайту на друпале с фильтрацией по типам материалов и возможностью поиска по профилям пользователей. Существующие решения не устраивали по ряду причин. На ум сразу пришли 2 варианта: либо писать свой поиск (используя готовые библиотеки типа phpMorphy), либо использовать Google. Остановились на втором.

                        Логика работы проста: Google позволяет искать по определенному сайту. То есть мы можем искать по www.example.com, по www.example.com/first, по www.example.com/second и т.п. Для поиска материалов определенных типов нам только нужно настроить разные пути для разных типов материалов и встроить на сайт Google Custom Search.

                        Далее кратко по шагам, как это работает (много кода, нет картинок):
                        Читать дальше →