管理模板中的完整内容,预告片和修剪内容
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了管理模板中的完整内容,预告片和修剪内容相关的知识,希望对你有一定的参考价值。
尽管很长时间处理Drupal,但我觉得Drupal7模板很新。我正在写一个节点 - product.tpl.php,我需要一个完整版本的节点体和要显示的预告片。如果网站所有者没有专门定义预告片我想要修剪身体的版本而不是那个预告片。
每个代码都是这样的:
全身
print render($content['body']);
修剪身体
print "substr(render($content['body']), 0, 100);
预告
$body = field_get_items('node', $node, 'body');
$teaser = field_view_value('node', $node, 'body', $body[0],'teaser');
print render($teaser]);
一切都好,直到这里。
现在的问题是猜测是否有任何预告片。第一次在没有预告片的情况下创建节点,$ teaser =“”所以我检查它
if (strlen(render($teaser])) > 1) { //there's a teaser -> print teaser }
但是,如果有一个预告片并且它已被删除,则表明好像预告片与全身相同。 :-(
所以,简而言之:检查是否有预告片创建的正确方法是什么?
提前谢谢,时尚
顺便说一句:我发誓我已经检查过Stackoveflow.com内外的论坛,我创建的所有内容都是模块,复杂的问题,......
答案
好。
Thanx到cfox612和一点点搜索我得到它的工作。我在这里发布我的解决方案,任何人都可以使用它,以防你需要它。
//retrieve from DB value of teaser
$teaser_db_content = db_query("SELECT body_summary FROM {field_data_body} WHERE entity_id=$node->nid")->fetchField();
//check whether there's a teaser defined (under 3 characters is not considered a valid teaser)
if (strlen($teaser_db_content)>3){ //it is defined
$body = field_get_items('node', $node, 'body');
$teaser = field_view_value('node', $node, 'body', $body[0],'teaser');
$post_teaser = render($teaser);
print $post_teaser; //echo the teaser in html
} else { //teaser is not defined
$post_body = $node->body['und'][0]['value'];
// check whether there's a body defined
if (strlen($post_body)>3) { //body defined...
print substr($post_body, 0, 50)." [...]"; // echo a trimmed version of body
} else { //no body defined
print ("No body content defined yet. Wanna help?");
}
}
显而易见:如果您发现任何不一致或方法使其变得更好,只需添加评论即可。疑问?相同的程序。
以上是关于管理模板中的完整内容,预告片和修剪内容的主要内容,如果未能解决你的问题,请参考以下文章
vscode 用户代码片段 vue初始化模板 Snippet #新加入开头注释 自动生成文件名 开发日期时间等内容
使用vscode,新建.vue文件,tab自动生成vue代码模板