Drupal 7 - получение определенной части страницы

1 2345 6
bsyomov
На сайте с 25.01.2012
Offline
31
#21
В нескольких темах по Drupal фигурировала мысль: "не тем путём идёт развитие". Начинаю задумываться над этим: в варианте удаления невалидного слеша к примеру: редактирование theme.inc - 15 секкунд (ещё раз спасибо Alangasar) , в template.php же - непонятно зачем наворачивать странные конструкции для решения элементарного вопроса.

Там поднимался вопрос не архитектурный прежде всего, а административный, т.е. кто куда одеяло тянет. =)

Редактирование файлов ядра и модулей, это очень плохая практика, появляющаяся от непонимания архитектуры Drupal, и пришедшая из CMS где без этого не обойтись, и где, кстати, очень всё плохо с поддержкой. Возможность перекрывать функции темизации, и другие хуки, огромная сила Drupal, на самом-то деле, такой метод сильно упрощает дальнейшую поддержку.

Этот подход, эквивалентен перекрытию методов родительского класса. То, что это делается не на основе ООП, а системой хуков, имеет на самом деле свои плюсы и минусы. Но обсуждать это довольно холиварная тема, главное, что такой инструмент есть и позволяет не залезать в ядро или модули, и соответственно спокойно их обновлять.

Alangasar, Во! Давно бы так !)) Спасибо за простой и понятный ответ. ато все апи читай, да апи читай))

Без самостоятельного изучения основ, вы не сможете делать сколько-нибудь сложные вещи самостоятельно. И не сможете понять, какой из предлагаемых вам методов решения, стоит выбрать и почему.

Drupal достаточно сложен и учить его по ответам на форуме и готовым примерам плохая идея.

[Удален]
#22
bsyomov:
Там поднимался вопрос не архитектурный прежде всего, а административный

Тем видел 3-4 и углядел именно архитектурный акцент, особенно на фоне частных траблов

Пример: классический штатный мультисайтинг - robots.txt Реализован:

<?php
header('Content-type: text/plain');
$robotstxt = "sites/" . $_SERVER['HTTP_HOST'] . "/robots.txt";
echo file_get_contents($robotstxt);
?>
1. С Гуглом - всё хорошо

2. "Файл robots.txt не будет учтён роботом Яндекса, т.к. при запросе выполняется перенаправление."

А вроде классика жанра... ))

Alangasar
На сайте с 06.11.2008
Offline
98
#23

Pavel_, не встречал такого штатного решения для robots

A4
На сайте с 05.01.2012
Offline
55
#24

bsyomov, Да да в курсе я что друпал сложная CMS, но уже что-то понимаю, метод проб и ошибок) Да и форум - живое общение все-же лучше тупой зубрежки, разве нет?

К слову еще один вопрос - Как передать в шаблон(tamplate) скажем GET запрос из скрипта. В общем имеется скрипт на jquery, как его подключать к друпалу прочитал тут: http://azbukaweb.ru/managing-javascript-in-drupal7

предположим в скрипте есть такой код(jquery):


$.ajax({
url: урл какой?,
type: "GET",
data: {sometext:txt}
}).done(
//действия
);

Вопрос - на какую страницу отправлять запрос? на index.php? Если бы движек я писал, или хотя-бы перепиливал, то на индекс.пхп бы сделал прием запроса, но как вы уже говорили друпал - сложная штука. Далее КАК получить переданную GET запросом переменную sometext внутри темы? В частности внутри функции template_preprocess_html(&$vars).

Будет ли работать такое:


//js
$.ajax({
url: "/index.php",
type: "GET",
data: {sometext:txt}
}).done(
//действия
);

//php
function templatename_preprocess_html(&$vars){
if($vars['page']['sometext']){
// требуемые действия...
}
}

что-то мне подсказывает что вышеуказанная зарисовка пахать не будет. Гугл рою как бульдозер - однако пока результат нулевой. Скажите как заставить друпал получить значение из скрипта внутрь функции templatename_preprocess_html, и не плохо было бы узнать как получить результат выполнения в $.ajax().done();

Кто делал похожее, подскажите куда копать хотя - бы. Буду очень признателен.

[Удален]
#25
Alangasar:
не встречал такого штатного решения для robots

штатный - мультисайтинг, а решение - классическое... ))

