Ваш файл ajaxview.php не находится в том же контексте, что и ваш код в node-xxx.tpl.php, и это означает, что он не имеет доступа к переменной $ node.Ваш файл ajaxview.php выполняется как новый скрипт, вероятно, за пределами Drupal, если вы действительно назвали его ajaxview.php.
Вы должны рассмотреть возможность создания пути в хуке меню и вызвать этот путь с помощью ajax в вашем узле.xxx.tpl.php.
<?php
function test_menu() {
$items = array();
$items['myajax'] = array(
'title' => 'My Ajax',
'page callback' => 'test_myajax',
'description' => 'Test',
'access arguments' => array('access content'),
'type' => MENU_CALLBACK,
);
return $items;
}
function test_myajax($nid) {
$node = node_load($nid);
print '<div id="rightcolumn">';
print $node->content['Comments_node_content_1']['#value'];
print '</div>';
exit();
}
Этот код создаст новый путь "myajax" (который вы должны переименовать в нечто более значимое для вас), который должен вызываться с идентификатором узла, подобным этому:
http://yoursite/myajax/999
, где 999 - идентификатор узла.
Это означает, что в вашем коде, который вызывает ajax, вы должны передать nid текущего просматриваемого узла.Есть разные способы сделать это, в зависимости от вашего контекста.
Вот пример javascript, который работает с кодом выше (я тестировал его локально).
<script type="text/javascript">
Drupal.behaviors.ajaxview = function(context) {
$("#ajaxclick").click(function(){
$("#container-test").load(Drupal.settings.basePath + "myajax/" + 999);
});
}
</script>
<a id="ajaxclick" href= "#">Click me</a>
<div id="container-test"></div>