Processwire将css类添加到页面

时间:2017-03-01 11:53:08

标签: processwire

我有可能在页面中添加一个类名吗? 我无法弄清楚如何实现这样的功能,或者它是否已经存在。

我正在使用Processwire 3.0.42。

4 个答案:

答案 0 :(得分:2)

在您的模板中放置这样的内容:

<body class="<?php echo $page->template->name; ?>">

这将为您的页面正文标记提供一个等于页面模板名称的类。

答案 1 :(得分:1)

您可以用同样的方式添加页面标题。

<body class="<?php echo $page->name; ?>">

不要担心每个页面都要添加一个类。这样做的开销可以忽略不计。

如果您想添加其他类,则需要在模板中添加一个字段并将其附加到上面的代码中。

答案 2 :(得分:0)

与ProcessWire一样,一切都在您的掌控之中。 @ ivangretsky完美答案的替代方案包括 -

只需在模板文件中包含条件。 (如果您需要使用相同的模板将其他类添加到其他页面,则这不能很好地扩展。)

<?php
  $bodyClass = '';
  if($page->id == 1021) $bodyClass = 'my-class';
?>

<body class="<?php echo $bodyClass; ?>">

NB使用$ page-&gt; id优于$ page-&gt; name,例如,因为ID名称不会更改。

您还可以向页面模板定义添加字段。添加一个名为“Body Class”的字段。然后在模板文件中使用该字段的内容。

<body class="<?php echo $page->body-class; ?>">

这将比我的其他建议更好地扩展,并且如果您不希望用户弄乱其值,ProcessWire后端中的选项可以在正常使用期间隐藏或部分隐藏字段。

CSS spec要知道的一个'问题'是CSS标识符,包括类名和ID不能以数字开头,所以你不能只是使用$ page-&gt ; ID

答案 3 :(得分:0)

有很多选择,这取决于你的需求和想象力: - )。

您可以使用页面名称,模板名称,页面ID或组合。

<body class="<?php echo $page->template->name; ?> page-id-<?php echo $page->id; ?>">

// Output
<body class="your-template-name page-id-1234">

这样您就可以定位模板,页面或两者。

或者,如@ivangretsky所述,您可以向页面添加自定义字段。再次,您可以将此方法与模板名称等结合起来。 这取决于您的需求和您想要实现的目标。

注意:

  

使用$ page-&gt; id优于$ page-&gt; name,因为ID名称不会更改。 @DaveP