DARTHARTH

Условное выполнение скрипта в представлении Drupal 7

Продолжаем извращаться с различными версиями Drupal и на этот раз на семерке в представлении возникла необходимость выполнения скрипта через условие с PHP.

Изначально была задача следующая — в нодах список выбора, при определенном выбранном значении нужно было в представлении скрывать несколько кнопок выводящихся в поле пользовательского текста.

Итак добавляем глобальное поле PHP в представлении

<?php 
   $node = node_load($row->nid);
   $aviable = $node->field_select_aviable['und']['0']['value'];
   if ($aviable == 'notaviable'){
      echo '
	<script>
	   (function($){
	      $(document).ready(function() {
		$(\'.tax_node_button_'.$row->nid.'\').addClass(\'hide_buttons\');
		});
	      })(jQuery);
        </script>
      ';
   }
?>

Немного рассмотрим, что в этом костыле напихано. Первая строка

$node = node_load($row->nid);

получаем массив текущей ноды по полю айди — $row->nid.

Во-второй строке получаем выставленное значение поля ноды, в нашем случае значение выставленного выбора списка

$aviable = $node->field_select_aviable['und']['0']['value'];

Далее идет обычная проверка условия. Нам нужно скрывать кнопки, если значение поля равно notaviable

if ($aviable == 'notaviable'){

И в случае, если у ноды выставлено это значение выполняем скрипт, который блоку с классом tax_node_button_%id-ноды% добавляет еще один класс — hide_buttons

$(\'.tax_node_button_'.$row->nid.'\').addClass(\'hide_buttons\');

В стилях этому классу можно задать display: none.

Таким образом скрипт у нас будет выполнятся только у нод с совпаденеим значения поля.

Также, возможно пригодиться, отвалился вариант скрипта, который искал на странице скрытый текст нашего поля notaviable и в случае, если такой текст был, элементу добавлялся нужный класс.

<script>
   (function($){
      $(document).ready(function() {
	var content = document.body.textContent || document.body.innerText;
	var hasText = content.indexOf("notaviable")!==-1;
	   if(hasText){
	      $('.tax_node_button').addClass('hide_buttons');
           }
	});
   })(jQuery);
</script>

Такой вариант больше подойдет для странице на которой выводится одна нода.

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

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

Scroll Up