Vreau să forțez ca tot conținutul să fie creat folosind tema principală a site-ului meu. Vreau să fac asta pentru că folosesc un renderer în MYMODULE_node_presave()
ca aceasta:
funcția MYMODULE_node_presave(NodeInterface $nod) {
$renderer = \Drupal::service('renderer');
$content_type = $node->getType();
if ($content_type == 'pagina') {
$viewmode_render = $node->get('field_text_main_to_render')
->view('rendered_output');
$processed_display = $renderer->renderPlain($viewmode_render);
$nod->set('field_text_main_display', "$processed_display");
$node->field_text_main_display->format = 'procesat';
}
Site-ul meu folosește Bartik ca temă principală și Seven ca temă de administrare.
Sub Setări aspect (/admin/appearance), am verificat preferința Utilizați tema de administrare atunci când editați sau creați conținut. Acest lucru asigură că nodurile sunt redate în Bartik la crearea în UI.
Cu toate acestea, când resavez nodurile pe /admin/conținut
, nodurile sunt re-salvate cu Seven, în loc de Bartik. Așa că am adăugat un TemaNegociator
:
/**
* Selectați tema corectă pentru diferite rute.
*/
clasa ThemeNegotiator implementează ThemeNegotiatorInterface {
/**
* {@inheritDoc}
*/
se aplică funcția publică (RouteMatchInterface $route_match) {
returnează $this->negotiateRoute($route_match) ? ADEVARAT FALS;
}
/**
* {@inheritDoc}
*/
funcția publică determineActiveTheme(RouteMatchInterface $route_match) {
return $this->negotiateRoute($route_match) ?: NULL;
}
/**
* Selectați tema pentru cazuri speciale.
*
* @param \Drupal\Core\Routing\RouteMatchInterface $route_match
* Ruta potrivită în prezent.
*
* @return bool|șir
* Numele temei de utilizat (șir) sau fals (bool).
*/
funcție privată negotiateRoute(RouteMatchInterface $route_match) {
$route_name = $route_match->getRouteName();
// Pagina de conținut de administrator trebuie să folosească tema de randare a nodului.
// De ce: acțiunea „Salvare conținut” va folosi tema acestei pagini.
dacă ($nume_rută === 'system.admin_content') {
returnează „bartik”;
}
else {
returnează FALSE;
}
}
}
Acum, când rulez un nod în bloc resave on /admin/conținut
, nodurile sunt redate corect cu Bartik.
Apoi, am instalat Furaje modul. Acum, când import noduri prin CSV folosind Feeds, acestea sunt redate folosind Seven, nu Bartik. Vreau să forțez ca aceste noduri să fie redate folosind Bartik, dar nu știu cum să fac asta. (De exemplu, dacă a existat o modalitate de a utiliza negotiateRoute
în TemaNegociator
, ar fi bine, dar nu știu cum să configurez asta.) Aveți idei?