DARTHARTH

Заменя переменных шаблона в зависимости от термина таксономии ноды в Drupal 7

Еще один костыль для выполнения задачи в Drupal 7 — сделать замену выводимого электронного адреса в нескольких точках шаблона, в случае, если открыта нода с привязанными к ней определенными терминами таксономии. Проще говоря, если на открытой странице товара привязан завод А или завод Б — меняем выводимую почту на не стандартную.

Если бы электронка выводилась только в теле ноды было бы всё просто — в шаблоне ноды сделали бы условие на соответствие полей и исходя из этого выводили бы нужную нам электронку. Но в нашем случае она выводится в нескольких разных шаблонах, по этому прийдется ковыряться в функции файла template.php темы.

Не буду выбрасывать полностью функцию, ограничимся тем, что с её помощью выводятся заполненные поля в ноде, вытаскиваемые через БД.

Добавим в ноду еще одно поле, для нестандартной почты.

С учетом того, что функция выводит контактные данные на всех страницах сайта (нодах и таксономиях), нам нужно убедиться, что открыта именно страница ноды

$page_arg = arg();
$page_type = $page_arg['0'];

if ($page_type == 'node'){

}

Таким образом мы избавимся от накапливающихся ошибок в логах, которые будут появляется из за того, что на страницах таксономий не будут находится переменные нод.

Теперь внутри условия получим урл страницы, из которого получим айди открытой ноды и айди привязанного термина таксономии (поле field_manufacturer)

$cur_path = current_path();
$nid = str_replace("node/", "", $cur_path);
$current_node = node_load($nid);
if ($current_node->type == 'device'){
  $manufacturer = $current_node->field_manufacturer['und']['0']['tid'];
}

Таким образом в нашей функции мы получим переменную $manufacturer в которой будет айди привязанной таксономии по которой далее будем делать замену выводимой почты.

//сразу делаем опыть проверку на тип страницы
if ($page_type == 'node'){
	//делаем проверку - привязана ли наша нода к нужной таксономии, если да - меняем выводимую электронку меняем на кастомную
	if ($manufacturer == '743') {
		$output['email'] = $value->emailcustom;
	//если нет - выводим обычную электронку
	} else {
		$output['email'] = $value->email;
	}
//делаем вывод обычной электронки для всех остальных страниц
} else {
	$output['email'] = $value->email;
}

3 мнения к “Заменя переменных шаблона в зависимости от термина таксономии ноды в Drupal 7

  1. Я создаю тематический вид в Drupal 8 с помощью twig. Я хотел бы использовать фильтры twig для переменной row.content в шаблоне views-view-unformatted.html.twig. Похоже, что row.content-это массив, поэтому строковая манипуляция twig не работает. Однако он печатается на странице в виде строки (представление-это просто список терминов таксономии).

  2. Доброго времени суток Как переопределить шаблон для самой ноды, в зависимости от того какой термин она имеет? то есть есть у страницы термин «насос» — 1 шаблон, если термин «труба» — 2 шаблон ну и тд.. есть варианты?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Scroll Up