取决于页面的动态标题 (DRUPAL 7)
Dynamic title depending on page (DRUPAL 7)
在我切换到 Drupal 之前(以前只是静态的 HTML),我的 header 中有一个 div 标题,它根据用户使用的页面而改变以下代码:
关于页面
<?php
$title = "ABOUT US</span>";
$path = $_SERVER['DOCUMENT_ROOT'];
$path .= "/includes/header.php";
include_once($path); ?>
然而,之所以可行,是因为我使用的是静态 HTML... 这意味着我将每个页面都设置为使用自己的 Index.PHP,位于(对于“关于”页面,例如)public_HTML/about/index.php。因此,我可以通过编辑相应的索引文件来根据自己的喜好编辑 div 中的每个页面...
现在,使用 Drupal.. 而不是像我以前那样拥有这么多 Index.PHP 文件(IMO 是混乱的......),我希望每个页面都使用相同的 page.tpl.php (除了首页,它使用 page--front.tpl.php)。
我能否以某种方式修改上述 PHP 代码以根据用户所在的页面使用 IF 语句显示不同的标题?
例如...(我不知道如何 PHP 编码,所以这只是为了让您的专家了解我想要什么...)
Ifpage=about, $title=关于我们;
Ifpage=contact, $title=联系我们;
这段代码能不能都在同一个page.tpl.php?
非常感谢!
Drupal 7 对每种内容类型都有一个标题字段。你为什么不用那个?
它默认显示,您可以为每个节点更改它。
就是你模板文件中的这段代码。
<?php print render($title_prefix); ?>
<?php if ($title): ?>
<h1 class="title" id="page-title">
<?php print $title; ?>
</h1>
<?php endif; ?>
<?php print render($title_suffix); ?>
$title_prefix(数组):包含由模块填充的附加输出的数组,旨在显示在模板中出现的主标题标签前面。
$title:页面标题,用于实际HTML内容。
$title_suffix(数组):包含由模块填充的附加输出的数组,旨在显示在模板中出现的主标题标签之后。
有关 page.tpl 模板文件中可用的所有变量,请参阅 https://api.drupal.org/api/drupal/modules!system!page.tpl.php/7。
如果您想将一个部分设置为不同于其他部分的样式,您可以为其使用一个额外的字段。
或者如果你需要对值做一些事情(我不建议这样做!!!)。
switch ($title) {
case "About Us":
// Do something with the title
break;
case "Contact Us":
// Do something with the title
break;
case 2:
// Do something with the title
break;
}
这是一个简单的方法:
为内容类型添加一个新字段
称它为标题2
渲染两个字段
使用 css 内联对齐它们并添加样式
这是我的解决方案,因为我无法将 Drupal-based 标题栏放置在基于 non-Drupal 的徽标 DIV..
旁边
我创建了一个名为 .headertitle 的 div 并且 positioned/styled 它是我想要的。
我的 header.php 是一个 PHP 包含文件,每个页面都会调用它,标题标题有 PHP 条件..
<?php if(empty($headertitle)) $headertitle = "ASK REAL QUESTIONS, <br><span class='white'>GET FREE ANSWERS.</span>";
echo $headertitle; ?>
这样,如果没有为 .headertitle 声明文本,它将采用 "ASK REAL QUESTIONS, GET FREE ANSWERS."
的默认形式
...现在,我必须想出一种方法来实际声明 .headertitle 的文本,具体取决于我所在的页面...
我通过使用此文件为每个页面(节点)使用自定义模板来做到这一点。"page--node--nodeid.tpl.php"。
因此,对于我的关于我们页面,我创建了一个名为 "Page--node--7.tpl.php" 的 tpl.php 文件。对于此页面,7 是很容易找到的节点 ID。
然后,我添加了以下 PHP 代码来声明 .headertitle 的文本,特别是在关于我们页面上,看起来像这样...
<?php $headertitle = "ABOUT<span class='white'>.US</span>"; include('includes/header.php'); ?>
大功告成。
我会为每一页都这样做。 :)
在我切换到 Drupal 之前(以前只是静态的 HTML),我的 header 中有一个 div 标题,它根据用户使用的页面而改变以下代码:
关于页面
<?php
$title = "ABOUT US</span>";
$path = $_SERVER['DOCUMENT_ROOT'];
$path .= "/includes/header.php";
include_once($path); ?>
然而,之所以可行,是因为我使用的是静态 HTML... 这意味着我将每个页面都设置为使用自己的 Index.PHP,位于(对于“关于”页面,例如)public_HTML/about/index.php。因此,我可以通过编辑相应的索引文件来根据自己的喜好编辑 div 中的每个页面...
现在,使用 Drupal.. 而不是像我以前那样拥有这么多 Index.PHP 文件(IMO 是混乱的......),我希望每个页面都使用相同的 page.tpl.php (除了首页,它使用 page--front.tpl.php)。
我能否以某种方式修改上述 PHP 代码以根据用户所在的页面使用 IF 语句显示不同的标题?
例如...(我不知道如何 PHP 编码,所以这只是为了让您的专家了解我想要什么...)
Ifpage=about, $title=关于我们; Ifpage=contact, $title=联系我们;
这段代码能不能都在同一个page.tpl.php?
非常感谢!
Drupal 7 对每种内容类型都有一个标题字段。你为什么不用那个?
它默认显示,您可以为每个节点更改它。
就是你模板文件中的这段代码。
<?php print render($title_prefix); ?>
<?php if ($title): ?>
<h1 class="title" id="page-title">
<?php print $title; ?>
</h1>
<?php endif; ?>
<?php print render($title_suffix); ?>
$title_prefix(数组):包含由模块填充的附加输出的数组,旨在显示在模板中出现的主标题标签前面。
$title:页面标题,用于实际HTML内容。
$title_suffix(数组):包含由模块填充的附加输出的数组,旨在显示在模板中出现的主标题标签之后。
有关 page.tpl 模板文件中可用的所有变量,请参阅 https://api.drupal.org/api/drupal/modules!system!page.tpl.php/7。
如果您想将一个部分设置为不同于其他部分的样式,您可以为其使用一个额外的字段。
或者如果你需要对值做一些事情(我不建议这样做!!!)。
switch ($title) {
case "About Us":
// Do something with the title
break;
case "Contact Us":
// Do something with the title
break;
case 2:
// Do something with the title
break;
}
这是一个简单的方法:
为内容类型添加一个新字段
称它为标题2
渲染两个字段
使用 css 内联对齐它们并添加样式
这是我的解决方案,因为我无法将 Drupal-based 标题栏放置在基于 non-Drupal 的徽标 DIV..
旁边我创建了一个名为 .headertitle 的 div 并且 positioned/styled 它是我想要的。
我的 header.php 是一个 PHP 包含文件,每个页面都会调用它,标题标题有 PHP 条件..
<?php if(empty($headertitle)) $headertitle = "ASK REAL QUESTIONS, <br><span class='white'>GET FREE ANSWERS.</span>";
echo $headertitle; ?>
这样,如果没有为 .headertitle 声明文本,它将采用 "ASK REAL QUESTIONS, GET FREE ANSWERS."
的默认形式...现在,我必须想出一种方法来实际声明 .headertitle 的文本,具体取决于我所在的页面...
我通过使用此文件为每个页面(节点)使用自定义模板来做到这一点。"page--node--nodeid.tpl.php"。
因此,对于我的关于我们页面,我创建了一个名为 "Page--node--7.tpl.php" 的 tpl.php 文件。对于此页面,7 是很容易找到的节点 ID。
然后,我添加了以下 PHP 代码来声明 .headertitle 的文本,特别是在关于我们页面上,看起来像这样...
<?php $headertitle = "ABOUT<span class='white'>.US</span>"; include('includes/header.php'); ?>
大功告成。
我会为每一页都这样做。 :)