RSS
 

Drupal

warning: Creating default object from empty value in /usr/local/www/jail4/kostya.in.ua/public_html/modules/taxonomy/taxonomy.pages.inc on line 34.

Drupal 7 + интеграция своего модуля с features

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

Порядок выполнения preprocess функций

Order of preprocess execution

as to which function runs in what order. Fortunately, there are just three simple rules that are used to determine the order of processing. They are as follows:

  1. All preprocess functions run before all process functions
  2. template_ prefixed[module]_ prefixed functions run
  3. next. [theme]_ prefixed functions run last

This results in the following order of execution for a particular theme hook:

  1. template_preprocess()
  2. template_preprocesss_HOOK()
  3. MODULE_preprocess()

Apache solr

http://ygerasimov.com/add-custom-field-search-api-apachesolr-index - тут лежит классная статья Юры Герасимова на эту тему.

http://nickveenhof.be/blog/lets-talk-apache-solr-multisite - статья одного из товарищей из Аквии.

И еще в процессе работы могу быть полезны хуки:
hook_search_api_solr_query_alter(array &$call_args, SearchApiQueryInterface $query);
function hook_search_api_index_items_alter(array &$items, SearchApiIndex $index) {

Создание поля программно

Создаем программно поле-список:

$field_name = 'field_foo';
$field = field_info_field($field_name);
if (empty($field)) {
  $field = array(
    'field_name' => $field_name,
    'type' => 'list_text',
    'settings' => array(
      'allowed_values' => array(
        'a' => t('A'),
        'b' => t('B'),
        'c' => t('C'),
        'd' => t('D'),
      ),
    ),
  );
  field_create_field($field);
}
 
$instance = array(
  'field_name' => $field['field_name'],
  'entity_type' => 'node',
  'bundle' => 'foo',
  'label' => t('Foo'),
  'widget'=> array(

Определение изменений ядра или контрибных модулей

http://drupal.org/project/hacked

Оказывается, у Друпала есть уже модуль, который покажет, какие модули хакались в процессе разработки, и если установлен diff, то даже может показать различия. Это может быть очень полезной фишкой, если принимать проект от другого разработчика.

Паттерны проектирования в Drupal

Паттерны проектирования в Drupal
Larry Garfield (aka Crell)

"Хорошие программисты - ленивы", как говорит пословица. Это не значит, что хорошие программисты избегают выполнения своей работы; это значит, что они не любят делать работу, которую делать не нужно. Лучшим способом сделать это: не решать 2 отдельные задачи, а найти общий способ решения этих двух задач. Обычно это называется "повторным использованием кода", и это основа знаний любого человек, занимающегося разработкой софта.

Drupal 7: вывод графиков с помощью модуля flot

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

<?php
 
function test_flot_menu() {
 
  $items['admin/config/flot'] = array(
    'title' => 'Flot settings',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('test_flot_settings_form'),
    'access callback' => TRUE,
    'type' => MENU_LOCAL_TASK,
  );
 
  $items['user/%/flot'] = array(
    'title' => 'Flot',

Drupal 7 кеширование гостевых страниц в Сафари

Недавно наткнулись на то, что Сафари неверно кеширует страницы на сайте для гостей. Проблема заключается в том, что если зайти на страницу сначала гостем. Потом залогинится на сайт, а после опять перейти на ту же страницу - то повтороного запроса на сервер не последует, и она полностью возьмется из кеша Сафари, что есть неправильно. В принципе Ф5 в такой ситуации помогает, но не све пользователи настолько умны.

Решением из коробки является только отключение кеша, что также есть совсем нехорошо.

Подробнее о проблеме можно почитать здесь: http://groups.drupal.org/node/191453

Видео докладов с DrupalForum Запорожье

Организаторы ДрупалФорума в Запорожье, который прошел в середине февраля 2012 года выложили доклады, которые прозвучали там:

http://www.youtube.com/user/DrupalForum/

Ссылки напамять

http://certifiedtorock.com/ - пузомерка активности в сообществе Друпала.

http://dev.nodeone.se/en/learn-page-manager - серия скринкастов по Page Manager (на английском)

http://www.unleashedmind.com/en/blog/sun/drupal-8-the-path-forward - куда движется Drupal 8