Drupal
Drupal
Drupal (Друпал) — это система управления сайтом (CMS), а также среда для создания вебприложений (CMF).
Посредством этой системы можно строить сайты и вебприложения различного назначения и сложности. Интерфейс пользователя позволяет управлять сайтами на Drupal без знаний HTML, вебвёрстки и языков программирования. Drupal разрабатывается международной командой разработчиков, как программное обеспечение с открытыми исходными текстами, защищенными общественной лицензией GNU. Международный сайт проекта — drupal.org, информацию о Drupal на русском можно получить на drupal.ru
Drupal 8 Новичкам: Как облегчить старт разработки
Drupal 8 Новичкам: Как облегчить старт разработкиСамое главное: разберитесь и установите Drupal через Composer. Лучше это сделать через drupal-project. Время, которое вы потратите на изучения этого процесса, с лихвой окупится в будущем.
- На время разработки переводите вашу систему в режим разработки. Если вы послушались первого совета, делается это одной командой в консоли:
drupal site:mode dev
Обратный переход в продуктивный режим:drupal site:mode prod
"Режим" разработки выключает кэширование на сайте, включает отладку twig,...
Drupal 8: Включение отладки на время разработки
Drupal 8: Включение отладки на время разработкиЕсли по каким-то причинам не удается через drupal консоль перевести сайт в режим разработки, то вручную это можно сделать так.
-
Подправить файл sites/development.services.yml:
parameters:
http.response.debug_cacheability_headers: true
twig.config:
debug: true
auto_reload: true
cache: false
services:
cache.backend.null:
class: Drupal\Core\Cache\NullBackendFactory - Раскоментировать в файле sites/default/settings.php строки:
if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) {
include $app_root . '/' . $site_path . '/settings.local.php';
} -
Копировать файл sites/example.settings.local.php в sites/default/settings.local.php, и раскоментировать строки:
$settings['cache']['bins']['render'] = 'cache.backend.null';
$settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null'; -
Очистить кэш
Drupal, сброс пароля через SQL
Drupal, сброс пароля через SQLДля получения хэша вводим в консоль команду:
php core/scripts/password-hash.sh 'pa$$word'
Получаем на выходе:
password: pa$$word hash: $S$EQZWDlCcWRLDO0cpgfGbcdbJ90lY5EugOgl76CXhF40VncPSEinz
Выполняем SQL-запросы:
UPDATE users_field_data SET pass='$S$EQZWDlCcWRLDO0cpgfGbcdbJ90lY5EugOgl76CXhF40VncPSEinz' WHERE uid = 1;
DELETE FROM cache_entity WHERE cid = 'values:user:1';
Всё, логинимся с новым паролем.
PS Если пользователь был заблокирован после неудачных попыток ввода пароля и вы получаете сообщение - "There have been more than 5 failed login attempts for this account. It is temporarily blocked. Try again later or request a new password." Разблокировать пользователя можно удалив записи из таблицы flood:
DELETE FROM flood
Проблемы Drupal
Проблемы DrupalПроблема: Иногда бывает так, что после переноса сайта на хостинг, не применяются стили оформления темы.
Решение: на странице "Производительность"(/admin/config/development/performance) надо выключить объединение java и css файлов. Потом можно будет включить обратно.
Как сделать поле Model/SKU уникальным для feeds+uc_feeds
Как сделать поле Model/SKU уникальным для feeds+uc_feedsПравим файл uc_feeds/uc_feeds.module, функция uc_feeds_feeds_processor_targets_alter(). Элемент массива $targets['model'] должен выглядеть так: $targets['model'] = array(
'name' => t('UC: Model/SKU'),
'callback' => 'uc_feeds_set_target',
'description' => 'Ubercart:' . t('Model/SKU'),
'optional_unique' => TRUE,
'unique_callbacks' => array('uc_feeds_sku_mapper_unique'),
);
Так же добавляем функцию обратного вызова:function uc_feeds_sku_mapper_unique(FeedsSource $source, $entity_type, $bundle, $target, array $values) {
$nid = db_query("SELECT nid FROM {uc_products} WHERE model = :model", array(':model' => $values[0]))->fetchField();
return $nid;
}
Ошибка SQL при импорте товаров в Ubercart
Ошибка SQL при импорте товаров в UbercartВо время импорта товаров в Ubercart, при помощи модулей feeds+uc_feeds получаем ошибку:
SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect decimal value: '' for column 'sell_price' at row 1
Для решения проблемы, я применил следующий костыль. В файле uc_feeds/uc_feeds.module находим функцию uc_feeds_set_target(). Добавляем в начало функции три строки, которые из массива с одним элементом делают простую переменную.
function uc_feeds_set_target($source, $node, $target, $value) {
if (is_array($value) && sizeof($value)==1) {
$value = $value[0];
}
if (!is_array($value)) {
...
}
}
Небольшое пояснение:
Как видно, функция не работает с переменной $value в случае если она массив. Но самая засада кроется в методе FeedsProcessor->mapToTarget(). Именно из этого метода вызывается uc_feeds_set_target() и в нем содержится следующий код:
...
// All target callbacks expect an array.
if (!is_array($value)) {
$value = array($value);
}
...
ЗЫ Буду рад, если кто предложит более красивое решение, или укажет на моменты которые я не учел.
Модули DRUPAL
Модули DRUPALПодборка моих модулей. Может когда-нибудь соберусь, и размещу их где положено, но пока так.
Может кому пригодится.
Лучшие модули для Drupal
Лучшие модули для DrupalПодборка лучших модулей в своих категориях.
Мультимедиа
Slick
Это и слайдер, и карусель, и галерея одновременно. Может отображать различные виды контента, а не только изображения. Плюсом прекрасно работает на мобильных устройствах с тачскрином.
Демо сайт.
Сравнивал со следующими модулями: BxSlider, Field Slideshow, Galerie, Juicebox, jCarousel, Gallery formatter, FlexSlider и их производными с модулем Views.
Разметка страницы
Field Group
Позволяет группировать поля сущностей в отображениях и формах. На 2019.04.09 для работы с commerce+drupal8 необходимо:
- использовать версию 8.3-dev;
- написать новый модуль задающий хук - hook_field_group_content_element_keys_alter()
Готовый модуль в прицепе.
Display Suite
Задает расположение полей сущности по тому-же принципу как регионы на странице: насколько колонок, заголовок, подвал. Хорошая демка возможностей - https://youtu.be/5awFIQOMNKE
Twig Tweak
Добавляет много полезных функции и фильтров, которые можно использовать в шаблонах. Например можно вывести в любом месте блок, представление и даже отдельное поле любого узла. Мне он сильно помог, когда надо было объединить несколько блоков в один. Некоторые примеры использования доступны по ссылке на странице модуля.
Прицепы
Вложения | Размер |
---|---|
commerce_fieldgroup.zip | 884 байта |
Модуль снятия материала с публикации после заданной даты
Модуль снятия материала с публикации после заданной датыОчень простой модуль для Drupal 8. Позволяет снимать с публикации материалы, у которых имеется поле с машинным именем - "field_datebefore". Тип поля должен быть "Дата и время".
Снятие с публикации производится во время выполнения задач CRON, при условии, что текущее время больше заданного в поле field_datebefore.
Прицепы
Вложения | Размер |
---|---|
Модуль для Drupal 8 | 1.37 КБ |
Текстовые фильтры для вставки в материалы карт 2Gis и Яндекс
Текстовые фильтры для вставки в материалы карт 2Gis и ЯндексМаленький модуль, реализующий пару текстовых фильтров для Drupal8.
Подключаете фильтр к формату ввода. Перемещаете ближе к концу и все.
Фильтр для вставки объектов Яндекс карт. Формат:
[_yamap параметры-из-url-после-?_]
Фильтр для вставки объектов 2Gis карт. Формат:
[_2gis {параметры конструктора DGWidgetLoader()}_]
Прицепы
Вложения | Размер |
---|---|
Модуль для Drupal 8 | 4.24 КБ |
Модуль для Drupal 7 | 1.39 КБ |