![]() ![]() ![]()
Какой рейтинг вас больше интересует?
|
Главная /
Каталог блоговCтраница блогера Сайт Ильи Азарова./Записи в блоге |
![]() |
|
Корректная настройка https в Drupal для случая работы за обратным HTTPS-прокси
2011-11-08 01:11:51 (читать в оригинале)Пришлось настраивать Drupal, работающий в следующей конфигурации:
В интернет открыт легковесный https-прокси(nginx), а сам Drupal вертится на сервере apache2 с mod_php. На apache поднят mod_rpaf, все как полагается, однако, сложность такой схемы в том, что соединение с вебсервером Apache2 идет по протоколу HTTP, а не HTTPS. Соответсвенно работающие на сервере скрипты PHP, в нашем случае Drupal, работают так, словно взаимодействие идет по HTTP, что проявляется в некорректных URL на сайте, невозможности авторизоваться и других проблемах.
Изучив. как ядро Drupal выявляет протоколы, я пришел к простому решению, как заставить его корректно работать в такой конфигурации. Достаточно добавить в settings.php строчки:
if(
isset($_SERVER['HTTP_X_FORWARDED_SSL'] )
&& ('on' ==$_SERVER['HTTP_X_FORWARDED_SSL'] )
) {
$_SERVER['HTTPS'] = 'on';
}
Переменная $_SERVER['HTTP_X_FORWARDED_SSL'] - ее вид - зависит от того, какое ПО вы пользуете. После добавления такой проверки в settings.php Drupal начнет исправно работать с HTTPS без установки дополнительных модулей.
- English
Сайт теперь на двух языках
2011-11-05 00:41:07 (читать в оригинале)После анализа модуля i18n было решено его установить и провести эксперимент с переводом части содержимого сайта на английский язык.
Теперь, по мере моих возможностей, каждая новая статья на русском языке, будет сопровождаться на ее переводом на английский. На данный момент есть определенные проблемы "целостности" контента, но я полагаю, они будут решены, а англоязычные пользователи смогут читать статьи сразу на английском здесь.
- English
Модуль DST для Drupal 6: свыше 40 установок за 2 недели. Или почему так много народа начинает все еще на Drupal 6.
2011-10-08 15:02:55 (читать в оригинале)Согласно статистике на drupal.org, за последние 2 недели было порядка 40 инсталляций моего модуля для правильной работы с временными зонами - dst. Модуль был сделан для Drupal 5 и Drupal 6, которые нормально не поддерживали работу с местным временем. В Drupal 7 эта проблема была решена на уровне ядра, и надо признать более красиво, чем я ее решал с моим модулем :).(правда я делал такой патч, чтобы минимально затронуть текущий функционал и ничего не сломать).
Соответсвенно модуля для Drupal 7 не будет. Он там просто не нужен. В ядре все есть.
Вообще, все знают, что Drupal 6 устарел. 7ка вышла в этом году и уже набрала достаточно модулей для нормальной работы. Потому рост статистики модуля для Drupal 6 в свете этого для меня довольно странен.
Но взглянем на проблему шире. Семерка написана с использованием технологий PHP5. Вовсю используются интерфейсы типа Iterator, позволяющие над любым объектом проделать foreach, так как это надо программисту. Ядро не полностью на объектах, оно гибридное. Но сложность написания серьезна выросла. Сам, пока обновлял данный сайт упирался в такие вещи как выбрасывание исключений(Exceptions) при малейших проблемах с БД. И, без знаний PHP5, наверное я врядли бы обновился.
Похоже количество инсталляций Drupal 6 будет только расти :)
А все почему? Большинство PHP разработчиком все еще "остались" там, в начале двухтысячных :), в период с 2000 по 2005, когда в вебе рулило PHP 4.2 несколько лет подряд. И сейчас пытаются писать код исходя из того что и "так прокатит". А вот не прокатит. Самый консервативный фреймворк в плане совместимости наконец-то забил на PHP4 :)
+ для каждого конкретного сайта можно ускорять работу синонимов путей(path alias), например, правильным написанием конфигурационного файла, и это не является задокументированным, как и многие другие возможности ядра Drupal 7.
То есть порог вхождения вырос. Уровень разработчиков - нет.
К чему все я это пишу. У меня набралось достаточно материала на полноценный доклад об объектно-ориентированном программировании касательно ядра Drupal, либо на серию семинаров на эту тему.
Вот в данный момент сижу и думаю, имеет ли смысл проводить закрытые семинары для повышения уровня разработчиков PHP/Drupal?
Drupal. Вывод страницы минуя стандартные шаблоны темы оформления.
2011-10-06 01:53:48 (читать в оригинале)Задача: в Drupal 6 есть модуль, для которого надо написать обработчик меню, выводящий контент таким образом, что загружены все системные CSS и JS, но при этом от между тэгами <body> и </body> находится только контент хандлера меню.
Данная задача нужна, например когда необходимо вывести определенный контент без оформления в iframe или в отдельном окне, но при этом сохранить полную работоспобность Javascript.
Решение оказалось на поверхности.(далее код для drupal 6)
Пусть модуль называется mymod.
Возьмем стандартный page.tpl.php из phpengine от Drupal. Положим в папку модуля под именем empty.page.tpl.php. И приведем к следующему виду:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="<?php print $language->language ?>" xml:lang="<?php print $language->language ?>" dir="<?php print $language->dir ?>">
<head>
<title><?php print $head_title ?></title>
<?php print $head ?>
<?php print $styles ?>
<?php print $scripts ?>
<script type="text/javascript"><?php /* Needed to avoid Flash of Unstyle Content in IE */ ?> </script>
</head>
<body>
<?php print $content; ?>
<?php print $closure ?>
</body>
</html>
Фактически мы оставили в теле документа только вывод переменных $content и $closure.
А дальше, если взглянуть, как Drupal выводит страницу, минуя шаблонизатор, можно понять, что он делает это через template_preprocess(), template_preprocess_page() и theme_render_template() - основной минимум для вывода страницы. Нам остается задействовав функцию theme_render_template() сделать все то же, что делает Drupal и завершить выполнение скрипта.
Вот примерный код такого хандлера меню:
function mymodule_menuhandler() {
drupal_set_title('Заголовок');
$out = 'Какой-то контент, который выводится модулем';
// тут начинается наше колдунство :)
init_theme();
$vars = array('content' => $out);
template_preprocess($vars, 'page');
template_preprocess_page($vars);
$out = theme_render_template(drupal_get_path('module', 'mymodule') . '/empty.page.tpl.php', $vars);
print $out;
// завершаем скрипт
exit();
}
Проблема решена. Плюс такого решения - не надо перекрывать такого рода ситуации в основной теме оформления. Для некоторых административных элементов сайта это может быть просто необходимо(не менять же тему оформления ради 10 страниц модуля, для которых задача требует быть такими в обязательном порядке? :) ).
Довольно интересная статья о команде git - bisect
2011-10-04 00:15:30 (читать в оригинале)Git - мощнейшая система ведения версий исходных кодов, написанная автором ядра Linux, Линусом Торвальдсом.
Одна из разработчиков ядра - Анжела Байрон, известная на drupal.org под ником webchick, описала очень удобный поиск "ошибочного" коммита, который привел к появлению бага в программе с использованием команды git bisect.
Я полагаю, что пример будет полезен тем, кто работает с гитом. Читать здесь.
![BlogRider сегодня BlogRider сегодня](/themes/1/i/menu/th/blogrider_today.png)
![Самый-самый блог Самый-самый блог](/themes/1/i/menu/tt/tough.png)
![Изменения рейтинга Изменения рейтинга](/themes/1/i/menu/th/rating_changes.png)
![]() | ||
+568 |
582 |
Falling_From_The_Sky |
+439 |
551 |
Темы_дня |
+438 |
580 |
Заметки по-новозеландски |
+421 |
563 |
Aleks_Ander |
+421 |
565 |
Дневник |
![]() | ||
-1 |
76 |
Интересное о железной дороге |
-1 |
141 |
Алексей_Костяника |
-4 |
73 |
Foster |
-4 |
127 |
Познайте мир с Хомяком и Пандой! |
-5 |
72 |
Популярные виды туризма |
![Главные темы Главные темы](/themes/1/i/menu/th/main_themes.png)
Загрузка...
![Загрузка... Загрузка...](/themes/1/i/loader/loader.gif)
взяты из открытых общедоступных источников и являются собственностью их авторов.