如何在我自己的主题中覆盖管理主题? -- 8 领域 和 theming 领域 drupal 相关 的问题

How do I override the admin theme in my own theme?


9
vote

问题

中文

我创建了自己的drupal 8主题:

mytheme.info.yml:

  name: My Theme description: 'Drupal 8 Theme' type: theme base theme: bartik core: '8.x'   

mytheme.libraries.yml

  global-styling:   version: 1.x   css:     theme:       css/layout.css: {}       css/style.css: {}       css/colors.css: {}       css/print.css: { media: print }   

我使用"七" 作为管理主题。

当我编辑页面(/ node / x /编辑)时,使用七个主题。

现在我必须添加一些CSS编辑表单。 我怎样才能做到这一点? style.css仅加载到前端页面上。编辑页面使用七个主题,我的主题CSS被忽略。

如何在Drupal 8中将一些CSS添加到Admin页面或编辑表单?

英文原文

I created my own Drupal 8 theme:

mytheme.info.yml:

name: My Theme description: 'Drupal 8 Theme' type: theme base theme: bartik core: '8.x' 

mytheme.libraries.yml

global-styling:   version: 1.x   css:     theme:       css/layout.css: {}       css/style.css: {}       css/colors.css: {}       css/print.css: { media: print } 

I am using "Seven" as admin theme.

When I edit a page (/node/x/edit) Seven theme is used.

Now I have to add some CSS the the edit form. How can I do this? style.css is only loaded on front end pages. Edit pages use seven theme and my theme CSS is ignored.

How can I add some CSS to admin pages or edit forms in Drupal 8?

     

回答列表

18
 
vote

您可以从模块挂钩添加管理员CSS。用模块名称替换XXX。

1将CSS放在CSS / extra.admin.css

2通过创建xxx.libraries.yml

来声明库
  extra.admin:   css:     theme:       css/extra.admin.css: {}   

3创建一个加载库的钩子。

  /**  * Implements hook_page_attachments().  */ function XXX_page_attachments(array &$attachments) {   $theme = Drupal::theme()->getActiveTheme()->getName();   if ($theme == 'seven') {     $attachments['#attached']['library'][] = 'XXX/extra.admin';   } }   
 

You can add admin CSS from a module hook. Replace XXX with the module name.

1 Put your CSS in css/extra.admin.css

2 Declare a library by creating XXX.libraries.yml

extra.admin:   css:     theme:       css/extra.admin.css: {} 

3 Create a hook to load the library.

/**  * Implements hook_page_attachments().  */ function XXX_page_attachments(array &$attachments) {   $theme = \Drupal::theme()->getActiveTheme()->getName();   if ($theme == 'seven') {     $attachments['#attached']['library'][] = 'XXX/extra.admin';   } } 
 
 
16
 
vote

您无法从另一个主题中控制一个主题。甚至如果一些智能开发人员可以找到喧嚣的方式来做到这一点:请不要。相信我,你不想要它。 关注的分离在编程中很重要。基本上它意味着你的系统的不同运动部件(即,您的主题)应该处理自己的任务,而不会干扰其他部分的任务(即您的管理主题)。

为了实现您的目标,最干净的方式是创建一个新的主题,七个的次象(所以它继承了大约七个的一切)并将您的自定义CSS添加到混合中。现在,您可以选择那个主题作为管理主题而不是七个。
 

You cannot control one theme from within another theme. And even if some smart developer could find a hackish way to do it: please don't. Trust me, you don't want it. The concept of separation of concerns is important in programming. Basically it means that the different moving parts (ie. your theme) of your system should take care of their own task, without interfering with the tasks of other parts (ie your admin theme).

To achieve your goal, the cleanest way is to create a new theme, make it a subtheme of Seven (so it inherits everything you like about Seven) and add your custom CSS into the mix. Now you can select that theme as your admin theme instead of Seven.

 
 
       
       
5
 
vote

如果您为七个创建一个子组,并且使用它作为管理主题,则可以在seven_subtheme.info.yml文件中添加您自己的CSS覆盖,而不会陷入核心主题,或混淆主题职责。亚主e需要只有info.yml文件和css,并将继承其他一切。

  • 创建一个亚文章
  • 主题基础(例如为您的CSS添加CSS主题)

