как сделать так чтобы не перезагружалась вся страница
Добрый день.
Создаю тему для друпала 7, всё вроде пока получается. назрело пару вопросов.
немного о моей теме.
есть главное меню в регионе примари_линк (где выбирается тип контента) (и в регионе хеадер)
есть меню навигации по статьям определённого вида, которое меняется от главного меню.(в регионе левая_колонка) и (в регионе main-wrapper)
и есть колонка контент в которой собственно выводится определённый контенттип в зависимости от главного меню. (в регионе правая_колонка) и (в регионе main-wrapper)
вопрос первый.
как сделать так чтобы при выборе в примари линк перезагружалась только регион который ниже по структуре. соответственно регион main-wrapper
потом при выборе в регионе левая_колонка перезагружается только регионе правая_колонка .
я так понимаю тут нежно пользоватся ajax только не нашёл не чего вразумительного. по этой теме.
вопрос второй
как сделать так чтобы в левой колонке отображался определённый контент тип. (особый вид-форма) список разные для каждого пункта главного меню и соответственно в правой колонке в зависимости от выбранного элемента в левой колонке.
вопрос третий
сделал 3 колонки и они разной высоты. хочу чтобы они были одной высоты. использую Div для форматирования.
в page.tpl.php использую drupal 7
следующий кусок кода
<script language="JavaScript" type="text/javascript"> function setEqualHeight(columns){ var tallestcolumn = 0; columns.each(function(){ currentHeight = $(this).height(); if(currentHeight > tallestcolumn){ tallestcolumn = currentHeight; } } ); columns.height(tallestcolumn); } $(document).ready(function() { setEqualHeight($(".container > div")); }); </script>
С этим гемороем разобрался наконецто после ужина :) оказывается в 7-м Drupal не нравится когда пишут $
его нужно заменить на jQuery и всё сразу заработало с пол тычка.
как я вычетал причина том что jQuery работает в режиме noConflict
должно быть примерно такого вида
jQuery(document).ready(function() { setEqualHeight(jQuery(".container > div")); });
ну и соответственно везде $ на jQuery и будет вам счастие.
Надеюсь комуто будет полезная информация.
первые 2-а вопроса остаются открытыми.
вопрос первый.
как сделать так чтобы при выборе в примари линк перезагружалась только регион который ниже по структуре. соответственно регион main-wrapper
потом при выборе в регионе левая_колонка перезагружается только регионе правая_колонка .
я так понимаю тут нежно пользоватся ajax только не нашёл не чего вразумительного. по этой теме.
Самое простое это вывести меню и добавить каждому пункту класс, допустим "menu-ajax", теперь в jquery можно добавить событие по этому классу:
$('.menu-ajax').click(function(){ return false; });
Теперь перейти по ссылки при включенном javascript не получится. И можно настраивать вывод в нужный регион страницы. О том как использовать ajax можно почитать здесь:
http://tutorialzine.com/2009/09/simple-ajax-website-jquery/
На а вообще в Друпале свой ajax фреймворк:
http://drupal.org/node/305747
вопрос второй
как сделать так чтобы в левой колонке отображался определённый контент тип. (особый вид-форма) список разные для каждого пункта главного меню и соответственно в правой колонке в зависимости от выбранного элемента в левой колонке.
Если выводить через Views, то можно использовать relations. Для каждой ноды задать поле зависимости, в подмодулях CCK есть модули user relations, node relations, для 7ки есть тоже модуль relations. Так вот задает зависимости для нод от каких-то других нод (пользователей, терминов таксономии) и уже во Views добавляем relation и аргумент который будет выбирать нужную нам ноду и уже к этой ноде привязывает relation к другим нодам.