创建Drupal 8一页覆盖html.html.twig?

问题描述 投票:0回答:2

我有一个Drupal 8运行站点的客户端。他们希望网站的一个网址与网站的其他网站有很大不同。我创建了一个模块。我只需要一条路线来覆盖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
2个回答
2
投票

您不需要模块来覆盖树枝模板。您只需使用正确的名称在主题文件夹中创建文件,即可开始使用。

要覆盖html.html.twig,您必须创建类似html的内容 - mynewapp.html.twig 要覆盖page.html.twig,您必须创建类似页面的内容 - mynewapp.html.twig 要覆盖node.html.twig,您必须创建类似node - mynewapp.html.twig的内容

清除缓存,访问这些页面时将加载新模板。


0
投票

react安装节点模块将嵌入一个空div来将React页面安装在内容区域的Drupal站点中。

如果您真的想在Drupal中使用完全独立的React应用程序,则可以在站点的子文件夹中构建它。喜欢/ myapp并将整个版本放在那里。

© www.soinside.com 2019 - 2024. All rights reserved.