Изменение текста статьи и резюме с помощью узла предварительной обработки шаблона ()
Я использую 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'] = 'Ямамото';
}
После выполнения этого кода измененная переменная имеет правильное значение 'Ямамото'. Но на главной странице я почему-то вижу неизменное "Ямамото". Что я делаю не так? Я изменил неправильное поле? Не испорчу ли я работу с параметрами, переданными по ссылке? Я использую не тот крючок?
1 answers
Я считаю, что узел уже был отрисован к моменту вызова template_preprocess_node()
, поэтому изменение любых значений объекта узла не будет иметь никакого эффекта. Вы можете попробовать посмотреть на $variables['node']->content
, чтобы узнать, можете ли вы изменить текст в этом (я думаю, что это полный узел визуализации HTML, поэтому здесь нужно иметь дело с большим количеством дополнительного текста/разметки).
Вероятно, вам лучше использовать вместо этого hook_node_load(). Это дает вам возможность изменить объект узла непосредственно перед его визуализацией.