首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建覆盖html.html.twig的Drupal8 one off页面?

创建覆盖html.html.twig的Drupal8 one off页面?
EN

Stack Overflow用户
提问于 2019-02-15 09:33:37
回答 2查看 1.1K关注 0票数 0

我有一个运行Drupal8的客户端。他们想要一个网址的网站,以呈现与网站的其余部分非常不同。我已经创建了一个模块。我只需要一条路由来覆盖html.html.twig。我想剥离大部分的东西,网站的主题是加载。我在某种程度上能够让它工作,但它似乎适用于每个页面,有效地打破了网站。这个url /site/mynewapp将使用与其他数百个页面完全不同的布局和html。基本上,这是现有Drupal8实例中的一个静态站点。当请求/ html.html.twig /mynewapp时,如何有条件地加载自定义站点、page.html.twig和node.html.twig?这是一个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;
}

在模块文件中

代码语言:javascript
复制
function mymodule_theme_registry_alter(&$theme_registry)
  {
    $theme_registry['html']['path'] = drupal_get_path('module', 
  'mymodule') . '/templates';
  }

这是为站点中的每个页面加载html.html.twig,实质上破坏了它。

这里有什么建议吗?

EN

回答 2

Stack Overflow用户

发布于 2019-02-17 22:00:43

您不需要使用模块来覆盖twig模板。您只需在您的主题文件夹中创建具有正确名称的文件,就可以开始了。

要覆盖html.html.twig,您必须创建类似于html--mynewapp.html.twig的内容

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

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

您可以通过清除缓存,当您访问这些页面时,新模板将会加载。

票数 2
EN

Stack Overflow用户

发布于 2019-02-20 08:48:58

react挂载节点模块将嵌入一个空的div,以便在Drupal站点的内容区域中挂载React页面。

如果你真的想在Drupal中创建一个完全独立的React应用程序,你只需要在站点的子文件夹中构建它即可。像/myapp一样,并把整个构建放在那里。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54701549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档