这里的第一次海报,我是一个不熟悉php的设计师,我有一个小问题,我似乎无法解决。我正在使用zen上的子主题在drupal 7中创建一个站点。 顺便说一句,这是一个很棒的CMS,即使人们说它真的是一个开发人员CMS。我可以毫不费力地使用视图,规则,展示套件等来完成我需要的工作。所以非常感谢所有开发人员制作这么好的CMS。但对于这个看似简单的问题......没有任何模块可以帮助我(我认为)而且我有点卡住了。
所以这就是:我想在我的所有页面的标题旁边添加一个副标题。
所以我做的是在内容类型基本页面(机器名:field_sub_title)中添加一个自定义字段,这是一个简单的文本字段。
我在template.php中取消注释以下行
function mytheme_preprocess_page(&$variables, $hook) {
$variables['sub_title'] = t('field_sub_title');
}
现在我的问题是如何将自定义字段的内容加载到该变量中? 我知道我需要改变第二部分,但我不知道我需要改变它。
将变量显示到page.tpl.php是我所知道的,所以我只需要第一部分的帮助。
{编辑} 好的,我发现了如何做到这一点:)
我在错误的地方寻找解决方案。我不需要在template.php文件中更改任何内容。
只需将这段代码添加到我的page.tpl.php中:
<?php
print $node->field_sub_title['und'][0]['value'];
?>
所以我在这里张贴这个为其他Drupal新手挣扎的....
答案 0 :(得分:0)
您的解决方案现在可能有效,但可能有更多的Drupal-y方式来处理这样的问题。如果您还没有发现任何问题,可能会发现以下一个或多个问题:
向内容类型添加字段时,只要显示该内容类型中的内容,该字段就会自动显示。您应该能够为您的页面,事件或您需要的任何其他内容添加子标题字段,并将其自动显示在标记中。
您可以“管理内容类型的显示”以拖放要显示的字段的顺序。您可以通过使用Display Suite之类的模块来进一步增加每个内容类型的格式或布局。
如果您认为这不够好并且字幕的标记必须与页面标题处于同一级别(这是罕见的),至少添加一个if语句以使您的代码检查以查看是否变量在尝试打印之前存在。我还为代码可读性添加了一个新变量和注释。
<?php
$subtitle = $node->field_sub_title['und'][0]['value'];
if($subtitle){
print $subtitle;
}
?>
答案 1 :(得分:0)
考虑使用field_get_items或field_view_value,或者至少使用LANGUAGE_NONE常量而不是'und' 请参阅https://api.drupal.org/api/drupal/modules%21field%21field.module/function/field_get_items/7和https://api.drupal.org/api/drupal/modules!field!field.module/function/field_view_value/7
这样可以减少您创建的潜在安全漏洞的数量。