Ставить http://drupal.org/project/robotstxt, а потом http://drupal.org/project/domain_robotstxt на несколько сайтов подряд (5-20 например попробуйте) - довольно скушно и утомительно.

Глобально: простой файл robots.txt прикрутить - геммор однака иль ещё есть человеколюбивые варианты?

bsyomov
На сайте с 25.01.2012
Offline
31
#26
Pavel_:
Тем видел 3-4 и углядел именно архитектурный акцент, особенно на фоне частных траблов

Пример: классический штатный мультисайтинг - robots.txt Реализован:1. С Гуглом - всё хорошо
2. "Файл robots.txt не будет учтён роботом Яндекса, т.к. при запросе выполняется перенаправление."
А вроде классика жанра... ))

Где тут перенаправление? Его нет.

Если вы делаете для работы этого варианта редирект в .htaccess, так это не нужно.

aftamat4ik, я говорю не про зубрёжку, а про планомерное изучение, а не потыкал там, потыкал здесь. Тогда у вас и не будет возникать таких вопросов.

Запрос надо отправлять на тот адрес, который вернёт нужные данные. При чём тут вообще index.php?

Это, например, может быть ваш модуль, который будет формировать нужные вам данные, и использовать hook_menu(), для того, чтобы отвечать по заданному адресу, и запускать соответствующий обработчик.

[Удален]
#27
bsyomov:
Где тут перенаправление? Его нет.
Если вы делаете для работы этого варианта редирект в .htaccess, так это не нужно.

Перенаправление разумеется присутствует в .htaccess

Как бэ по другому сия конструкция априори работать несмогёть...

bsyomov:
так это не нужно

А как нужно?

Вероятно, в ответе будет и мотив обсудить архитектуру... ))

bsyomov
На сайте с 25.01.2012
Offline
31
#28

Как же не смогёт, когда можно сделать следующее:

RewriteRule ^robots.txt$ robots.php [L]

И запрос будет обработан вашим вышеописанным скриптом, безо всяких редиректов - вы не отдаёте такой конструкцией редирект, а лишь изменяете обработчик, и нет способа снаружи узнать о том, какой конкретный скрипт отдал данные. Никаких модулей, обычные robots.txt в корне соотв. папок, один скрипт в корне сайта.

Скрипт конечно лучше немного доработать, чтобы отдавать стандартный друпаловский robots.txt, если в папке домена его нет.

На самом деле, вообще можно обойтись alias, даже без mod_rewrite.

К тому же, при мультисайтинге на одном и том же движке, не так уж часто вообще разные robots.txt нужны.

[Удален]
#29
bsyomov:
Как же не смогёт, когда можно сделать следующее:
RewriteRule ^robots.txt$ robots.php [L]

Вы правы, [L,R...] R - шибко лишний

Редирект и изменение обработчика - конечно разные вещи...

Терминология в нашем колхозе слабо изучалась... ))

bsyomov:
На самом деле, вообще можно обойтись alias, даже без mod_rewrite

Это вероятно новый тип материала создавать надобно, что по гемморности реализации и дальнейшей поддержки для десятка сайтов соизмеримо с установкой модуля domain_robotstxt

bsyomov:
при мультисайтинге на одном и том же движке, не так уж часто вообще разные robots.txt нужны

Разные robots.txt полезны, например явно указать на карту сайта или хост

bsyomov
На сайте с 25.01.2012
Offline
31
#30
Pavel_:
Вы правы, [L,R...] R - шибко лишний
Редирект и изменение обработчика - конечно разные вещи...
Терминология в нашем колхозе слабо изучалась... ))

Зря. =)

В общем проблема о которой вы писали надумана. Т.е. ничто не мешает просто правильно написать .htaccess. В варианте без редиректа никаких препятствий использовать скрипт, указанный выше нет.

Pavel_:

Это вероятно новый тип материала создавать надобно, что по гемморности реализации и дальнейшей поддержки для десятка сайтов соизмеримо с установкой модуля domain_robotstxt

Я вот про этот Alias: http://httpd.apache.org/docs/2.2/mod/mod_alias.html#aliasmatch, к друпалу это не имеет отношения. =) Т.е. если чисто случайно нет mod_rewrite, и не получится использовать RewriteRule, можно воспользоваться вышеуказанной директивой в принципе.

1 2345 6

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий