【发布时间】:2019-02-15 01:33:36
【问题描述】:
我有一个运行 Drupal 8 站点的客户。他们希望站点的一个 URL 呈现与站点的其余部分截然不同的内容。我创建了一个模块。我只需要一条路线来覆盖 html.html.twig。我想去掉网站主题加载的大部分内容。我有点能够让它工作,但它似乎适用于有效破坏网站的每个页面。这个 url /site/mynewapp 将使用与其他数百个页面完全不同的布局和 html。基本上,这是现有 Drupal 8 实例中的静态站点。如何仅在请求 /site/mynewapp 时有条件地加载自定义 html.html.twig、page.html.twig 和 node.html.twig?这是一个 ReactJS 应用程序,基本上只能在站点的单个页面上运行。我意识到这不是理想的架构。我已经要求客户在 nodejs 上单独运行该应用程序,但他们坚持认为它必须在他们现有的 Drupal 实例中。 React 应用程序看起来与网站的其他部分完全不同。有没有人有做这样的事情的经验。我有 custommodule.routing.yml 定义了路由和一个绑定在 javascript lib 上的控制器方法。这可行,但它似乎加载到不可能发生的每个页面上。
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,实际上破坏了它。
这里有什么建议吗?
【问题讨论】:
标签: php twig drupal-modules drupal-8