AJAX. Передача аргументов.

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

Аватар пользователя xurshid29@gmail.com xurshid29@gmail.com 21 июня 2012 в 18:34

Задолбался с этой задачей.
Когда страница загружается через AJAX views ктороые находятся внутри нода(к ноду прикреплены 8 views с помощью views_embed_view) не получает аргумент. Все вьюхи настроены с Contextual filters. Если они не получат аргумент, не будут видны. Так и получается, когда обычная загрузка, они на месте, когда AJAX загрузка их нету. Кто нибудь хот что то подскажет...

ЗЫ.. Модуль написан с помощью ctools.

Комментарии

Аватар пользователя Orion76 Orion76 22 июня 2012 в 1:34

"xurshid" wrote:
Все вьюхи настроены с Contextual filters

т.е. вьюхи получают аргумент непосредственно из адресной строки?
в views_embed_view можно в параметрах передать аргумент..
Анализируете запрос, "выдергиваете" аргументы и передаете их вьюхам..

Или я чего-то не так понял?
т.к. вы недостаточно подробно описали условие задачки..

Аватар пользователя xurshid29@gmail.com xurshid29@gmail.com 22 июня 2012 в 2:15

"orion76" wrote:
т.е. вьюхи получают аргумент непосредственно из адресной строки?
в views_embed_view можно в параметрах передать аргумент..
Анализируете запрос, "выдергиваете" аргументы и передаете их вьюхам..

Или я чего-то не так понял?
т.к. вы недостаточно подробно описали условие задачки..


вьюхи получают аргумент с адресной строки. Как я написал, если загрузка обычная, вьюха работает. А когда аякс загрузка они не получают аргумент. Мы несколько дней тому назад тоже обсудили, вот ссылка на запись: http://www.drupal.ru/node/83439. Тогда задача была неочень ясна, только сегодня выяснил что вьюхи не получают аргумент. Я вообще-то решил половину задачу, с помощью quicktabs. Потому что когда у вьюхи есть Contextual filter, они не смогут получить их(с акяс. Оказывается это ни только у меня). А у quicktabs как раз есть поля для доп. аргументов.

Аватар пользователя Orion76 Orion76 22 июня 2012 в 2:58

http://api.drupal.org/api/views/views.module/function/views_embed_view/7
function views_embed_view($name, $display_id = 'default')
Кроме параметров $name и $display_id функция принимает еще несколько параметров, которые являются аргументами вьюса..т.е.например пишем:

<?php

//Если грузиться страница ноды
if(arg(0)=='node'){
   
$nid=arg(1);
}
// Если нода подгружается аяксом
if(arg(0)=='ajax'){
   
$nid=$_GET['nid'];
}

$output=views_embed_view('my_view','page_1',$nid);
?>

Вьюс берет аргумент уже не из строки запроса, а переданный в параметрах функции

ЗЫ..Параметры запроса - "от фонаря"... Меняете на реальные...