2014-02-05 3 views
1

Мне нужно изменить шаблон в одном из Drupal 6 project.Drupal 6 template - Лучшее предложение для изменения пути изображения в препроцессе?

На каждом типе узла «страница» хранится изображение в поле CCK. Я создал новый шаблон дизайна, чтобы изменить дизайн с помощью CSS. Но теперь заказчик должен изменить изображения, которые находятся в поле CCK с именем «field_obr» (по одному на узел) только в моем новом шаблоне дизайна. То, что он может переключать темы, и изображения будут соответствовать тем (текущий дизайн = исходные изображения из CCK, новый дизайн = изображения из измененного пути из исходного пути поля CCK). Имена изображений могут быть одинаковыми, только каталог изменился.

Оригинальные изображения сохраняются в папке, как:

sites/default/files/image1.jpg 
sites/default/files/image2.jpg 
... 

Я хочу изменить в моей новой теме путь к изображению:

sites/default/files/new_img/image1.jpg 
sites/default/files/new_img/image2.jpg 
... 

= добавить папку «/ new_img» в пути до изображения. (Или позже путь к моему файлу шаблона - Тхак Я знаю, как, но я смотрю здесь принцип.)

шаблона выводит изображение:

<img class="imagefield imagefield-field_obr" width="229" height="346" alt="" src="/sites/default/files/radek_home_0.jpg?1354577633" /> 

У меня есть тёплые это решение:

Первое решение - изменение выходного $ контента через preg_replace()

в «узел-page.tpl.php» смотреть в $ содержание функции preg_replace через в(), найти путь и изменить/добавить как я хочу. - Это выполнимо, но я считаю, что это не оптимальное решение для Drupal-потока.

Второе решение - с помощью hook_page_alter() или hook_page_build() функции

У меня есть кладезь, что содержание переменных может быть изменена за счет использования hook_page_alter() и hook_page_build() функции.

я ставлю эти функции на мой «template.php» перед тем phptemplate_preprocess_page (& $ вары) функция, бутон, кажется, что они ничего не делают:

function hook_page_build(&$page) { 
// print_r($page); 
    $page['node']->field_obr['0']['filepath'] = "sites/default/files/new_img/radek_home_0.jpg"; 
    echo "Test function hook_page_build() has run"; 
} 

Чем я нашел в доку, что эти функции для Drupal 7+ :-(

Вопрос:. Может кто-нибудь объяснить мне лучшее решение Тхо решить ситуацию, описанную в начале Как достичь его через Profi «? Drupal путь» Спасибо Frantisek

ответ

1

Я провел некоторое исследование, и для Drupal 6 найдено одно простое рабочее решение для описанной проблемы. Это упомянутая функция PHP preg_replace(), расположенная в шаблоне page.tpl.php:

print preg_replace('#/sites/default/files/#', '/sites/default/files/_new/', $content); 

 Смежные вопросы

  • Нет связанных вопросов^_^