Radical Micro - пакет плагинов для добавления микроданных и микроразметки на сайт.
Из коробки плагин имеет добавлять следующую микроразметку:
Разметка Schema.org добавляется в формате JSON-LD
.
Meta разметка добавляется в тэге <meta>
.
Логика работы проста - управляющий плагин собирает данные от плагинов-провайдеров и на основе этих данных встраивает разметку на сайт. Расширить работу плагина можно, добавив новые плагины провайдеры, а также другие поддерживаемые типы микроразметки и микроданных.
Плагин может встраивать разметку перед тегом <body>
или перед тегом <head>
в зависимости от настроек.
Также плагин содержит настройку, которая позволяет не добавлять сгенерированную разметку на сайт, если в теле страницы уже присутствует разметка соответствующего типа.
Плагин RadicalMicro можно расширять своими плагинами. Тип расширяющего плагина radicalmicro
. В нем можно подключать свои типы для коллекций Schema.org и Meta, чтобы они подгружались в любых других местах (например, в плагине материалов), а также передавать свои данные из компонентов.
Коллекции в плагине RadicalMicro - классы, которые обрабатывают переданные им данные и формируют необходимые массивы для разметок. Каждый из них имеет всего 2 метода execute
и getConfig
, а также переменная $uid
- уникальная для каждого типа коллекции. Эти файлы могут лежать в любой отдельной папке Вашего плагина, но их нужно разделить по типу - meta
(микроразметка страницы), schema
(schema.org контента страницы) и schema_extra
(дополнительная разметка schema.org).
Добавление коллекций Schema.org и Meta ($path
- абcолютный путь до папки, где лежат необходимые коллекции) необходимо делать в методе onRadicalMicroRegisterTypes
:
use Joomla\Plugin\System\RadicalMicro\Helper\PathHelper;
PathHelper::getInstance()->register($path, 'schema');
PathHelper::getInstance()->register($path, 'schema_extra');
PathHelper::getInstance()->register($path, 'meta');
Если коллекции добавить таким образом, они будут подгружены во все места, где предоставляется их выбор, например, в плагине Стандартных материалов или плагине Yootheme Pro.
Добавление своих данных в существующие коллекции необходимо делать в методе onRadicalmicroProvider:
use Joomla\Plugin\System\RadicalMicro\Tree\SchemaHelper;
use Joomla\Plugin\System\RadicalMicro\Tree\OGHelper;
$schemaData = TypesHelper::execute('schema', 'schema_collection_name', ['name' => 'John'], $priority);
SchemaHelper::getInstance()->addChild('root', 'collection_name', ['name' => 'John'], $priority);
$ogData = TypesHelper::execute('meta', 'meta_collection_name', ['name' => 'John'], $priority);
OGHelper::getInstance()->addChild('root', 'meta_collection_name', ['name' => 'John'], $priority);
Здесь $priopity
- это приоритет переданных данных. Об этом чуть ниже.
Пример простого расширяющего плагина для RadicalMicro можно посмотреть здесь.
Плагин позволяет переопределить данные любого типа любой коллекции, которые ему передали, в любом месте шаблона с помощью системы приоритетов. Для этого нам пригодятся упомянутый выше $uid
- уникальный идентификатор для каждой коллекции (существующие индентификаторы можно посмотреть в файлах плагина /plugins/system/radicalmicro/src/Type/Collection/..
).
Все данные плагинов-провайдеров передаются с приоритетом 0.5
, данные от плагина-провайдера Меню передаются с приоритетом 0.9
(поэтому он перезаписывает данные любого плагина). Поэтому передав плагину данные с приоритетом выше 0.9
можно переписать любые данные.
Например, если в любом месте шаблона или вывода любого компонента прописать следующее:
use Joomla\Plugin\System\RadicalMicro\Helper\Tree\OGHelper;
$data = [
'uid' => 'radicalmicro.meta.twitter',
'title' => 'Новый заголовок',
'description' => 'Новое описание',
'image' => 'Новое изображение',
'site' => 'Новая ссылка на сайт'
];
$ogData = TypesHelper::execute('meta', 'twitter', $data, 1);
OGHelper::getInstance()->addChild('root', $ogData);
То вся разметка Twitter в конечном итоге будет сформирована с новыми данными.
Подводя итого, хочется отметить, что плагин создавался максимально расширяемым и удобным (насколько это возможно для плагина). Поэтому берите молотки и напильники в руки, чтобы помогать развивать систему дальше.
Развлекайтесь ;-)