Здравствуйте.
Создал кастом нод файл. Содержимые нода содержат только из PHP. То есть из CCK полей ни одного нет. Все отключены. Вот так выглядит файл: node--prfilter.tpl.php
<p><a href="<?php print base_path() . drupal_get_path_alias('node/' . $nid); ?>"><?php print $node->title; ?></a></p>
<?php else: ?>
<div class="prfilter_menu">
<?php print views_embed_view('prfilter_inner_menu_deystvie', $display_id = 'block'); ?>
</div>
<div class="filtercontainer">
<div class="filtercontainer_left">
<div class="filtercontainer_body">
<?php
$qtname = 'pr_poly';
print drupal_render(quicktabs_build_quicktabs($qtname));
?>
<h4><?php //print $node->title; ?></h4>
</div>
</div>
<div class="filtercontainer_right">
<?php print render($content['field_filterimg']); ?>
</div>
<div class="quicktab_content_load">
<?php
$qtname = 'real_item';
print drupal_render(quicktabs_build_quicktabs($qtname));
?>
</div>
</div>
<?php endif; ?>
Тут есть 1 views блок, 2 quicktabs. Quicktabs выводят разные views.
Но проблема в том что когда открываю ссылки этого типа все нормально работает. А когда загружаю через AJAX там никакие embedded коды нет. То есть views блок пуст, табы пусты. Посоветуйте, пожалуйста, что можно сделать чтоб AJAX загрузил целый нод который я настроил?
ЗЫ\\ Вот хелпер функция который загружает нод:
Комментарии
Посмотрите внимательно функцию node_view - она сама использует theme('node', $node, $teaser, $page);
В вашем случае скорей всего надо просто return node_view($node, $teaser = FALSE, $page = FALSE, $links = TRUE);
Ну как то так...
Спасибо за ответ, но проблема еще не решена. Ваш кусок код возвращает только слово Array..
Не могу понят, если пишу вот таким образом:
return views_embed_view ('name_of_view','display', $nid);
}
работает нормально, а в моем случае views_embed_view('name_of_view','display') находится в tpl файле и quicktabs тоже содержат только из views_embed. Непонятно, тут что то мешает функцию вытаскивать views_embed, или функция theme() не разрешает, еще не знаю..
Потому что view_node() возвращает мне правильный массив, то есть полный массив со всеми инфо. А после перехода массива через theme(), мне возвращаются только 7 строка слова, а они уже только названия tabs. Остальные инфо не знаю куда делись.
У quicktabs есть своя функция темизации ... может быть в этом причина
http://drupal.org/node/679148....
Я когда работа с qicktab ... шел так сказать от обратного создавал табы... потом вьюхи... потом подставлял эти вьюхи в табы...
я думаю, quicktabs нормально выполняет свою работу. То есть табы выводятся. А views нет. Вот здесь есть views:
<?php print views_embed_view('prfilter_inner_menu_deystvie', $display_id = 'block'); ?>
</div>
но не выводятся.
Здесь:
<?php
$qtname = 'pr_poly';
print drupal_render(quicktabs_build_quicktabs($qtname));
?>
<h4><?php //print $node->title; ?></h4>
</div>
И здесь:
<?php
$qtname = 'real_item';
print drupal_render(quicktabs_build_quicktabs($qtname));
?>
</div>
Ну, хотя здесь табы, но на самом деле тут рендерятся views.
Так Хуршид, давай повторим заклинание у нас есть виевс 'prfilter_inner_menu_deystvie' которые не выводиться через
<?php print views_embed_view('prfilter_inner_menu_deystvie', $display_id = 'block'); ?>
</div>
.... интересно... а ему надо передавать какие то параметры этому блоку... который формируется через views. Может ему аргументов не хватает?
Установи у себя модуль devel и поробуй выполнить такой код, на странице devel/php
ну и скажешь что выводиться
Когда обычная загрузка все нормально.
Вот ссылка на ajax: http://dida.uz/rano/ А там нажмите на Антигельминтное, или Антисептическое.. Потом выберите ссылку.
A здесь ссылка на готовый нод (через об. загрузки): dida.uz/rano/ru/content/erva-sherstistaya-pol-pola13-0
В функции _ajax_load_node_content после $node = node_load($nid); посмотрите структуру $node. Возможно, где-то есть уже сформированный текст (в body, например).
Вот пришла идея в голову... views и табы на страницу цепляют свои некие яваскрипт-файлы.. как вариант они не цепляются в шаблоне... можно попробывать цеплять js в препроцессе... ну как то так... Вообщем история довольно запутана...![Smile](https://drupal.ru/sites/all/modules/contrib/smiley/packs/kolobok/smile.gif)
При просмотре фаербагом... запросы на сервер шлються с сервера приходит ответ...но не обрабатывается.
Мой вывод таков: их не обрабатывает яваскрип на странице...НО могу и ошибаться...все мы люди
Не знаю как это сделать, но по моему если загрузить все эти views и табы прямо в модуле, они будут работать.. Потому что 1-ajax запрос, который загружает список товаров, прямо загружает views, и они нормально выводятся..
Но как это реализовать, не знаю.. может через hook_theme..
Ну что Хуршид, решил что то... если нет... можешь вечером в часов 9 в скайп стукнуться (по Москве)... он там в профиле указан....
Но повторюсь еще раз данные возвращаются... они просто скриптом не обрабатываются..
Спасибо вам за ответы.. Но, к сожалению, до сих пор не работает.
У меня мысли изменились:). Значить так:
1. ява скрипты работают, потому что таб работает;
2. дела не в hook_theme();
3. если поменяю:
$node = node_load($nid);
if ($node) {
$vnode = node_view($node);
return theme("node", $vnode);
};
}
на:
return views_embed_view('prfilter_inner_menu_deystvie','block', $nid);
}
ничего не выходит. А вообще-то по идею views должен выводится на страницу.
Почему так говорю, потому что другие ссылки, например, Антигельминтное, или Антисептическое (1-уровень), они точно по этому принципу работают, то есть callback возвращает views.
Может аргументы не передаются? как передать хрень знает..
ЗЫ.// внизу мой простенький модуль