在我的某些页面上添加自定义CSS样式


16

我想向某些页面添加自定义CSS样式,以使其具有独特的样式,并覆盖默认的模板样式。

如何在Joomla中实现这一目标?

Answers:


15

有几种方法可以将自定义CSS代码添加到特定页面。这里有两个选择:

Alt。1-页面类别
使用页面类别。在菜单项编辑器的“页面显示”选项卡下,有一个名为“页面类别”的字段。根据模板的配置方式,这会将一个类添加到您的<body>标签(或<div class="YOURCLASS">...</div>您的内容周围)。

在此处输入图片说明

然后,只需使用您指定的类在模板的CSS文件中创建一个新规则。

例如,添加mycustomclass到菜单项中的“页面类”字段,并将其放入CSS文件中:

.mycustomclass p {font-color:red;} // Make text red on this particular page

Alt。2-自定义CSS模块
为此可以使用几个模块。一个示例是Custom CSS,该模块允许您添加任何CSS代码并将其发布到要设置样式的页面。

一个类似的选项是Custom HTML Advanced,该模块可让您向页面添加HTML,JavaScript 和CSS。该代码可以自动添加到<head>标签中。

Alt 3-加载其他CSS样式表
另一种选择是检查模板index.php文件中的当前菜单项ID ,并在需要时加载另一个CSS样式表:

<?php 
   $currentMenuId = JSite::getMenu()->getActive()->id ;
   if ($currentMenuId == "14") {
       echo '<link rel="stylesheet" type="text/css" href="mystyle.css">';
   }
?>

我使用第一个替代方法(使用页面类),但是您知道在编辑器中应用这些样式的方法吗?例如,根据标题所属的类别,标题不具有相同的字体,如何根据显示的页面将字体应用于编辑器内部?
web-tiki

9

我最喜欢的方法之一是为body元素创建动态类。

所以:

<?php
  $app    = JFactory::getApplication();
  $menu   = $app->getMenu();
  $active = $menu->getActive();
  $class  = $active->alias . " pageid-" . $active->id;
?>
<body class="<?php echo $class; ?>">

以上代码将产生的一些示例是:

主页:

<body class="home pageid-13">

关于我们页面:

<body class="about-us pageid-15">

现在,您可以使用上述类在每页上创建自定义的特定样式。


我喜欢这个解决方案,它非常有用,并且易于实现。+1
johanpw

4

这是做同一件事的另一种方法。

超过文档类型:

<?php
  $app = JFactory::getApplication();
  $menu = $app->getMenu()->getActive();
  $pageclass = '';

  if (is_object($menu))
    $pageclass = $menu->params->get('pageclass_sfx');
?>

进入您的身体类别所在的索引:

<body id="<?php echo $pageclass ? htmlspecialchars($pageclass) : 'default'; ?>">

现在,您添加到菜单项的页面类中的所有内容都会显示在正文ID中。任何没有类的菜单项都将自动成为body id =“ default”。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.