从它的声音中,您主要涉及改变WYSIWYG编辑器(CKEDITOTER)使用的CSS,因此您可能希望查看添加 99887663 到您的Info.yml文件。请注意,如此问题,所解释的,所以请确实可以获得 ckeditor css从中添加主题,因为wysiwyg编辑器默认应该使用非管理主题CSS(请记住在添加后清除缓存)。

  • d8 how-to - 自定义ckeditor样式
 

If you create a subtheme for Seven, and use that as your admin theme, you can add your own css overrides in the seven_subtheme.info.yml file, without messing with the core theme, or confusing theme responsibilities. The subtheme need only have the info.yml file and the css, and will inherit everything else.

  • Creating a subtheme
  • Theming fundamentals (eg adding css to your theme)

From the sounds of it though, you are mainly concerned with altering the css used by the wysiwyg editor (ckeditor), so you might instead want to look at adding ckeditor_stylesheets to your info.yml file. Note that, as explained in this issue, the ckeditor css can indeed be added from your theme, as the wysiwyg editor should use the non-admin theme css by default (remember to clear caches after adding this).

  • D8 how-to - custom ckeditor styles
 
 
 
 
5
 
vote

您正在寻找的模块现在被称为资产注射器。有了它,您将能够通过UI添加CSS作为@whatwatt。

 

The module you're looking for is now called Asset Injector. With it you'll be able to add CSS through the UI as @Whatwatt mentioned.

 
 
3
 
vote

安装 css注入器模块(目前只有drupal 8的工作开发版本)。

然后转到CSS注射器的管理页面( / admin / config / development / css-incletor )。创建一个新的CSS规则。例如,要更改现场背景颜色:
  .node-form .field--name-title input {     background-color: red; }   

选择在主题上应用此规则(或使用的任何管理主题)。

保存并享受!

 

Install CSS Injector module (currently there is only a working development version for Drupal 8).

Then go to the administration page of CSS Injector (/admin/config/development/css-injector). Create a new CSS rule. For example, to change a field background color:

.node-form .field--name-title input {     background-color: red; } 

Choose to apply this rule on Seven theme (or any admin theme in use).

Save and enjoy!

 
 
   
   
1
 
vote

使用任何管理主题,我使用adams答案并将挂钩更改为。

  $config = Drupal::config('system.theme');  $theme = Drupal::theme()->getActiveTheme()->getName();  if ($theme == $config->get('admin')) {    $attachments['#attached']['library'][] = 'XXXX/extra.admin';  }   
 

To work with any admin theme I used AdamS answer and changed the hook to.

$config = \Drupal::config('system.theme');  $theme = \Drupal::theme()->getActiveTheme()->getName();  if ($theme == $config->get('admin')) {    $attachments['#attached']['library'][] = 'XXXX/extra.admin';  } 
 
 
1
 
vote

为什么不创建一个块调用CSS并将其插入管理页面的标题?

@import URL("/ themes / xyz / css / admin_overrides.css" )

 

Why not create a block calling the css and insert it into the header of your admin pages?

@import url("/themes/XYZ/css/admin_overrides.css")

 
 
1
 
vote

您可以从模块挂钩添加管理员CSS。用模块名称替换XXX。

1将CSS放在CSS / extra.admin.css

2通过创建xxx.libraries.yml

来声明库
  extra.admin:   css:   theme:   css/extra.admin.css: {}   

3创建一个加载库的钩子。

/ **
*实现hook_page_attachments()。
* /

  function XXX_page_attachments(array &$attachments) {   $config = Drupal::config('system.theme');   $theme = Drupal::theme()->getActiveTheme()->getName();     if ($theme == $config->get('admin')) {        $attachments['#attached']['library'][] = 'XXXX/extra.admin';     }  }   
 

You can add admin CSS from a module hook. Replace XXX with the module name.

1 Put your CSS in css/extra.admin.css

2 Declare a library by creating XXX.libraries.yml

