仅在 joomla 中的所有扩展 css 之后加载自定义 css



我面临着一个我认为许多其他问题的问题,但我无法找到解决方案。

基本上,我想在所有扩展的 css 之后加载一个自定义 css,这样我就可以自定义它的外观,而无需为所有内容设置重要内容。

问题是Joomla在加载扩展文件之前加载css文件,因此我的自定义.css或模板css不起作用。

我试过了

$doc->addStyleSheet($this->baseurl.'/templates/'.$this->template.'/css/custom-style.css');

<jdoc:include type="head" />之后但它显然不起作用。

在joomla文档中,它说所有第三方扩展都应该使用JHtml->addStyleSheet来允许样式覆盖。但是有很多扩展没有这样做。

关于如何在所有扩展名 CSS 之后加载自定义.css或我的模板文件的任何建议?

$doc->addStyleSheet按照

页面加载过程中每次调用该函数的顺序将样式表添加到<jdoc:include type="head" />生成的代码中。

我假设这里的主要问题是您使用的是第三方扩展,因此不能只更新每个扩展使用的样式表,因为修补它们可能会覆盖您的更改。

如果是这样,最好的第一站是查看每个扩展是否为您提供了任何配置选项,或者设计时是否考虑了样式。 一个好的扩展应该真正提供足够的钩子(或者让它足够香草),以便在不使用 !important 的情况下做到这一点。

如果没有,由于样式表是按加载顺序添加

的,因此您还可以创建一个模块,其唯一目的是添加样式表,并按顺序将其显示在所有其他模块下方,以便其样式表最后加载。

另一种(有点黑客)方法是将其添加为自定义标签 - 然后将其添加到头部区域中的其他 js 和 css 下方。

<?php
$stylelink = '<link rel="stylesheet" href="'.$this->baseurl . '/templates/' . $this->template .'/css/custom-style.css" />' ."n";
$document = JFactory::getDocument();
$document->addCustomTag($stylelink);
?>

实际上,我不确定这个最后一个选项是否比原始 html 链接更好,但是 - 它更多的是代码,而不是自定义标签的真正用途。

仅坚持最佳实践可能意味着如果扩展开发人员在设计扩展时没有考虑到这一点,则不会覆盖样式。

我同意理查德·B指出的所有观点。我认为您也很有可能通过增加自定义或模板中选择器的特异性来解决您的问题.css.css

例如,如果您在标题为 nav 的模板上的div 中有一个扩展名,请在 CSS 选择器中包含 .nav。使用 Web 检查器帮助查找站点上您可能可以使用的类

帮助定位和重写扩展样式的其他选项是在模块>高级设置中设置模块类后缀,或使用页面类

最新更新