是否有主题相当于hook_install()? -- 8 领域 drupal 相关 的问题

Is there a theme equivalent of hook_install()?


4
vote

问题

中文

我希望我的主题来控制某些块设置,例如启用系统品牌块的哪个元素。对我来说,在主题中是代码,而不是模块,因为目前我发现访问配置的唯一方法以编程方式使用主题名称。

  /** @var DrupalCoreConfigConfig $config */ $config = Drupal::service('config.factory')->getEditable('block.block.my_theme_branding'); $config->set('settings.use_site_logo', false); $config->save();   

因为这是一个关机配置,我认为只有在安装/激活主题时才发生。它有一个主题函数/钩子的行为如 hook_install 为模块?

英文原文

I want my theme to control certain block settings, like which elements of the system branding block are enabled. To me it makes sense for that to be code in the theme, not a module, because at the moment the only way I've found to access the config programmatically involves using the theme name.

/** @var Drupal\Core\Config\Config $config */ $config = \Drupal::service('config.factory')->getEditable('block.block.my_theme_branding'); $config->set('settings.use_site_logo', false); $config->save(); 

Since this is a one off config change, I think it should only happen when the theme is installed/activated. It there a theme function/hook that behaves like hook_install does for modules?

  

回答列表

3
 
vote
vote
最佳答案
 

您可以提供配置通过Yaml文件作为模块,配置文件或主题安装,通过将它们添加到相应项目中的 config/install 目录中来安装。因此,例如,文件 block.block.my_theme_branding.yml 将为指定的区域安装了品牌块。然后,这将包含默认情况下禁用站点Slogan的设置。看看块.block.bartik_branding.yml 在标准配置文件中作为起点。

如果特定块由另一个模块提供,那么它可能会放在 config/optional 目录中。

 

You may provide configuration via YAML files as part of a module, profile or theme install by adding them to the config/install directory inside the respective project. So, for example, a file block.block.my_theme_branding.yml would install the branding block into the specified region. This would then contain the setting to disable the site slogan by default. Take a look at block.block.bartik_branding.yml in the standard profile as a starting point.

If the specific block is provided by another module, then it should probably be placed in the config/optional directory.

 
 
0
 
vote

这是一个缺少的功能;但是,在IRC中的对话后,这是我们想要实现的功能。它目前在添加(back)hook_install for themes

来自@mradcliffe的解决方案有很多限制,因为除非您是个人资料,否则无法覆盖任何内容。

 

That was a missing feature; however, after a conversation in IRC that is a feature that we want to implemented. Its currently been working at Add (back) hook_install for themes.

The solution from @mradcliffe have a lot limitation, because you cant override a anything unless you are a profile.

 
 

相关问题

0  如何在没有UUID限制的情况下共享D8配置?  ( How to share a d8 configuration without the uuid limitation ) 
如何在没有UUID限制的情况下与另一个网站共享Drupal 8配置(内容类型,自定义/菜单/块等)? 每个站点都有一个唯一的UUID,并拒绝使用另一个网站的配置文件。这是一个很大的问题,不允许用户与世界分享他们的配置。 ...

2  如何将媒体(例如附加音频)集成到节点?  ( How do i integrate media e g attaching audio to nodes ) 
我安装了媒体实体 for drupal 8.我认为它会以某种方式方便添加mp3等,作为媒体在drupal 7中,我可以为音频指定媒体播放器类型文件。 (以及事情很好地工作。)我正在将我的网站更新到Drupal 8,似乎媒体实体模块只用作API。也许我只需要等待一个官方的Drupal 8发布,在我在媒体的杂草中太远之前...

3  如何以编程方式正确删除字段?  ( How to properly delete fields programmatically ) 
我的网站上有两个内容类型,我刚刚使用 $node->delete() 删除所有节点。 对于其中一种内容类型,我注意到节点正文字段未被删除,也不是我为内容类型所做的自定义字段之一。我的其他内容类型的所有字段都被删除了。 所以我研究并找到了 <代码> field_purge_field() 功能。我不确定如何实际使用该...