extra.admin:   css:   theme:   css/extra.admin.css: {} 

3 Create a hook to load the library.

/**
* Implements hook_page_attachments().
*/

function XXX_page_attachments(array &$attachments) {   $config = \Drupal::config('system.theme');   $theme = \Drupal::theme()->getActiveTheme()->getName();     if ($theme == $config->get('admin')) {        $attachments['#attached']['library'][] = 'XXXX/extra.admin';     }  } 
 
 
0
 
vote

我会为前后办公室和后台创建一个单独的子主题

 

i would create a separate child theme for both front and back office

 
 
   
   

相关问题

3  如何删除网站标志?  ( How can i remove the site logo ) 
我想从我的网站删除徽标。 我在禁用您的耳机标志Drupal 8主题。我的问题是说明说明在主题设置页面的切换部分中取消选择 logo 。我只获得四个选项:用户图片在post ,,,的用户验证状态,评论和快捷方式图标< / em>。 我在两个站点中检查过。一个人有vanilla bartik主题,另一个有一个bartik...

1  ECK实体参考字段未显示自定义字段[已关闭]  ( Eck entity reference field not displaying custom fields ) 
此问题似乎在帮助中心中定义的范围内涉及Drupal。 想要改进这个问题?更新问题,所以它是关于drupal答案的主题。 ...

3  如何使用视图显示来自无限图像字段的随机图像?  ( How to show a random image from unlimited image field using views ) 
有一个名为"ImageNode" 的内容类型。此内容类型包含标题,正文和一个图像字段(可以上传/附加无限图像)。 现在,创建了从Imagenode的恰好一个节点:连接/上载20张图像。 问题: 如何创建一个视图块,该视图块从类型ImageNode中将其附加到这个节点的这些图像中显示一个随机图像? 我可以用字段创建一个...

2  如何在点击次点击播放字段?  ( How can i show a field on click ) 
在node.html.twig中,我想在我点击它时显示一个字段,就像其中的字段值加载器(单击显示字段)模块,但此模块没有拒绝8的发布。 如何这样做? ...

1  如何使用ajax加载用户字段值  ( How to load a user field value using ajax ) 
我想在node.html.twig中显示我的用户电话号码,我希望机器人垃圾邮件发送者无法访问。换句话说,电话号码在初始页面加载中不应显示在页面中。 当用户点击a show 链接/按钮时,电话号码应该显示。 如何做到这一点? ...

0  如何以编程方式添加分组?  ( How do i add grouping programmatically ) 
我已添加一个自定义字段到视图,并希望将结果显示为此字段分组的网格。如何在我的代码中设置"分组字段NR.1" 选项?我尝试了 hook_views_pre_build() 使用 $view->addHandler ,但是m不能使它工作。我猜这个问题在于 $option 数组和 $type addHandler 方法。...

1  如何实现节点层次结构?  ( How do i implement a node hierarchy ) 
这可能是一个微不足道的问题,但我无法找到一个清晰的答案如何在drupal 8中执行此操作。 如何在这样的层次结构中组织节点? Node - child - child - - child - child Node - child 我知道节点层次结构和几个其他模块,似乎提供此功能,但我没有找到任何D8的东西...

0  文件迁移失败  ( Files migration failed ) 
我正在尝试将Drupal 7站点迁移到Drupal 8.其他迁移过程良好工作,但只有文件迁移失败。 我在站点/默认/文件/中有文件/。 这是我的migrate_plus.migration.upgrade_d7_file.yml uuid: c6ddfa39-c76a-4457-ba30-8db364387f...

4  模态API未显示Ajax响应  ( Modal api not displaying ajax response ) 
我正在尝试使用Drupal 8模态API在模态窗口中输出链接 - 使用"简单链接" 方法这里。 点击我的链接时,我得到一个小动画旋转器,我可以看到通过我的浏览器检查器通过AJAX返回的响应。但是,没有莫代尔出现?控制台输出没有错误。 我正在使用自定义主题 - 是有一些标记我必须放在主题中,充当模态的容器? ...

