Создать Drupal 8 одну страницу, которая переопределяет html.html.twig? - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть клиент с работающим сайтом Drupal 8.Они хотят, чтобы один URL сайта отображался сильно отличающимся от остального сайта.Я создал модуль.Мне нужен только один маршрут для переопределения html.html.twig.Я хочу удалить большую часть материала, загружаемого темой сайта.Я в некотором роде могу заставить это работать, но это, кажется, применимо к каждой странице, которая эффективно ломает сайт.Этот url / site / mynewapp будет использовать совершенно другой макет и HTML, чем остальные сотни других страниц.По сути, это статический сайт в существующем экземпляре Drupal 8.Как условно загрузить пользовательские html.html.twig, page.html.twig и node.html.twig только при запросе / site / mynewapp?Это приложение ReactJS, которое должно работать только на одной странице сайта.Я понимаю, что это не идеальная архитектура.Я попросил клиента запустить приложение отдельно на nodejs, но они настаивают, что оно должно быть в их существующем экземпляре Drupal.Приложение React не похоже на остальную часть сайта.У кого-нибудь есть опыт, чтобы сделать что-то подобноеУ меня есть custommodule.routing.yml с определенным маршрутом и метод контроллера, который привязывает к JavaScript JavaScript.Это работает, но, похоже, загружается на каждой странице, что не может произойти.

public function overview()
{
    $build = [];

    $build['#attached']['library'][] = 'mymodule/mylibrary';
    $build['#markup'] = '<div id="root"></div>';

    return $build;
}

и в файле модуля

function mymodule_theme_registry_alter(&$theme_registry)
  {
    $theme_registry['html']['path'] = drupal_get_path('module', 
  'mymodule') . '/templates';
  }

это загружает html.html.twig для каждогостраница на сайте, по сути, ломая его.

Есть предложения?

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Модуль узла монтирования реагирования встроит пустой div для монтирования вашей страницы React на вашем сайте Drupal в области контента.

Если вы действительно хотите полностью отдельное приложение React внутри Drupal, вы можете просто собратьэто в подпапке вашего сайта.Как / myapp и поместите всю сборку туда.

0 голосов
/ 17 февраля 2019

Вам не нужен модуль для переопределения шаблона ветки.Вы просто создаете файлы в папке вашей темы с правильным именем и готовы к работе.

Чтобы переопределить html.html.twig , вам нужно создать что-то вроде html--mynewapp.html.twig
Чтобы переопределить page.html.twig , вам нужно создать что-то вроде page - mynewapp.html.twig
Чтобы переопределить node.html.twig вам нужно создать что-то вроде node - mynewapp.html.twig

Вы очистите кеш и новый шаблон будет загружаться при посещении этих страниц.

...