Обратите внимание!
Данное решение более не поддерживается!
Все наработки по данному проекту переехали в новый проект Radical Schema
Radical Micro - пакет плагинов для добавления микроданных и микроразметки на сайт.
Из коробки плагин имеет добавлять следующую микроразметку:
- Organization
- Website
- Breadcrumb List
- Article
- NewsArticle
- Product
- Recipe
- Open Graph (OG)
Разметка Schema.org добавляется в формате JSON-LD.
Meta разметка добавляется в тэге <meta>.
Логика работы проста - управляющий плагин собирает данные от плагинов-провайдеров и на основе этих данных встраивает разметку на сайт. Расширить работу плагина можно, добавив новые плагины провайдеры, а также другие поддерживаемые типы микроразметки и микроданных.
- управляющий плагин, который занимается сбором данных от плагинов провайдеров и добавляет разметку на сайт.
- плагин для YOOtheme Pro, содержащий в себе 2 элемента для добавления каждого типа микроданных.
- плагин-провайдер для компонента стандартных материалов Joomla.
- плагин-провайдер для меню
- плагин-провайдер для значений по умолчанию
- плагин-провайдер для автоматической генерации изображений (о нем хотелось бы написать больше, но для этого не хватит места, лучше стоит попробовать)
Плагин может встраивать разметку перед тегом <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 в конечном итоге будет сформирована с новыми данными.
Подводя итого, хочется отметить, что плагин создавался максимально расширяемым и удобным (насколько это возможно для плагина). Поэтому берите молотки и напильники в руки, чтобы помогать развивать систему дальше.
Развлекайтесь ;-)