1  以编程方式添加节点,指定字段列  ( Adding nodes programmatically specifying field columns ) 
我正在使用以下代码创建节点。 $node = Node::create([ // The node entity bundle. 'type' => 'exercise', 'langcode' => 'en', 'created' => $ex->created, 'changed' => ...

0  drupal 8安装只是普通的html [关闭]  ( Drupal 8 installation is just plain html ) 
关闭。这个问题需要更多聚焦。它目前不接受答案。 想要改进这个问题?更新问题,因此它仅拍摄了一个问题,只有编辑此帖。 关闭 5年前。 ...

0  在Drupal 8中为所有视图重写一个字段的明智方式?  ( Sensible way to rewrite a field for all views in drupal 8 ) 
在Drupal 8中似乎必须创建2或3个文件加上文件夹结构,即使最简单的任务也是如此。所以我试图弄清楚如何在没有所有开销的情况下做一个简单的黑客。 我有一个节点类型,我的附加图像。有一个父节点,我要么希望从孩子们显示其中一个图像。我为父级创建了一个图像字段。 如此,我需要做的就是查询数据库,随意抓住一个孩子的图像...

1  如何在添加指引术语时更新表CaConomy_index?  ( How to update table taxonomy index when adding a node referencing a term ) 
我有两个节点类型: Lesson 和 Exercise 。一课包含几项练习,这些练习是儿童。课程有一个类别字段,它是类型分类项的参考字段。通过课程参考字段练习指向课程,我认为是间接地映射到条款的练习。 当我创建课程时,我使用以下代码: $node = Node::create([ // The...

6  如何使用xdebug来淹没 - 可能最近破碎了  ( How to get drush to work with xdebug may have recently broken ) 
我一直在使用xdebug的醉汉。它看起来像是在过去的两周里打破了,可能是由于对核心"疏士" 脚本所做的修改(将" 疏浚"脚本分为查找器,包装器和发射器阶段。)。它现在通过Ubuntu上的"PCNTL_EXEC" 调度,Xdebug从未在此后再次控制。 我已经尝试恢复淹没到以前的提交("8ab7ad9 ... make...

6  如何将配置更改从网站添加到另一个网站?  ( How to add the configuration changes from a website to another website ) 
这就是我想要做的: 我有一个网站a 我做了配置更改并添加其他内容。现在我创建了网站b 。我想从网站a添加配置更改到本网站。 我知道两个网站的 Uuid必须是相同的(如暂存和amp;生产环境)。在"我该如何在不同的网站上导入配置?" 他们解释了如何用 drush cget system.site < /代码>。 问...

1  如何提供用户定义的修订CSS样式?  ( How to provide user defined revisionable css styles ) 
我想为admin提供选项,在特定URL上附加CSS样式(就像可以设置块可见性一样)。 此样式存储在Config实体中,并且是可修改的。由于配置实体不支持修订版,我在"修订" 键下将它们存储在实体本身中,该键是由UUID持有"内容" 和"时间戳" 值键入的数组。 用户只能通过UI创建/编辑实体并将样式键入textare...

1  使用自定义实体验证约束保存节点时出错  ( Error on saving node with custom entity validation constraint ) 
我正在测试如何将自定义约束添加到Drupal 8(节点)实体。 我有一个新的d8站点,内容类型"产品" 和类型编号的字段"field_stock_level" (整数)。 我创建了一个包含以下代码的模块: entity_validation.module: /** * Implements hook_ent...

2  了解$变量preprocess_views_views_view_field()  ( Understanding variables preprocess views view field ) 
根据这个描述 hook_preprocess_views_view_field() , $variables 在其他情况下, $variables['field'] 。 但是,如果我做 print_r($variables['field']) 只是检查它打印整个对象的对象(包括我的用户名和密码!),甚至会导致浏览器...

2  允许匿名用户访问表单  ( Allow anonymous user to access form ) 
我想创建一个与drupal的表单,所有用户可以访问,但每次我尝试访问表单而不登录时,我会收到此错误: Access denied You are not authorized to access this page. 如何允许所有用户访问表单? ...

5  路由参数扫上和路由访问?  ( Route parameter upcasting and route access ) 
原始问题: 我正在尝试做几个(似乎)简单的事情来转换我在Drupal 7中制作的模块到Drupal 8(RC1)。 首先,我将注意到我正在使用drupal 8中的文件实体模块,这可能或可能不稳定/完成。 我想在文件实体(非常喜欢的编辑或存档)上添加一个标签,允许我触发与文件中包含的数据(它是电子表格)相关的进程。 到...

0  修订标签未出现[已关闭]  ( Revision tab not appearing ) 
此问题似乎在帮助中心中定义的范围内涉及Drupal。。 想要改进这个问题?更新问题,所以它是关于drupal答案的主题。 ...

1  Drupal 8 - 图像的URL  ( Drupal 8 url to image ) 
我找不到如何获取图像URL。我有图像/主题/自定义/ mytheme / img目录。我认为必须有一些方法来获得当前主题的路径或类似的方法。 ...

1  不要显示子菜单[关闭]  ( Dont show submenu ) 
关闭。这个问题需要详细信息或清晰度。它目前不接受答案。 想要改进这个问题?添加详细信息并通过编辑此帖的问题。 关闭 4年前。 ...

7  多语言菜单/菜单项设置  ( Multi language menus menu items setup ) 
我可能无法理解Drupal 8和不同的多语言方法完全,但我碰到了各种问题。 我只想要什么,是一个单一菜单,包含来自2种不同语言的链接。 要发生这种情况: I启用了语言模块,并设置了1个额外的语言。安装是在nl中完成的,我添加了fr I启用了内容翻译模块 我检查了'内容'&amp; "菜单链接" 下,使我可以翻...

6  如何导入内容类型的工作?  ( How does importing a content type work ) 
我使用的是用于为视图和其他配置创建YML文件。当我导入我的yml文件时,创建的所有内容是具有标题的内容类型。有没有方法可以使用内容类型导入字段? uuid: 1bd0f08e-cf80-4fc3-8707-7a9d19c404da langcode: en status: true dependencies: ...

3  如何在Drupal 8中创建URL到非托管的公共文件  ( How to create a url to an unmanaged public file in drupal 8 ) 
我正在遇到一个问题,在"公共" 文件目录中创建一个URL到非托管文件(这是针对Drupal 8的file_example)。 以下代码将抛出异常: use DrupalCoreUrl; $stuff = "content for an unmanaged file "; $dest = file_unmanag...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.