Изменение текста статьи и резюме с помощью узла предварительной обработки шаблона ()


Я использую Drupal 7.9 с модулем Views (если последнее важно). Я создал небольшой модуль для своего сайта, который изменяет транслитерацию японских слов в статьях с латиницы на кириллицу и наоборот (да, мне нужна такая вещь). Пользователь видит форму с установленным переключателем, выбирает транслитерацию, его выбор переходит к $_COOKIE, а затем я изменяю транслитерацию в резюме и тексте статьи на основе выбора пользователя. Или лучше сказать, что я пытаюсь это изменить, но это не так работа. Код выглядит следующим образом:

function mymodule_preprocess_node(&$variables) {
    /* Suppose we have a summary containing only one word 'Yamamoto' that has to be changed to 'Ямамото' */
    $variables['node']->body['und'][0]['summary'] = 'Ямамото';
}

После выполнения этого кода измененная переменная имеет правильное значение 'Ямамото'. Но на главной странице я почему-то вижу неизменное "Ямамото". Что я делаю не так? Я изменил неправильное поле? Не испорчу ли я работу с параметрами, переданными по ссылке? Я использую не тот крючок?

Author: Ari Linn, 2011-11-18

1 answers

Я считаю, что узел уже был отрисован к моменту вызова template_preprocess_node(), поэтому изменение любых значений объекта узла не будет иметь никакого эффекта. Вы можете попробовать посмотреть на $variables['node']->content, чтобы узнать, можете ли вы изменить текст в этом (я думаю, что это полный узел визуализации HTML, поэтому здесь нужно иметь дело с большим количеством дополнительного текста/разметки).

Вероятно, вам лучше использовать вместо этого hook_node_load(). Это дает вам возможность изменить объект узла непосредственно перед его визуализацией.

 0
Author: rocketeerbkw, 2011-11-19 07:50:14