xandeadx.ru Блог музицирующего веб-девелопера

DrupalМногоязычное меню без использования Menu translation (i18n)

Опубликовано в

Код ниже, пропускает все названия пунктов Main Menu через функцию t(), поэтому можно не мучатся с модулем Menu translation и переводить пункты с помощью стандартного интерфейса admin/config/regional/translate/translate:

/**
 * Preprocess function for theme_menu_link()
 */
function THEMENAME_preprocess_menu_link(&$vars) {
  if ($vars['element']['#original_link']['menu_name'] == 'main-menu' && !empty($vars['element']['#title'])) {
    $vars['element']['#title'] = t($vars['element']['#title'], array(), array('context' => 'menu'));
  }
}

Добавить в template.php, заменить THEMENAME на имя темы, сбросить кэш.

P.S: оригинальные названия всех пунктов должны быть на английском.

DrupalВышел Drupal 7.12

Опубликовано в

Закрыто несколько уязвимостей, в том числе возможность DoS атаки на модуль Search; исправлено множество мелких багов; произведена небольшая оптимизация токенов и бд; различные фиксы документации. Полный список изменений.

В этом релизе поломали совместимость с модулями i18n и menu_block, поэтому пользователям, использующим эти модуль, рекомендуется обновиться до 7.11 (security update) и ждать закрытия соответствующих issue:

#1351678: Follow menu_link_get_preferred active trail handling for custom menus

DrupalПоле с автодополнением при помощи jQuery UI Autocomplete

Опубликовано в

Стандартный способ создания поля с автодополнением достаточно ограничен, например нет возможности вызвать свой код после выбора элемента, или вывести список в каком-нибудь изощренном виде. Но выход есть, это jQuery UI Autocomplete, который входит в ядро Drupal 7.

Ниже, пример создания поля с автодополнением по заголовкам нод при помощи jQuery UI Autocomplete:

jQuery UI Autocomplete в действии

DrupalКак добавить настройки к блоку, созданному в стороннем модуле

Опубликовано в

Чтобы расширить блок настройками, нужно воспользоваться хуком hook_block_configure(), но это работает только для блоков, определённых в этом же модуле. Если же встаёт задача расширить настройками блок из стороннего модуля, то на помощь приходит hook_form_FORM_ID_alter().

Ниже, пример кода для добавления текстового поля к настройкам блока, созданному из Views:

/**
 * Implements hook_form_FORM_ID_alter()
 */
function mymodule_form_block_admin_configure_alter(&$form) {
  if ($form['module']['#value'] == 'views' && $form['delta']['#value'] == 'viewname-block_1') {
    $form['settings']['nids'] = array(
      '#type' => 'textfield',
      '#title' => 'Идетификаторы материалов',
      '#description' => 'Nid-ы материалов через запятую',

DrupalМодуль Autocomplete Widgets for Text and Number Fields

Опубликовано в

Описание

Модуль Autocomplete Widgets for Text and Number Fields, как понятно из названия, добавляет для текстовых полей и списков новый тип виджета — поле с автодополнением:

Поле с автодополнением

Автодополнение может происходить как данными из уже добавленных полей, так и по заранее определённому списку.

DrupalКак на странице материала вывести в блоке ноды из этой же категории

Опубликовано в

Распространённая задача — в блоке на странице материала, вывести ноды из категории, к которой принадлежит просматриваемый материал.

Способ 1

1. Создаём представление.

2. Добавляем дисплей Блок.

3. Добавляем фильтры (по типу материала, статусу и т.п.), меняем настройки по вкусу.

4. Добавляем контекстный фильтр по полю, в котором прописана категория материала (в примере это field_category).

DrupalИзменения веса модуля при его установке

Опубликовано в

Добавить в modulename.install:

Drupal 7

/**
 * Implements hook_install().
 */
function modulename_install() {
  db_update('system')
    ->fields(array('weight' => 123))
    ->condition('name', 'modulename')
    ->execute();
}

Drupal 6

/**
 * Implements hook_install()
 */
function modulename_install() {
  db_query("UPDATE {system} SET weight = 123 WHERE name = 'modulename'");
}

DrupalСоздание многоязычного сайта с помощью модулей Content translation и i18n (видео, eng)

Опубликовано в

Видео урок от японского коллеги об одном из способе создания многоязычного сайта — с помощью модулей Content translation (в ядре) и i18n:

DrupalПодходы к многоязычности в Drupal (скринкаст, eng)

Опубликовано в

Скринкаст от Gábor Hojtsy (главный по интернационализации друпала), в котором он рассказывает о двух моделях создания многоязычного контента в Drupal 7, их архитектурных проблемах и что намечается в Drupal 8:

DrupalМногоязычные уведомления модуля Simplenews

Опубликовано в

Чтобы пользователи, подписывающиеся на рассылку Simplenews, получали подтверждающие письма на языке, на котором они просматривают сайт, нужно:

1. Обновить Simplenews до версии выше 7.x-1.0-alpha2 (сейчас это 7.x-1.x-dev).

2. Включить модуль Variable translation из пакета i18n.

3. На странице admin/config/regional/i18n/variable включить поддержу перевода для сообщений Simplenews (скриншот).