bsyomov

bsyomov
Рейтинг
31
Регистрация
25.01.2012

location = /config.php {

deny all;

}

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

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

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

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

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

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

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

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

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

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

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

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

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

На хостинге всё было нормально. Но щас я на впс)) и понятно что есть какие-то тонкости.
Данная ошибка чаще всего означает что сервер заблокировал обращение к скрипту, это может быть по следующим причинам:

Ошибка 500, это "внутренняя ошибка сервера". Может возникать по совершенно разным поводам, чаще всего из-за проблем с конфигурацией. Обычно причину можно найти в логе веб сервера.


Если смотреть лог файл обращения к скрипту пишет.
[Tue Aug 28 15:54:41 2012] [error] [client 209.255.247.114] PHP Fatal error: Call to undefined function curl_init() in /var/www/rata.ru/psmt_send.php on line 54, referer: http://rata.ru/pag/8.html

В вашем конкретном случае, это ошибка о отсутствии расширения php-curl. Установите и радуйтесь жизни. Как установить, зависит от дистрибутива.

Можно, но на таких хостингах не дают настраивать nginx по своему вкусу. Поэтому в теории-то можно, на практике нет.

Отнюдь. Drupal очень гибок и позволяет создавать весьма сложные приложения. Есть огромное количество модулей, практически на все вкусы.

Просто бывают ситуации, когда проект очень специфичный, например, какая-нибудь панель управления хостингом, или проект должен работать в распределённой среде, или нагрузки планируются настолько большими, что требуется очень сильно бороться за производительность... И тогда хочешь не хочешь, а велосипед изобретать придётся. =)

Есть много задач, где использование фреймворка и CMF примерно одинаково уместны, при наличии навыков проектирования таких систем, это как раз будет большинство достаточно сложных порталов и.т.п.

Есть типовые задачи, где применение фреймворка будет не оправдано, т.к. процесс разработки на CMF или специализированной под задачу CMS, будет в разы менее затратным.

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

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

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

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

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

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

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

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

Pavel_:

Спасибо, заработало, а в таких дебри ещё не заходил... ))
Но это как бы уже считается вмешательством в движок или не?

Если вы решили переписать код в includes/theme.inc то да, конечно вмешательство, и так не делают.

Если вы почитали о темизации, и перекрыли её у себя в template.php, то это именно то, что надо было сделать.

Есть одно принципиальное отличие фрейморка от CMS|CMF. Для того, чтобы сделать на основе фреймворка специализированную CMS нужно не только овладеть фреймворком, но и хорошенько продумать архитектуру будущего приложения. На практике, на это способны далеко не многие.

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

В случае CMS/CMF есть оверхед, т.к. необходима универсальность. Куда больше моментов продумана уже. Кодом пользуется большое комюнити, находятся и заделываются дырки, предлагается большое количество готовых решений, куда более законченных обычно, в частности и по поводу оптимизации производительности. С другой стороны, иногда приходится писать немало кода, если необходимый функционал сильно своеобразен, и часто реализация его бывает даже сложнее, чем в случае фреймворка, т.к. существенно больше ограничений...

Так что вопрос что лучше использовать это вопрос не только выбора инструмента, но и подготовки. И вопрос на самом деле сложный очень и не однозначный.

чисто теоретически - CCK штука удобная, но тяжёлая.. 100500 node-ов в одной таблице "дёргаются" по делу и без дела

Вот и надо не дёргать без дела. =) На самом деле, 90% проблем с производительностью CCK либо надуманы, либо от неправильной реализации. Например выборке во Views нод, вместо их полей и.т.п. С хранением большого количества данных у Drupal, всё как раз довольно хорошо.

Узкие места тут в другом скорее - например, намного сложнее сделать проект, который будет распределённым, выполняться будет куда больше кода - плата за универсальность и гибкость.

aftamat4ik:
Все, сам требуемое нашел :). Функция называется:
function theme($hook, $variables = array());


Файл - /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 - это и есть итоговый вид страницы сайта.

В том то и дело, что так делать нельзя. Нельзя лезть в код модулей и тем более ядра. Для изменения вывода есть темизация. Когда разберётесь, как она работает в Drupal, тогда поймёте, НАСКОЛЬКО вы хотели сделать неправильно.

Тут всё сделано для того, чтобы не вторгаться в код, поэтому Drupal весьма легко поддерживать. То, что вы делали на Joomla тут делать совершенно не нужно. Нужно понять, что это идеологически совершенно разные CMS, и ваш прошлый опыт и приёмы, тут могут быть более чем неуместны.

Почитайте сначала, как организована темизация в Drupal, и станет понятно, что вам не нужно переопределять или каким-то образом изменять функцию theme().

Для работы с AJAX у Drupal тоже есть соответствующее API (http://api.drupal.org/api/drupal/includes%21ajax.inc/group/ajax/7). Пишите модуль и пользуйтесь, для своих нужд. Только злоупотреблять AJAXом не стоит. Это экономия на спичках. Сама страница, весит очень немного, её передача будет не быстрее, чем AJAX запрос, или быстрее на ничтожно малое время. А картинки, которые обычно и составляют практически весь объём страницы, повторно не грузятся (если у вас всё правильно настроено конечно).

Всего: 315