Вы здесь

hook_block_view_alter() и i18n - как подружить?

0

Суть прямо в сабже.

Юзаю hook_block_view_alter() и собственно получаю что хочу - доступ к блокам. Цель проста - мне необходимо добавить дополнительный контент к блоку, но чтобы он не был доступен из интерфейса, чтобы клиенты чего не натворили и вообще там php (если бы точным, ниже блока цепляется формочка подписки entityform).

function MYMODULE_block_view_alter(&$data, $block) {
  if ($block->module == 'block' && $block->delta == 3) {
    $data['content'] .= 'my additional content';
  }
}

Всё работает шикарно, но сайт мультиязычный и на втором языке оно уже перестает работать. Используется i18n для перевода блока, перевод сделан, но хук в dpm() отдает данные оригинального блока, даже если дебажить на языке где он не добавляется, в $data лежит инфа на русском (оригинальном) языке.

Собственно как их подружить? Я догадываюсь что i18n перевод хранит отдельно от основного значения в виде строки и где-то подсовывает его, не удивлюсь если в этом же хуке и меняет значение на иной перевод. Как мне их подружить, может у i18n есть свой хук для этого?

Версия Drupal: 
7.x
Категория: 
Block APIMultilingual
Связанные проекты: 
Internationalization
Вопрос задан 29.08.2015 - 13:53
Аватар пользователя Niklan
Niklan
445

Ответы

0

Спасибо, xandeadx, увеличил вес своему кастому - помогло.

i18n_block по умолчанию имеет вес равный 100. Сделал своему 101 и заработало.

Можно в табличке system руками поправить, либо в MYMODULE.install файле добавить это при включении.

/**
 * Implements hook_install().
 */
function MYMODULE_install() {
  db_update('system')
    ->fields(array('weight' => WEIGHT))
    ->condition('name', 'MYMODULE', '=')
    ->execute();
}
Ответ дан 29.08.2015 - 14:38
Аватар пользователя Niklan
Niklan
445