1  如何以默认表单以外的方式编程方式呈现形式?  ( How do i programmatically render a form other than the default form ) 
在预处理功能中,我们可以使用此代码呈现默认表单。 $default_form = Drupal::config('contact.settings')->get('default_form'); $entity = Drupal::entityManager()->getStorage('contact_form...

1  面向服务(无头)的方法  ( Service oriented headless approach ) 
我们现在一直在管理一个基于Drupal 6的内容丰富的网站近8年。现在,客户正计划从Drupal 6移动并寻求不同的可能性。他们想要的是面向服务的方法,以便该网站可以为最终点提供服务,如任何第三方或移动应用程序。可以使用任何可用的JS框架(Aggular等)构建UI。 在思考这一点时,我们将使用Drupal 8作为底...

1  节点ID未出现  ( Node id is not appearing ) 
我正在努力创建基于drupal 8中的nid创建视图。我找不到节点ID或列出的NID - 我看到实体ID。我正在尝试设置一个上下文过滤器,因此只有某些节点字段(节点类型b)将显示在节点类型b的关系字段与节点类型A的节点别名匹配时显示。 (我正在看 https://www.drupal.org/node/184100...

2  匿名用户缓存问题  ( Anonymous user cache issue ) 
我们正在遇到影响匿名用户的缓存问题。 我们在块中有一种形式,当用户填写表单时,它们就可以下载PDF。我们隐藏在页面上的块,我们不希望出现此PDF下载表单。理想情况下,如果没有PDF为特定页面可用,则隐藏块,但无论实际页面如何,都会缓存并显示块。这只是匿名用户的问题。登录用户没有出现在错误页面上看似缓存的PDF下载块的...

3  如何在模块中编辑节点内容类型的“标题”字段标签?  ( How can i edit the title field label of a node content type within a module ) 
我想在Drupal 8:中这样做 我需要在自定义内容类型 上更改标题字段的标签,而无需使用管理面板 。 我知道这是可以通过管理员菜单,但我觉得我应该能够在安装时完全设置模块。内容类型的配置文件中是否有一个标志,我可以添加以覆盖默认值? 这是我的 node.type.employee.yml 文件 lang...

0  使用带有内联属性的库将JS连接到模块  ( Attach js to the module using libraries with inline property ) 
我有一个模块,其中我创建了一个libraries.yml文件,并将其附加到模块: $var[$delta] = array( '#theme' => 'example_theme', '#attached' => array( 'library' => array( "example_...

3  如何在D8中使用视图暴露过滤器?  ( How to use views exposed filters in d8 ) 
我的视图如在D6中使用暴露的弗尔字段如下,我如何在D8中重新创建它? 此处 99887664 和 to date 将被选为,并且结果将相应 日期。在这里,日期字段是暴露过滤器。 view页面: 和view 如何使用D8中的视图重新创建这样的形式? 对于D8中的相同目的,我只有这个选项:任何帮助都得到了...

1  以编目地块块  ( Block visibily condition programatically ) 
我想在模块中显示在模块中实现的块,当 $_SESSION['Group_id'] 设置。 如何实现这一目标? ...

50  如何获取网站的基本URL  ( How to get the base url of a site ) 
我的网站是在 http://drupal8.local/ 。如何获得 drupal8.local 部分URL? Url::fromRoute('<'current'>') 或 base_path() 返回URL的路径;例如,对于,它们返回' /a/b/c/d/e/f' 当我只需要得到 'drupal8.local...

1  如何在保存节点后更改上传的文件名?  ( How to change uploaded file name after save node ) 
你好,谢谢你看我的问题。 在drupal 7上我使用此钩子 hook_file_presave()用于更改文件名。 function mymodule_file_presave($file) { $parts = pathinfo($file->filename); $file->filename = $...

2  解析休息JSON重播  ( Parse rest json replay ) 
我使用 REST export 显示创建视图,结果用 Json ,序列化。 在我的formBuild方法中我想解析JSON并将其转换为数组并在"选择" 选项中使用它并使用它 $host = Drupal::request()->getHost(); $response = Drupal::http...




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


Licensed under cc by-sa 3.0 with attribution required.