vandamme, Да да, так то оно так. про функцию arg(n) знаю. Но, вся проблема в том, что
site.ru/node/1?ajaxrequest- обращение фактически к странице site.ru/node/1(на которой может быть материал с текстом)
а site.ru/node/1/ajaxrequest - обращение к странице site.ru/node/1/ajaxrequest(на которой ничего нет или даже 404)
Не самому же делать вывод материала) Нет можно конечно через хук hook_menu сделать страничку, потом на ней возвращать статью способом:
if((arg(1)=="node") && is_numeric(arg(2))){ $node = node_load(arg(2));//загружаем материал print render($node->title);//название материала print render ($node->body['und'][0]['safe_value']);//текст материала drupal_exit(); exit(); }
НО. А как же быть с такосономией, категориями там, например? Опять же модуль views - ндао писать с ним взаимодействие какое - то, ведь вдруг пользователь указал что на странице не больше 10 материалов, а модуль выводит все и сразу?)) Нее, это совсем бардак выходит. Вот если б узнать почему такие простые и элегантные строчки(выше в посте) не работают... И как их заставить работать - это бы прям как гора с плеч)
Здравствуйте. Хотелось бы узнать как вывести в Drupal 7 полный текст материала(node). То есть мы имеем сторонний модль. В нем надо вывести описания и заголовки всех материалов. Как это сделать я и сам пойму, вы главное помогите мне просто получить материал.
Код
$node = node_load($vid);
echo $node->$content;
Почему-то не пашет.
И как по Урлу найти ид ноды. То есть если имеется материал по адресу /node/1 - как найти его ид? или 1 - и есть его ид?
bsyomov, Да да в курсе я что друпал сложная CMS, но уже что-то понимаю, метод проб и ошибок) Да и форум - живое общение все-же лучше тупой зубрежки, разве нет?
К слову еще один вопрос - Как передать в шаблон(tamplate) скажем GET запрос из скрипта. В общем имеется скрипт на jquery, как его подключать к друпалу прочитал тут: http://azbukaweb.ru/managing-javascript-in-drupal7
Вопрос - на какую страницу отправлять запрос? на index.php? Если бы движек я писал, или хотя-бы перепиливал, то на индекс.пхп бы сделал прием запроса, но как вы уже говорили друпал - сложная штука. Далее КАК получить переданную GET запросом переменную sometext внутри темы? В частности внутри функции template_preprocess_html(&$vars).
//php
function templatename_preprocess_html(&$vars){
if($vars['page']['sometext']){
// требуемые действия...
}
}
что-то мне подсказывает что вышеуказанная зарисовка пахать не будет. Гугл рою как бульдозер - однако пока результат нулевой. Скажите как заставить друпал получить значение из скрипта внутрь функции templatename_preprocess_html, и не плохо было бы узнать как получить результат выполнения в $.ajax().done();
Кто делал похожее, подскажите куда копать хотя - бы. Буду очень признателен.
В нескольких темах по Drupal фигурировала мысль: "не тем путём идёт развитие".
Верно, читал. Однако мое мнение по этому поводу совершенно иное - Drupal идет вперед слишком быстро. Например в 8 версии имеется идея отказа от поддержки эксплорера 6, из за почти полного перехода к html5. По идее я только ЗА эти изменения. Да и 7 версия мне нравится, хоть и не так удобна, и гораздо более запутана. Шаблоны для этого друпала я клепать не умею, зато умею менять дизайн стандартных шаблонов - мне этого хватает, все что угодно сверстаю.
---------- Добавлено 28.08.2012 в 11:49 ----------
В Drupal 7 появился новый AJAX Framework, который позволяет абстрагироваться от написания Javascript кода.
Нафига? Не привычнее когда js код отдельно, php - отдельно. Зачем делать реализацию js(еще и не факт что прямую) кода через php? Неужели вы знаете хоть одного веб девелопера, не знающего скрипты? Странные все таки эти создатели друпала...
вы проблемы себе строите на будущее. Правильная поддержка сайта означает своевременное обновление ядра и модулей. Пиля ядро, вы делаете работу сайта непредсказуемой.
Согласен. Однако требуется чтобы данная методика - навигация аякс, работала с Любыми(или почти любыми) друпал темами. Я бы написал модуль, но Как в модуле переопределить стандартную функцию вывода темы я не в курсе. И вообще оно возможно?О_0 что-то мне подсказывает что нет - ибо доступ к функциям ядра CMS из стороннего модуля - почитай кощунство. ДА и ООП не используется - не применимо наследование как понятие. Хотя если вы знаете как заставить Drupal заставить игнорировать встроенную функцию theme и обращаться к функции, определенной в модуле - было бы интересно узнать)
хм) А в чем соль то собственно? Вроде бы Drupal - опенсорцная CMS - а значит можно модифицировать ее так - как мне требуется. Я на джумле и не аткое проворачивал - выпилил как-то стандартный Com_content полностью(вплоть до выбора типа пункта меню) и заменил его на com_k2. Вроде работает отлично. Почему-бы и друпал так не перепилить, ведь лицензия это допускает. И не надо бояться копать внутренности. Там все раскомментировано)
Тогда на главной и любой другой странице друпал покажет только текст 1231313131231231
А следовательно - Переменная $output - это и есть итоговый вид страницы сайта.
Скорее всего, вы по незнанию Drupal неправильно ставите задачу. Вам совершенно не нужно это самое место. =) Если вам нужно изменить вывод чего-либо, это можно сделать в слое темизации, с помощью различных preprocess или шаблонов...
Нет. Точнее я не хочу так делать. Да я знаю что так можно - но в текущий момент - не нежно.
Давайте попытаюсь разъяснить вам в чем основной "прикол" моей задачи.
Прикол в Ajax. Нет не в формах, к которым все уже 1тыс раз обращались а полностью в аякс подгрузке нодов - статей, при этом ссылка должна указывать на нединамическую(реальную) копию страницы Но при клике на нее ссылка посредством js кода преобразуется в хеш.
То есть имеется ссылка site.ru/node/animals - она указывает на страницу которая загрузится при клике на ссылку, если у юзера не включен js, если же js включен - ссылка переделается в вид site.ru/#/node/animals с помошью яваскрипта, а на сервер будет отправлен запрос, например такого вида:
POST: load:/node/animals
на сервере на странице index.php будет принят параметр $_POST['load'] и в ответ передан только блок, в котором находится статья,а не вся страница(трафик экономицо). Этот блок посредством js же, будет вставлен в слой где статьи обычно выводятся(сначала очистим слой, а потом добавим новый текст).
________________
По ходу теперь все кажется вам еще запутаннее. Ну не умею я объяснять)
---------- Добавлено 27.08.2012 в 11:58 ----------
vandamme, Да да, так то оно так. про функцию arg(n) знаю. Но, вся проблема в том, что
site.ru/node/1?ajaxrequest- обращение фактически к странице site.ru/node/1(на которой может быть материал с текстом)
а site.ru/node/1/ajaxrequest - обращение к странице site.ru/node/1/ajaxrequest(на которой ничего нет или даже 404)
Не самому же делать вывод материала) Нет можно конечно через хук hook_menu сделать страничку, потом на ней возвращать статью способом:
НО. А как же быть с такосономией, категориями там, например? Опять же модуль views - ндао писать с ним взаимодействие какое - то, ведь вдруг пользователь указал что на странице не больше 10 материалов, а модуль выводит все и сразу?)) Нее, это совсем бардак выходит. Вот если б узнать почему такие простые и элегантные строчки(выше в посте) не работают... И как их заставить работать - это бы прям как гора с плеч)
Друзья, подскажите почему не работет указанный хук:
Хотя тут: http://drupal.org/node/1259412 написано что он работает.
вот строка оттуда url: $(this).attr('href') + '?ajaxrequest',
Я вообще не понимаю как отправить в друпал гет запрос. По моему личному мнению - это не возможно из за строки в .htacess
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
то есть гет вообще не возможен, так как запрос вида site.ru/node/1?ajaxrequest
будет преобразован в вид:
site.ru/index.php?q=/node/1?ajaxrequest
и получается вложенность, короче гря бред получается.
Кто подскажет как заставить указанный выше хук работать? Благодарю)
Здравствуйте. Хотелось бы узнать как вывести в Drupal 7 полный текст материала(node). То есть мы имеем сторонний модль. В нем надо вывести описания и заголовки всех материалов. Как это сделать я и сам пойму, вы главное помогите мне просто получить материал.
Код
$node = node_load($vid);
echo $node->$content;
Почему-то не пашет.
И как по Урлу найти ид ноды. То есть если имеется материал по адресу /node/1 - как найти его ид? или 1 - и есть его ид?
спасибо)
bsyomov, Да да в курсе я что друпал сложная CMS, но уже что-то понимаю, метод проб и ошибок) Да и форум - живое общение все-же лучше тупой зубрежки, разве нет?
К слову еще один вопрос - Как передать в шаблон(tamplate) скажем GET запрос из скрипта. В общем имеется скрипт на jquery, как его подключать к друпалу прочитал тут: http://azbukaweb.ru/managing-javascript-in-drupal7
предположим в скрипте есть такой код(jquery):
Вопрос - на какую страницу отправлять запрос? на index.php? Если бы движек я писал, или хотя-бы перепиливал, то на индекс.пхп бы сделал прием запроса, но как вы уже говорили друпал - сложная штука. Далее КАК получить переданную GET запросом переменную sometext внутри темы? В частности внутри функции template_preprocess_html(&$vars).
Будет ли работать такое:
что-то мне подсказывает что вышеуказанная зарисовка пахать не будет. Гугл рою как бульдозер - однако пока результат нулевой. Скажите как заставить друпал получить значение из скрипта внутрь функции templatename_preprocess_html, и не плохо было бы узнать как получить результат выполнения в $.ajax().done();
Кто делал похожее, подскажите куда копать хотя - бы. Буду очень признателен.
Alangasar, Во! Давно бы так !)) Спасибо за простой и понятный ответ. ато все апи читай, да апи читай))
Верно, читал. Однако мое мнение по этому поводу совершенно иное - Drupal идет вперед слишком быстро. Например в 8 версии имеется идея отказа от поддержки эксплорера 6, из за почти полного перехода к html5. По идее я только ЗА эти изменения. Да и 7 версия мне нравится, хоть и не так удобна, и гораздо более запутана. Шаблоны для этого друпала я клепать не умею, зато умею менять дизайн стандартных шаблонов - мне этого хватает, все что угодно сверстаю.
Благодарю.
---------- Добавлено 28.08.2012 в 11:49 ----------
Нафига? Не привычнее когда js код отдельно, php - отдельно. Зачем делать реализацию js(еще и не факт что прямую) кода через php? Неужели вы знаете хоть одного веб девелопера, не знающего скрипты? Странные все таки эти создатели друпала...
____________________________
Любите музыку - тогда добро пожаловать: http://www.aftamat4ik.ru
Согласен. Однако требуется чтобы данная методика - навигация аякс, работала с Любыми(или почти любыми) друпал темами. Я бы написал модуль, но Как в модуле переопределить стандартную функцию вывода темы я не в курсе. И вообще оно возможно?О_0 что-то мне подсказывает что нет - ибо доступ к функциям ядра CMS из стороннего модуля - почитай кощунство. ДА и ООП не используется - не применимо наследование как понятие. Хотя если вы знаете как заставить Drupal заставить игнорировать встроенную функцию theme и обращаться к функции, определенной в модуле - было бы интересно узнать)
хм) А в чем соль то собственно? Вроде бы Drupal - опенсорцная CMS - а значит можно модифицировать ее так - как мне требуется. Я на джумле и не аткое проворачивал - выпилил как-то стандартный Com_content полностью(вплоть до выбора типа пункта меню) и заменил его на com_k2. Вроде работает отлично. Почему-бы и друпал так не перепилить, ведь лицензия это допускает. И не надо бояться копать внутренности. Там все раскомментировано)
Все, сам требуемое нашел :). Функция называется:
Файл - /includes/theme.inc
cтрока(у меня в нотепаде) - 751.
Имейте ввиду - это Drupal 7
В конце функции есть строка, возвращающая результат:
return $output;
Так вот с этим $output можно играться, например так:
$pos = strpos("<body>",$output);$output=substr($pos,$output);
$output=$output."<p>1231313131231231</p></body></html>";
Тогда на главной и любой другой странице друпал покажет только текст 1231313131231231
А следовательно - Переменная $output - это и есть итоговый вид страницы сайта.
Нет. Точнее я не хочу так делать. Да я знаю что так можно - но в текущий момент - не нежно.
Давайте попытаюсь разъяснить вам в чем основной "прикол" моей задачи.
Прикол в Ajax. Нет не в формах, к которым все уже 1тыс раз обращались а полностью в аякс подгрузке нодов - статей, при этом ссылка должна указывать на нединамическую(реальную) копию страницы Но при клике на нее ссылка посредством js кода преобразуется в хеш.
То есть имеется ссылка site.ru/node/animals - она указывает на страницу которая загрузится при клике на ссылку, если у юзера не включен js, если же js включен - ссылка переделается в вид site.ru/#/node/animals с помошью яваскрипта, а на сервер будет отправлен запрос, например такого вида:
POST: load:/node/animals
на сервере на странице index.php будет принят параметр $_POST['load'] и в ответ передан только блок, в котором находится статья,а не вся страница(трафик экономицо). Этот блок посредством js же, будет вставлен в слой где статьи обычно выводятся(сначала очистим слой, а потом добавим новый текст).
________________
По ходу теперь все кажется вам еще запутаннее. Ну не умею я объяснять)
---------- Добавлено 27.08.2012 в 11:58 ----------
К стати если поиграться с переменной $output - эти теги можно закрыть. Легко хД
АА все все все)) Понял спасибо большое)) В общем если интересно написал так:
Всем огромное спасибо!!