Здравствуйте.
Необходимо сделать в середине ноды (свой тип материала, как здесь Пример модуля для своего типа материала) меню(таб) Например "Краткое описание" и "Комментарии". Я нашёл пару примеров (jQuery tabs внутри node и Написать табы (закладки) собственноручно? Легко!) есть ещё модуль Quick Tabs. Но у меня для каждой ноды данного типа материала контент уже есть на сайте например комментарии к этой ноде. Вывести в теле ноды список со ссылками не представляет проблем, необходимо при выборе ссылки отрисовать ноду заново, но уже с новым контентом. Как это реализовать, не могу придумать. Прошу помощи. Спасибо.
Комментарии
Попробуйте описать пример и проблему еще раз. ))) Недогнал.
Есть нода-товар (нода сомадельная). Визуально нода разделена на две части. В первой части характеристика товара - как то вес, цвет и т.д. Вторая часть это Меню: "Отзывы"(комментарии), "Статьи о товаре". Так вот. Как реализовать это меню? Нарисовать то его я могу. Но если подсоединяю колбэк-функцию к пункту меню "Отзывы" в хук-меню , ничего не отображается. Самодельную ноду то я отображаю в hook_view. В этот раз понятно?
Описательная часть понятна. Теперь что вы хотите добиться при нажатии? Что на что заменять и т.д.
Предварительно:
Сделать это меню формой, где каждому элементу присвоить ajax событие.
Я не знаю будут ли работать такой способ без форм, ни разу не пытался:
<?php
$link = array(
'#type' => 'button',
'#value' => '',
'#ajax' => array(
'wrapper' => 'node'
'callback' => '',
),
);
print
render($link);?>
в колбэке можно редиректить на другой адрес, например:
/node/65 -> /node/65/comments
/node/65 -> /node/65/articles
А в 6-ке можно с помощью аякса заменить и контент ноды )))
Спасибо кто откликнулся. Так получилось, был далеко от сети.
По поводу вопроса. Что хочу в результате - при выборе пунктов меню, что бы контент ноды частично менялся. То есть, характеристика товара оставалась та же, только подтягивались комментарии или только статьи. Фактически менялся бы только контейнер с контентом, относящимся к меню-табам.
То divined - я думал реализовать это на ajax & jquery. На мой взгляд, это более громоздкое решение. Почему? Грузится дополнительный ява-скрипт, так же есть пользователи с мобильным соединением к сети, бывает отключают скрипты.
Сама нода отображается здесь:
* Implementation of hook_view().
*
* This is a typical implementation that simply runs the node text through
* the output filters.
*/
function node_example_view($node, $teaser = FALSE, $page = FALSE) {
$node = node_prepare($node, $teaser);
$node->content['myfield'] = array(
'#value' => theme('node_example_order_info', $node),
'#weight' => 1,
);
return $node;
}
А рисуется вот так:
* A custom theme function.
*
* By using this function to format our node-specific information, themes
* can override this presentation if they wish. We also wrap the default
* presentation in a CSS class that is prefixed by the module name. This
* way, style sheets can modify the output without requiring theme code.
*/
function theme_node_example_order_info($node) {
$output = '<div class="node_example_order_info">';
$output .= t('The order is for %quantity %color items.', array('%quantity' => check_plain($node->quantity), '%color' => check_plain($node->color)));
$output .= '</div>';
return $output;
}
то есть в функции темизации ноды, нужно набирать в зависимости от адреса разный контент, но как сказать самой ноде?
Т.е. вопрос решен?
Как-то вы неясно излагаете свои мысли )