仅当图像附加具有图像时,才能使字段可见

时间:2010-08-04 21:07:14

标签: drupal conditional cck

是否可以使用CCK向图像附加模块表单添加条件,除非我选择了用于内容节点的图像,否则某些字段不可见?

目前,我的内容类型定义中的图像附加字段没有任何可用的操作,其中configure和remove可用于所有其他字段。

1 个答案:

答案 0 :(得分:1)

这在您的主题中非常简单,例如node-foo.tpl.php为content-type foo,有一个字段“video”

<?php if(!empty($field_video[0]['view'])): ?>
  <div class="block video">
     <?php print $field_video[0]['view'] ?>
  </div>
     <?php print $field_some_other[0]['view'] ?>
     <?php print $field_the_other_one[0]['view'] ?>
<?php endif; ?>

关于风格和最佳实践的一些注释:

我更喜欢模板中的if / endif,其他人更喜欢if(){}。技术上差别不大,我想其他;在HTML中更具可读性。

从技术上讲,简单地打印一个值是不正确的,但是应该使用drupal_render()。我个人仍然喜欢印刷,因为它的透明和简洁。但是,Drupal_render()会记录它“渲染”的内容并允许你在最后使用drupal_render($ node)来渲染所有未渲染的字段;如果您决定稍后添加字段非常有用,而不必每次都更改整个模板。 Drupal_render在tpl.php中不可用,但是在预处理中:如同说的那样,透明度要低得多,而且稍微复杂一些。

不要!永远!打印$ field_foo [0] ['value'],始终是['view']部分:第一个是未转义的,可能(将!)包含XSS注入等。

奇怪的嵌套数组($ field_foo [0] ['value'])是Drupal中多字段选项的结果。更好的方法是始终迭代每个字段,而不是仅仅渲染硬编码的第一个([0])项。但是,出于可读性,简单性和透明性的原因,我更喜欢在模板中对索引进行硬编码。其他人(理所当然地)对此表示不同意。