Показывать приатаченую вьюху к ноде в зависмости от значения поля это ноды

Главные вкладки

Аватар пользователя iNFerNo iNFerNo 28 мая 2012 в 11:06

Показывать приатаченую вьюху к ноде в зависмости от значения поля это ноды

т.е. если поле = значению 1 - показывать вьюху, если не равно то не показывать...

какое условие и где оно прописывается...

Комментарии

Аватар пользователя divined divined 28 мая 2012 в 11:15

Это можно сделать в шаблоне ноды.

Прочитать значение поля $node->field_{name}[0]['value'];

<?php
$view 
views_get_view('views_name'); //Получаем вьюху
$term taxonomy_get_term($node->field_{name}['0']['value']); //У меня в поле записан термин

$args = array();
foreach (
$terms as $key=>$t) {     //Перевожу термин в аргументы, которые могу подставить в вьюху
  
$args[$key] = $t->tid;
}
$arg implode('+',$args);

print 

$view->preview('default', array($arg));  //Вывожу вьюху, вид "default"
?>

Соответственно у вас в поле можен быть записано или название вьюхи или название вида вьюхи и все что угодно.

В вашем случае:

<?php
$view 
views_get_view('views_name'); 
if (
$node->field_{name}['0']['value']) {
   print 
$view->preview('default', array());
}
?>
Аватар пользователя divined divined 28 мая 2012 в 11:18

Хмм, не понял что значит не плодить. В шаблоне вы никак не сможете плодить вьюхи.

Другого способа подсказать не могу, пользуюсь этим.

Аватар пользователя iNFerNo iNFerNo 28 мая 2012 в 11:18

я в шаблоне пока сделал так

if ($node->field_funding[0]['value'] == '0') {

print $node->content['material_for_catology_node_content_5']['#value'];

}

else {

print $node->content['material_for_catology_node_content_4']['#value'];

}      

Аватар пользователя iNFerNo iNFerNo 28 мая 2012 в 11:20

"divined" wrote:

просто для одного значения поля ноды - одна вьюха для другого другая. вот и хотелось сделать что бы если значения поля ноды одно - одна вьюха если другое не выводить это поле во вьюхе вообще

м.б. в темизации виевс как то можно решить...

Аватар пользователя iNFerNo iNFerNo 28 мая 2012 в 11:44

Нет ну ваше решение понятно. Я так и сделал - создал два вида и в зависимости. от значения поля вывожу нужный мне вид.

я просто хотел не залезая в шаблон через виевс. где нить в аргументах задать условие для значения поля ноды и если оно другое не выводить вьюху.

Аватар пользователя divined divined 28 мая 2012 в 11:46

Хмм, в вьюхе задать условие на вывод вьюхи, причем от значения поля, обращение к которому произойдет только после выполнения вьюхи?

Вам не кажется это абсурдным?

Аватар пользователя voviko voviko 28 мая 2012 в 11:51

"iNFerNo" wrote:
я просто хотел не залезая в шаблон через виевс. где нить в аргументах задать условие для значения поля ноды и если оно другое не выводить вьюху.

может в адресе ноды прописать имя поля, и использовать его в аргументах views

Аватар пользователя iNFerNo iNFerNo 28 мая 2012 в 11:52

нет. во виевс задать условия для значения поля и если оно не то то виевс не выводить...

ну это точно также как в аргументе выбираем нид узла и потом этот узел исключаем из списка или выбираем не показывать вивевс ели аргумент не але...

Аватар пользователя divined divined 28 мая 2012 в 12:08

1. Вы выбираете не показывать значение если аргумент не але, а вьюха всеравно показывается и отрабатывает.
2. Есть вариант испольовать аргументы, но он всеравно связан с изменением кода в шаблоне + добавление кода в аргументы вьюхи, я не думаю что он будет легче.

Знаете что самое интересное, где нужно думать о скорости работы сайта вы об этом не думаете а делаете как проще, и наоборот где можно сделать проще и это не повлияет на скорость работы сайта, вы ищите вариант посложнее.

Как сказал бы мой знакомый психолог, "Вы хотите поговорить об этом?".
Риторический вопрос.

Аватар пользователя iNFerNo iNFerNo 28 мая 2012 в 12:11

1. получается что так.
2. кто не будет легче то? код... Smile мне вот и хочется покапатся в шаблоне вьюхи и в аргументе на этом примере.

Аватар пользователя divined divined 28 мая 2012 в 12:30

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

Аватар пользователя divined divined 28 мая 2012 в 12:35

Да, но значение то где у вас записан 0 или 1 никак не свзяно с это приатаченной вьюхой и вьюха о нем никак не может знать!

Аватар пользователя divined divined 28 мая 2012 в 12:37

В вашем случае нода знает о вьюхе все, а вот вьюха о ноде в которой она вызывается не знает ничего.
Когда вы делаете наоборот: в вьюхе вызываете ноды, вы же не можете в поле ноды проверить какой вид вьюхи его в данный момент отображает. )

Аватар пользователя divined divined 28 мая 2012 в 12:40

А единственный общий знаменатель здесь это шаблон, который знает все и о ноде и о полях фильтра вьюхи и о самой вьюхе.

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

Аватар пользователя divined divined 28 мая 2012 в 12:45

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

Я же надеюсь что внутри ноды вы выводите вьюху, которая отображает другое содержимое?

Аватар пользователя divined divined 28 мая 2012 в 12:54

Тогда тут я вам не помогу, думайте сами..хотя:

Первое что приходит на ум - аргумент:

значение - если нет, подставить аргумент по умолчанию
PHP код - подстановка значения из указанного вами поля
PHP проверка - 0 возвращать лож, 1 - истину.

И соответственно два вида с разными значениями, в зависимости от 0 или 1.

Аватар пользователя iNFerNo iNFerNo 28 мая 2012 в 12:57

а разве в шаблоне вьюхи таблицу нельзя разобрать по полям и скрыть их хотя бы если поле ноды куда приатачена виевс не нужного значения?

Аватар пользователя divined divined 28 мая 2012 в 13:15

1. В шаблоне вьюхе таблица уже разобрана по полям )))
2. В шаблоне вьюхи ты не можешь обратится к значению поля ноды ))