管理模板中的完整内容,预告片和修剪内容

问题描述 投票:1回答:1

尽管很长时间处理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内外的论坛,我创建的所有内容都是模块,复杂的问题,......

drupal-7 drupal-theming
1个回答
0
投票

好。

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?"); 
      }                         
}

显而易见:如果您发现任何不一致或方法使其变得更好,只需添加评论即可。疑问?相同的程序。

© www.soinside.com 2019 - 2024. All rights reserved.