Переадресация с http:// на https:// в .htaccess не вызывающая в браузере ошибки "too many redirects"
RewriteEngine On RewriteCond %{ENV:HTTPS} !on RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
info@formatix.ru
formatix.ru
telegram: @formatix
Не получается решить проблему с Друпалом?
Готовы помочь делом и советом. Стоимость часа - 500 руб.
Поделитесь ссылкой:
В блоге разработчика вы найдете фрагменты кода, примеры, lifehacks, позволяющие адаптировать Друпал для различных задач. Вопросы и уточнения в комментариях приветствуются.
Переадресация с http:// на https:// в .htaccess не вызывающая в браузере ошибки "too many redirects"
RewriteEngine On RewriteCond %{ENV:HTTPS} !on RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Что делать?
1. Прописать обратную DNS зону - запись PTR. Обычно это делается в панели хостера, который предоставляет сервер или VPS.
2. Прописать в ДНС запись SPF, вида:
@ TXT v=spf1 ip4:95.167.111.222 ip6:fe00::0000:8a85:3a37:9d52 ~all
Здесь - 95.167.111.222 - это адрес с которого будут отправляться письма.
Если почта сервера обрабатывается с помощью сервиса mail.ru почта для домена, то строка будет такой:
Fancybox - весьма современный и удобный скрипт для показа изображений и всего прочего. Но часто изображение в окне оказывается мелким (например - документ) и его неудобно рассматривать.
Сделаем так, что бы по клику на картинку она увеличивалась в два раза, а по клику на увеличенном изображении - уменьшалась до исходных размеров.
Идея проста: после появления окна fancybox (событие afterShow), навесим обработчик события click на изображение внутри этого окна (img.fancybox-image). В этом обработчике будем менять размеры изображения и двигать fancybox так, что бы он оставался всегда по середине экрана. А для пущей наглядности - поменяем курсор картинки на zoom-in/zoom-out.
Получается так:
Это легко сделать через hook_node_access. Определим в своем модуле функцию:
<?php function module_node_access($node, $op, $account) { if ($op == 'create') { // проверим - какая операция? $type = is_string($node) ? $node : $node->type; if ($type == 'your type') { // наш ли тип? $count = db_select('node', 'n') // определим, сколько материалов уже создал пользователь ->condition('n.uid', $account->uid) ->condition('n.type', $type) ->countQuery() ->execute() ->fetchField(); return $count > 0 ? NODE_ACCESS_DENY : NODE_ACCESS_ALLOW; // разрешим, или запретим создание } } } ?>
Друпал 8 имеет отличную от Друпал 7 архитектуру, поэтому процесс написания собственного модуля существенно отличается от принятого в прошлых версиях Друпал. Однако, не все так страшно. Пусть, название нашего модуля будет formatixsample.
Где разместить файлы модуля? Можно выбрать несколько мест: в каталоге /modules, в каталоге /sites/all/modules, либо, при мультисайтинговой конфигурации - в каталоге /sites/mysite/modules.
Мы добавим папку /modules/formatixsample (для ясности я буду всегда указывать абсолютные пути от корня), а в ней создадим файл описания модуля formatixsample.info.yml. Это файл в формате YAML, содержащий всю информацию о нашем модуле:
name: Пример модуля description: Описание нашего модуля package: Название группы модулей type: module version: 1.0 core: 8.x
Перейдем в раздел "расширить" и в списке обнаружим название нашего модуля:
Опишем системный путь, по которому мы сможем обратиться к нашему модулю. Теперь для этого служит отдельный файл formatixsample.routing.yml, определяющий путь, права доступа, заголовок и контроллер, генерирующий содержимое:
Есть сущность (например, тип материала) с полем типа Field Collection, состоящим из нескольких вложенных полей. Как программно добавить значение к нему?
Для примера, у нас есть сущность: заказ / order, а в ней - поле платежи / field_payments, имеющее неограниченное количество значений. Причем, каждый платеж / field_payments содержит несколько полей: дата / field_payment_date, автор / field_payment_author и т.д.
Сначала загрузим сущность, зная id заказа:
$orders = entity_load('order', array($pid)); $order = $orders[$pid];
Затем создадим еще одну сущность типа field_collection_item:
$collection = entity_create('field_collection_item', array('field_name' => 'field_payments'));
И скажем, что она относится к нашему заказу:
Вообще, это плохая практика - размещать PHP-код в полях представления. Во первых, такой код выполняется медленнее, во вторых - до него трудно добраться, нет проверки синтаксиса в редакторе, а самое главное: отсутствуют информативные сообщения об ошибках.
Если в код поля PHP в представлении закрадется ошибка, то в журнале Друпала вы увидите что-то вроде:
Creating default object from empty value в файле /home/.../public_html/sites/all/modules/views_customfield/includes /views_customfield_handler_field_phpcode.inc(118) : eval()'d code в строке 3.
"В строке 3". И все. А где искать эту строку?
Посмотрим, как интерпретируется код поля PHP.
function eval_phpcode($code, &$static, $data) { ob_start(); print eval('?>'. $code); return ob_get_clean(); }
Никакого логгирования почему-то не предусмотрено. Исправим ..
Предлагаем услуги по размещению и поддержке сайтов, разработанных как в нашем бюро, так в других веб-студиях.
Мы готовы взять на себя все работы по поддержке вашего сайта или электронного магазина и гарантируем его доступность и безопасность.
Выполним профессиональную фотосъемку вашей продукции, офиса, производства, участка или любых других объектов.
Оплатить услуги разработки, модернизации, поддержки и размещения сайтов можно любыми удобными вам способами как в интернете, так и оффлайн. Оформляются все бухгалтерские документы.