Как вывести в body класс типа продукта?
Добавил строчку
product_types ? 'page-product-types-' ~ product_types|clean_class,
но не заработало.
{%
set body_classes = [
logged_in ? 'user-logged-in',
not root_path ? 'path-frontpage' : 'path-' ~ root_path|clean_class,
node_type ? 'page-node-type-' ~ node_type|clean_class,
db_offline ? 'db-offline',
product_types ? 'page-product-types-' ~ product_types|clean_class,
]
%}
set body_classes = [
logged_in ? 'user-logged-in',
not root_path ? 'path-frontpage' : 'path-' ~ root_path|clean_class,
node_type ? 'page-node-type-' ~ node_type|clean_class,
db_offline ? 'db-offline',
product_types ? 'page-product-types-' ~ product_types|clean_class,
]
%}
Я так понимаю, что нужно что-то дописать в файл .theme в preprocess_html, но что?
Комментарии
Кэш чистил? В переменной точно есть значение?
Чистил. Неоднократно. Не помогло.
Попробуйте drush cr
С drush я незнаком. Пока удаётся обходиться без него. Но я так понимаю, что это альтернативный способ очистки кэша. Не поможет.
А для подобного обязательно програмировывание использовать? Модулями никак?
context
custom_body_class
field_formatter_class
Я бы с удовольствием обошёлся модулями – это что называется мой вариант.
Но!
Context я как-то ставил на семёрку и по моим ощущениям он вряд ли решит эту задачу.
custom_body_class и field_formatter_class примерно одно и тоже. Места появления настроек разные, а функционал похожий – позволяют добавлять классы в ручную через предназначенное для этого поле. Впрочем, может токены помогли бы, но есть сомнения, что токены будут доступны.
А к списку предложенных модулей можно ещё добавить body_roles_classes, но он только классы ролей выводит.
<?php
use Drupal\commerce_product\Entity\ProductInterface;
/**
* Implements hook_preprocess_HOOK() for HTML document templates.
*/
function MODULE_preprocess_html(&$variables) {
// If on an individual node page or node preview page, add the product type to
// the body classes.
if ($product = \Drupal::routeMatch()->getParameter('commerce_product')) {
if ($product instanceof ProductInterface) {
$variables['product_type'] = $product->bundle();
}
}
}
?>
Откуда я это взял?
Большое спасибо. Очень помогло. Заработало!