Access to this page has been denied.
You have been blocked because we believe you are using automation tools to browse the website.
This may happen as a result of the following:
- Javascript is disabled or blocked by an extension (ad blockers for example)
- Your browser does not support cookies
If you think you have been blocked by mistake, please contact help@drupal.org with the reference ID below.
Reference ID: #4ddc3849-df46-11ee-a8a5-41fcf254874e
Powered by PerimeterX , Inc.
Access to this page has been denied.
You have been blocked because we believe you are using automation tools to browse the website.
This may happen as a result of the following:
- Javascript is disabled or blocked by an extension (ad blockers for example)
- Your browser does not support cookies
If you think you have been blocked by mistake, please contact help@drupal.org with the reference ID below.
Reference ID: #4df37e0d-df46-11ee-94e2-229ad6e339e6
Powered by PerimeterX , Inc.
Drupal 9,10 + commerce
— Перейдите в раздел раздел «Расширения» в верхней части экрана и нажмите кнопку «Добавить новый модуль».

— Выберите в окне выбора файла архив с модулем

И нажмите продолжить. Произойдет установка модуля.
Установка через файловую систему.
Поместите разархивированный модуль в папку web/modules/contrib/commerce/modules/. Установка произведена.
После установки, нужно перейти в раздел «Расширения», установить галочку в строке « Paykeeper Payment module » и нажать кнопку установить внизу всего списка модулей. Таким образом, вы активируете модуль оплаты.

— Перейдите в раздел торговля и нажмите в меню «Конфигурация»


Далее «Добавить платежный шлюз»

Заполните поле «name», появится возможность редактировать машинное имя платежного шлюза. Нажмите «Редактировать» и введите короткое слово латиницей строчными буквами например «paykeeper» — это слово важно запомнить, оно понадобится для настройки обратного оповещения.

Выберите плагин « Paykeeper offsite payment gateway » и заполните поля для передачи платежей в личный кабинет. Поле « Payment URL » заполняется конкатенацией имени личного кабинета и методом оплаты create . Например https://example. server.paykeeper.ru/create . Поле «Secret word» в наилучшем случае заполняется паролем, сгенерированным в личном кабинете в разделе настройка на вкладке «Получение информации о платежах» при выбранном способе получения уведомления о платежах «POST-оповещения».

Поле « Forced discounts check » оставьте включенным, если пользуетесь скидками.
2. Настройка личного кабинета.
Зайдите в раздел настройка личного кабинета на вкладку «Получение информации о платежах», выберите способ получения уведомления о платежах «POST-оповещения», введите или сгенерируйте секретное слово, оно должно быть одинаковым с «Secret word» в панели администратора сайта. В поле «URL, на который будут отправляться POST-запросы» введите конкатенацию адреса своего сайта и адреса процедуры обратного оповещения https://example.ru/payment/notify/ . Например https://example.ru/payment/notify/paykeeper . Машинное имя шлюза мы вводили при создании нового платежного шлюза.

Перейдите на вкладку « Адреса Перенаправления Клиента » и введите адреса перенаправления при успешной и неуспешной оплате.

