在Drupal 7节点中呈现或打印图像.TPL? -- 7 领域 和 theming 领域 和 media 领域 drupal 相关 的问题

render or print image in a drupal 7 node.tpl?


18
vote

问题

中文

我正在尝试用tpl和当我试图打印图像时的节点,我无法找到像d6中的图像路径..我必须呼叫正确输出图像..我的意思是主题('') )?

  Array (     [und] => Array         (             [0] => Array                 (                     [fid] => 13                     [alt] =>                      [title] =>                      [width] => 416                     [height] => 335                     [uid] => 1                     [filename] => Capture2.PNG                     [uri] => public://Capture2.PNG                     [filemime] => image/png                     [filesize] => 215377                     [status] => 1                     [timestamp] => 1346837738                     [rdf_mapping] => Array                         (                         )                  )          )  )   
英文原文

I am trying to theme a node with tpl and when i tried to print image , I cant find image path like in d6.. which function i have to call to properly output image .. I mean something like theme('')?

Array (     [und] => Array         (             [0] => Array                 (                     [fid] => 13                     [alt] =>                      [title] =>                      [width] => 416                     [height] => 335                     [uid] => 1                     [filename] => Capture2.PNG                     [uri] => public://Capture2.PNG                     [filemime] => image/png                     [filesize] => 215377                     [status] => 1                     [timestamp] => 1346837738                     [rdf_mapping] => Array                         (                         )                  )          )  ) 
        

回答列表

36
 
vote
vote
最佳答案
 
  <?php print render($content['field_image']); ?>   

如果要更改图像显示(尺寸,链接等),请在"节点类型设置" 中的"管理显示" 选项卡中设置它们。

您还可以执行类似的ImageCache预设:

  <?php print theme('image_style', array('path' => $node->field_image[LANGUAGE_NONE][0]['uri'], 'style_name' => [STYLE NAME])); ?>   

但这不是推荐的方式!

如果要从URI构建URL,

  <img src="<?php print file_create_url($node->field_image[LANGUAGE_NONE][0]['uri']); ?>" />   
 
<?php print render($content['field_image']); ?> 

If you want to change how the image is displayed (dimensions, link, etc), set them in Manage Display tab in the node type settings.

You can also do an imagecache preset like this:

<?php print theme('image_style', array('path' => $node->field_image[LANGUAGE_NONE][0]['uri'], 'style_name' => [STYLE NAME])); ?> 

But that's not the recommended way!

if you want to build URL from URI,

<img src="<?php print file_create_url($node->field_image[LANGUAGE_NONE][0]['uri']); ?>" /> 
 
 
     
     
3
 
vote

对于使用 file_entity 模块(可能与 media 模块),您可能想知道如何以编程方式呈现文件/图像:

  $image = (object) $node->field_image[ LANGUAGE_NONE ][0]; $image_entity = file_view($image, "summary"); echo drupal_render($image_entity);   

其中"field_image" 是您的字段名称,"摘要" 是您的视图模式。

 

For those using the file_entity module (perhaps with the media module), you may be wondering how to programmatically render files/images:

$image = (object) $node->field_image[ LANGUAGE_NONE ][0]; $image_entity = file_view($image, "summary"); echo drupal_render($image_entity); 

Where "field_image" is your field name, and "summary" is your view mode.

 
 
   
   
1
 
vote

如果您只想使用在Manage Display中为该图像设置的图像样式设置图像: 只是输入 <?php print_render($content['field_image']) ?>

如果要显示使用任何其他图像样式的图像,则会假设:'sales_album'然后键入:

  list($albumImage) = field_get_items('node', $album, 'uc_product_image');  $albumImageUrl = file_create_url($albumImage['uri']);  $style_array = array('path' => $albumImage['uri'], 'style_name' => 'sales_album');  $render_album_image = theme('image_style', $style_array);  print $render_album_image;   
 

If you want to simply render the image with the image style set for that image in manage display: Just type <?php print_render($content['field_image']) ?>

If you want to display image with any other image style you have SUPPOSE : 'sales_album' then type:

list($albumImage) = field_get_items('node', $album, 'uc_product_image');  $albumImageUrl = file_create_url($albumImage['uri']);  $style_array = array('path' => $albumImage['uri'], 'style_name' => 'sales_album');  $render_album_image = theme('image_style', $style_array);  print $render_album_image; 
 
 
1
 
vote
  $img_url = $node->field_name['und'][$i]['uri']; print image_style_url("style_name", $img_url);   

$i 如果您有多个图像要显示。您可以使用for循环,如:

  for($i=0;$i < $imageCount; $i++) { /*the above code*/ }   

$imageCount 基本上被声明为循环,如

  <?php print theme('image_style', array('path' => $node->field_image[LANGUAGE_NONE][0]['uri'], 'style_name' => [STYLE NAME])); ?> 0  

希望这有帮助!

 
$img_url = $node->field_name['und'][$i]['uri']; print image_style_url("style_name", $img_url); 

$i is in case you have multiple images to display. You can use a for loop like:

for($i=0;$i < $imageCount; $i++) { /*the above code*/ } 

and $imageCount is basically declared above for loop as

$images = array();<br> $imageCount= count($node->field_image['und']); 

Hope this helps!

 
 
1
 
vote

使用字段模块,我发现这更好:

在页面 - yourcontenttype.tpl.php:

  <?php print theme('image_style', array('path' => $node->field_image[LANGUAGE_NONE][0]['uri'], 'style_name' => [STYLE NAME])); ?> 1  

使用field_view_field()提供额外的优点,可以设置显示设置的数组:

  <?php print theme('image_style', array('path' => $node->field_image[LANGUAGE_NONE][0]['uri'], 'style_name' => [STYLE NAME])); ?> 2  

https:// api .drupal.org / api / drupal / modules%21field%21field.module / function / field_view_field / 7.x

 

When using the field module, I found this was better:

in page--yourcontenttype.tpl.php:

<?php   $this_field_image = field_view_field('node',$node,'field_image');   print render($this_field_image);?> ?> 

using field_view_field() provides additional advantages whereby one can set an array of display settings:

<?php   $hide_labels = array('label'=>'hidden');   $this_field_image = field_view_field('node',$node,'field_image', $hide_labels);   print render($this_field_image);?> ?> 

https://api.drupal.org/api/drupal/modules%21field%21field.module/function/field_view_field/7.x

 
 

相关问题

2  如何在视图中显示应用过滤器?  ( How to show applied filters in a view ) 
我已经定义了一些上下文过滤器到视图,我需要显示一个像"应用过滤器:filter_name1:xyz,filter_name2:ykx" 的字符串。 这是在Views中进行最干净的方式3? ...

4  drupal自动unlink()孤儿文件吗?  ( Does drupal automatically unlink orphaned files ) 
Drupal 7有一种方法可以自动删除不再链接到实体的图像,或者他们需要手动解码吗? 例如,Drupal将如何从节点中解除以下文件: $nid = 7; //A node containing an image field. $node = node_load($nid...

2  使用hook_form_base_form_id_alter更改所有WebForm的表单  ( Alter all webforms form with hook form base form id alter ) 
是什么基础 form_id 对于 webform 在 hook_form_BASE_FORM_ID_alter() ?中使用的表单 我的网站将有很多webforms,我正在寻找改变这一大量表格的正确方法。 ...

3  定义自定义jQuery事件以在Ajax表单中使用  ( Define custom jquery event to use in ajax form ) 
如何在事件中创建自定义jQuery事件: $form['submitted']['subject']['#ajax'] = array( 'callback' => 'suggest_ajax_callback', 'effect' => 'fade', 'event' => 'change', );...

1  将Drupal 6视频字段升级到Drupal 7的最佳选择  ( Best option to upgrade drupal 6 video field to drupal 7 ) 
我正在尝试将Drupal 6站点更新到Drupal 7. 我正在尝试将一个视频cck字段移动到drupal 7.如果我试图移动到一个视频字段,我收到一条消息告诉我没有迁移的方法。 如何升级视频从6.5.2到drupal 7.2.7? ...

4  更改日期类型的“提交”?  ( Change the submitted by date type ) 
默认情况下,在Drupal 7中,"提交" 日期类型的"提交" 设置为介质。我希望使用不同类型呈现的"提交" 日期。我该怎么做? ...

5  如何将休息作为客户?  ( How do i consume rest as a client ) 
我需要在节点上导入来自第三方休息服务器的信息,并将该数据映射到引用节点的实体。在节点中将有一个字段,用户可以输入在REST呼叫的URL中传递的ID。 RETER CALL将返回需要映射到对节点引用的新实体的XML对象。 这是怎么做的?是否有Drupal 7模块的示例,这是这样的? ...

2  使用XML或CSV的字段更新现有节点  ( Update existing nodes with fields from xml or csv ) 
有2种Greate模块用于导入节点源供源和馈送导入。有没有办法更新从XML或CSV文件导入的现有节点的字段? 例如,有来自另一个网站的XML源,其中包含产品(ID + Price)和文件,具有相同产品的附加数据(ID +描述)。如何将两个源导入Drupal?中的相同节点 ...

4  字符串覆盖模块中的上下文列是什么?  ( What is the context column for in string overrides module ) 
使用Drupal 7我有弦覆盖模块,并且有一个名为"上下文" 的Coulmn。我想知道这是什么? 我在想,也许我可以输入像'用户/ '等类似的东西,并且字符串替换只会在'用户/ '页面上? ...

0  用户名和电子邮件列表  ( List of user names and emails ) 
我有一个名为"秘书" 的角色,我希望能够使用用户名和电子邮件列表访问"查看" 角色。什么是最简单的方法? 我知道如何让只有秘书可以访问该页面,并且我安装了Maily模块。但是我还没有那么好。任何想法? ...

1  按日期字段自动引用用户到节点  ( Automatically reference user to node by date field ) 
我完全被困在这种情况下,找不到任何解决方案,请帮忙! 我有内容配置文件日期字段"出生日期" (Y-M-D)和节点"星座" ,具有多个值日期字段(M-D)。当新用户注册他的出生日期时,我需要自动引用具有相同日期的星座节点。在这种情况下并不重要。 例如: 我有"星座" 节点:(标题 - 日期) 星座A - 01.23...

2  在保存节点之前将一些Charachter更改为所有字段  ( Change some charachter in all field before saving node ) 
我想在保存节点中的每个字段上完成动作(更改一些charachter)。 我知道指定的字段可以使用 hook_node_presave ,但我希望在所有内容类型(接近300字段和40个内容类型)中的所有字段上执行此操作,其中OUT指定一个逐个。 有hook_filed_presave的drupal api或类似物的东西...

0  如何将Drupal字段的值添加到包装员的类中  ( How to add the value of a drupal field to the class of a wrapper div ) 
在客户端上工作Drupal 7站点,我的内容类型被推广到首页。内容类型具有列表字段,我想使用该字段的值将类添加到填充到首页的节点预告片上的包装器div。例如,HTML输出将是如此: <div class="field_value"> content </div> 我宁愿不必使用视图或nodequeue来执行...

12  Drupal的附着行为:对所有新加载的内容作出反应?  ( Drupals attach behaviours react on all newly loaded content ) 
我有两个不同的模块,这些模块在很多方面都在一起工作。他们一起工作的一件事是通过AJAX模块加载内容,并且模块B需要将事件侦听器附加到加载的内容。 但是,似乎在模块a通过ajax加载内容时,只有 drupal.behaviours.a 的"附加" 函数被调用,而不是"附加" 功能 drupal.behaviours.b...

20  如何使用搜索API稳健地工作的分类学同义词?  ( How to get taxonomy synonyms working robustly with search api ) 
标记同义词是许多站点中的流行,重要的功能(例如,在stackexchange上使用),以及用于成为Drupal 6的核心分类模块的一部分,在被删除支持使用Field API 的" 滚动您自己的"定制同义词系统。 当同义词可靠地工作时,它们在搜索中非常有用;例如,为了确保搜索"America" 查找内容标记的"USA"...

2  为用户提供相同角色的权限  ( Give permissions to user of the same role ) 
我在网站上工作,我要设置节点权限(编辑),以便用户可以编辑用户拥有的具有相同角色的节点。 如果我有角色"redactor" ,我可以编辑用户拥有的任何节点,该节点是角色"重新加工程序" 。 是否有一个模块这是这样做的? 或我要写一个自定义模块? ...

2  可以验证的用户发布自己的内容并查看自己的内容吗?  ( Can authenticaded users publish own content and see only own content ) 
除了具有许多有趣功能的模块外,允许经过身份验证的用户发布内容的最佳方法(基于自定义节点类型),但只允许仅由管理员(特定角色)或同一个用户吗?此类内容在发布时,仅对发布它的角色类型(管理员)和用户的用户可见。 ...

0  获取视图过滤器的值  ( Get the views filters value ) 
我正在构建一个具有SQL查询的PHP字段的视图。 我想知道我是否可以在我的SELECT语句中获取日期过滤器值才能使用它? ...

0  如何使用drupal.behaviors组组群体resement?  ( How to group li element via using drupal behaviors ) 
一个新手问题。 如何选择一系列li,以便我可以将它们移动到新元素内? 例如: <ul> <li>test</li> <li>test</li> <li>test</li> <li>test</li> <li>test</li> <li>test</li> <li>test</li> ...

19  重置模块的hook_update_n状态  ( Reseting the hook update n status of a module ) 
我正在扩展我以前写的模块,它需要我在 hook_update_N 中实现的一些模式更改。 我已经将模块的版本从 7.x-1.0 更新为 7.x-1.1 并实现了 foo_update_7100 ,它工作正常。 问题是我在 foo_update_7100 中犯了一个错误,现在我修复了它我不能重新运行7100更新。我需要...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.