Можно установить галочку, для пропуска служебной страницы с результатами оплаты.
Drupal 9 что нового
Drupal 9 — девятая мажорная версия Drupal, релиз которой состоялся 4 июня 2020. Это первый мажорный релиз Drupal, в котором ядро не подверглось серьезным ломающим изменениям и процесс обновления с предыдущей мажорной версии, Drupal 8, производится максимально просто и гладко.
¶Что нового в Drupal 9?
Drupal 9 продолжает начатое в Drupal 8 — ядро будет развиваться постоянно через минорные релизы, будут появляться новые модули и API, старые возможности будут либо улучшаться, либо выводиться из оборота.
Фактически, Drupal 9.0 является точной копией Drupal 8.9, за одним лишь важным исключением — весь код что был помечен @deprecated в Drupal 8, полностью удалён в Drupal 9. Также были обновлены все важные зависимости ядра, такие как Symfony, jQuery, CKEditor, Twig, Guzzle и т.д.
Ввод новых возможностей начнётся только с Drupal 9.1.
¶Значимые изменения в Drupal 9
В этом разделе описаны значимые изменения, произошедшие за время поддержки Drupal 9. Помимо перечисленных ниже, было множество других не менее интересных и полезных изменений. Вы можете ознакомиться с ними на соответствующих страницах минорных релизов:
- Список изменений Drupal 9.0.0
- Список изменений Drupal 9.1.0
- Список изменений Drupal 9.2.0
- Список изменений Drupal 9.3.0
- Список изменений Drupal 9.4.0
¶Разработка новой экспериментальной темы Olivero
Начиная с релиза Drupal 9.1.0 появилась новая экспериментальная тема оформления Olivero.
Данная тема оформления создаётся на замену текущей — Bartik, которая прослужила Drupal не один мажорный релиз.
Olivero создаётся с использованием современных возможностей CSS, современным визуальным оформлением и улучшенной поддержкой A11Y.
¶Рефакторинг Database API
Database API во многих минорных релизах подвергался различным изменениям и улучшениям. Все эти изменения были направлены на улучшение DX.
Наиболее заметные изменения:
- В Drupal 9.1.0 Connection::prepareQuery() и Connection::prepare() объявлены устаревшими и получили замены Connection::prepareStatement() и PDO::prepare() соответственно.
- В Drupal 9.1.0 был добавлен новый класс StatementWrapper , а Drupal\Core\Database\Connection::$statementClass объявлен устаревшим.
- В Drupal 9.2.0 передачу StatementInterface объектов в Connection::query() объявили устаревшей.
- Начиная с Drupal 9.2.0 все идентификаторы в запросах должны оборачиваться в квадратные кавычки ( [] ).
- В Drupal 9.2.0 добавлен новый статический метод Drupal\Core\Database\Log::removeDatabaseEntries() , при помощи которого вы можете очищать обратный стэк вызовов от ненужной информации о БД.
- В Drupal 9.2.0 был представлен новый класс ExceptionHandler , который позволяет обрабатывать исключения связанные с драйверами БД. Ранее для этого использовался внутренний метод Connection::handleQueryException , который в этом изменении объявили устаревшим.
- Начиная с Drupal 9.2.0 необходимо явно указывать необходимость проверки прав доступа к результатам запроса Entity Query.
- В Drupal 9.4.0 добавили новый метод Connection::lastInsertId() , которая возвращает ID последней успешно записанной строки в БД. Ранее для этого использовались костыли!
- Начиная с Drupal 9.4.0 драйвера баз данных, предоставляемых Drupal получили свои одноимённые модули.
- В Drupal 9.4.0 расширения для построения SELECT запросов стали управляться при помощи фабрик.
¶Продолжена замена API функций сервисами
Drupal предоставляет множество API функций, часть из которых тянется из более ранних версий. Некоторые из этих функций получили новую жизнь в виде сервисов, например:
- В Drupal 9.1.0 функция user_password() была заменена сервисом password_generator .
- В Drupal 9.3.0 функции file_create_url() и file_url_transform_relative() заменены новым сервисом file_url_generator .
- В Drupal 9.3.0 были объявлены устаревшими функции drupal_get_path() и drupal_get_filename() .
- В Drupal 9.3.0 была объявлена устаревшей функция file_build_uri() .
- В Drupal 9.3.0 функцию _file_save_upload_single() заменили сервисом file.upload_handler .
- В Drupal 9.3.0 функции file_save_date() , file_copy() и file_move() объявлены устаревшими в пользу сервиса file.repository .
- В Drupal 9.4.0 объявили устаревшей фукнцию module_load_include() .
- В Drupal 9.4.0 объявили устаревшей функцию module_load_install() .
¶Начато постепенное прекращение использования jQuery UI и jQuery
Drupal, наверное, всегда использовал эти библиотеки для своих целей. Начиная с Drupal 9 их постепенно начали выводить из оборота. JavaScript становится более зрелым языком и теперь имеет многие, а то и большинство возможностей из тех, что предоставлял jQuery или jQuery UI. А та часть, что до сих пор не имеет аналогов в нативном JavaScript заменяется более лёгкими и точечными библиотеками.
Конечная цель данных изменений — разгрузить фронтенд сайта и позволить разработчикам иметь больше контроля над тем, какие библиотеки попадают на фронтенд. Ведь даже сейчас, хочет разработчик или нет, вероятность что будет загружен jQuery стермится к 100%. Ведь даже минимизированная версия jQuery весит ~87кб! Учитывая для каких задач используется данная библиотека, это невероятно бесполезный файл.
¶Написана и добавлена в ядро собственная JavaScript библиотека drupal/once
В Drupal активно используется подход в JavaScript, который позволяет контролировать количество регистраций тех или иных событий для элементов. А именно, следить, чтобы одно и то же событие не было зарегистрировано дважды на один элемент. Для этих задач раньше использовалась библиотека jQuery Once.
Начиная с Drupal 9.3.0 добавлена собственная библиотека drupal/once , которая делает ровно тоже самое, только без необходимости в jQuery, что ускоряет её работу и снижает нагрузку на клиента.
Вы можете узнать о ней больше на её личной странице Drupal JavaScript Once API.
¶Бандлы получили поддержку собственных классов
В Drupal 9.3.0 была добавлена очень полезная возможность — теперь бандлам сущности можно указывать собственные классы.
Ранее, сущности имели свои собственные классы, но их бандлы (подтипы) всегда представляли собой общий класс сущности. Теперь каждому конкретному типу можно указать свой собственный класс, который расширяет класс сущности. Это позволяет типизировать аргументы в коде, а также добавлять семантические методы, которые не только упрощают доступ к данным и сокращают код, но и позволяют объявлять их в зависимости от контекста (типа), чтобы каждый раз не вспоминать, поддерживает ли данный бандл это поле или нет.
¶Начата разработка модуля CKEditor 5
Drupal использует редактор CKEditor 4 начиная с Drupal 8. Данная версия уже устарела и требует замены. В связи с этим, начиная с Drupal 9.3.0 в ядро был добавлен новый экспериментальный модуль CKEditor 5 с обновлённым редактором.
¶Компоненты Symfony были обновлены до 5 версии
Drupal активно использует компоненты Symfony начиная с Drupal 8. Drupal 9 начал свою историю с Symfony 4.4. В релизе Drupal 9.3.0 начали частичное обновление компонентов, а в Drupal 9.4.0 обновили все компоненты до версии Symfony 5.4.
Это позволит как Drupal, так и разработчикам, использовать новые возможности, более оптимизированный код и улучшить совместимость со сторонними библиотеками что также используют компоненты Symfony.
¶Мелочь, а приятно
В Drupal 9 были и небольшие изменения, но даже их стоит упомянуть:
- В Drupal 9.1.0 была включена ленивая загрузка для изображений по умолчанию.
- В Drupal 9.1.0 был добавлен новый компонент Front Matter который позволяет парсить метаданные в формате YAML из различных файлов. Данный документ также парсится данными компонентом.
- В Drupal 9.1.0 внесено множество улучшений для того чтобы Drupal стал совместимым с PHP 8.0.
- В Drupal 9.2.0 добавили поддержку для файлов, в расширении которых есть нижнее подчёркивание. Например: example.x_t .
- В Drupal 9.2.0 добавили поддержку конвертации изображений в WebP при помощи стилей изображений.
- В Drupal 9.2.0 добавлено новое событие FileUploadSanitizeNameEvent , при помощи которого можно централизованно очищать названия загружаемых файлов.
- В Drupal 9.2.0 добавили вывод предупреждений о релизах безопасности для администратора сайта, даже если отключен модуль Update. Это поведение также отключаемо, но крайне не рекомендуется!
- Начиная с Drupal 9.3.0 на страницах нод и терминов таксономии больше не добавляются специфичные для Drupal мета-теги, например: delete-form , edit-form и т.д. Они никому не мешали, но и ни кому не были нужны! А ещё создавали нагрузку.
- В Drupal 9.3.0темы оформления и модули получили новые свойства lifecycle и lyfecycle_link .
- В Drupal 9.3.0 добавили поддержку автомонтирования для сервисов.
- В Drupal 9.3.0 права доступа могут объявлять зависимости.
- В Drupal 9.3.0 ресурсы для JSON:API теперь можно программно переименовать.
- В Drupal 9.3.0 разрешения модулей могут быть отредактированы и просмотрены для конкретного модуля или набора модулей, а не всех сразу.
- В Drupal 9.3.0 внесено множество улучшений для того чтобы Drupal стал совместимым с PHP 8.1.
- В Drupal 9.4.0 темам оформления добавили возможность предоставления стартовых тем.
¶Смотрите также
- Drupal 8
- Drupal 10
- Руководство по обновлению Drupal 9 до Drupal 10
- Список изменений Drupal 9.0.0
- Список релизов Drupal
¶Ссылки
- Drupal 9 (англ.), drupal.org
Помогите нам сделать документацию лучше!
Вся документация Druki с отрытым исходным кодом. Нашли ошибку или неточность? Создайте pull request.
По-прежнему нужна помощь?
Не нашли ответа на свой вопрос? Попросите помощи у сообщества!
- Что нового в Drupal 9?
- Значимые изменения в Drupal 9
- Разработка новой экспериментальной темы Olivero
- Рефакторинг Database API
- Продолжена замена API функций сервисами
- Начато постепенное прекращение использования jQuery UI и jQuery
- Написана и добавлена в ядро собственная JavaScript библиотека drupal/once
- Бандлы получили поддержку собственных классов
- Начата разработка модуля CKEditor 5
- Компоненты Symfony были обновлены до 5 версии
- Мелочь, а приятно
Разработано Niklan с любовью на Drupal.
Drupal — зарегистрированная торговая марка Dries Buytaert.
Исходный код сайта предоставляется по лицензии GNU GPL v2 license.
Содержимое сайта предоставляется по лицензии Creative Commons Attribution CC-BY-SA 4.0 license.