【问题标题】:Drupal 6 - node attached image pathDrupal 6 - 节点附加图像路径
【发布时间】:2015-01-08 11:58:23
【问题描述】:

Drupal 6

我在node.tpl.php 模板文件中使用<?php print $node->content['image_attach']['#value'] ?> 来检索图像并获取链接到其节点的图像。

如何只获取图片路径?

编辑:没有相关的 CCK 字段。它是图像附加模块。请看http://imgur.com/YzyUGZU

【问题讨论】:

  • 嗨,Dee,欢迎来到 SO。 image_attach是哪个CCK字段类型?这是file upload 字段还是image field?通常,在模板中,您应该能够通过字段的机器名称(在这种假想情况下为field_with_image)加载图像字段路径:$field_with_image[0]['filepath']
  • 我在内容类型中找不到相关的 CCK 字段,我附上了创建内容页面中该字段的屏幕截图。 imgur.com/YzyUGZU
  • 这个来自image Attach模块,没有CCK字段。

标签: php image path drupal-6


【解决方案1】:

如果我从您的 cmets 中理解正确,您可以通过 Drupal 6 的 Image 模块的 Image Attach 子模块将图像附加到节点。

此子模块的工作方式是,当您将图像附加到节点时,它会首先为该图像创建一个新节点,并将该新节点附加到您的原始节点。类似于 Drupal 7 和 8 中“现代”实体引用的工作方式。

您可以通过转到admin/content/node 概览来确认附加图像会创建一个新节点,并在列表中看到一个image 类型的新节点。

检索该节点信息的最简单方法是从当前node 对象的信息中获取它:

$paths = $node->image_attach[0]->images

这将检索到图像的各种版本的一组文件路径。例如:

$original_path = $node->image_attach[0]->images['_original']

将链接到您的原始、未更改的图像,而:

$thumbnail_path = $node->image_attach[0]->images['thumbnail']

将链接到其缩略图版本(如果存在)。

您可能知道,Image Attach 子模块允许您将多个图像添加到您的节点。在我的示例中,我使用[0] 盲目地拍摄了第一张图片。如果您有多个图像,您当然应该遍历 image_attach 数组中的各种条目。

如果您希望检索附加到原始节点的每个图像节点的更多信息,您还可以加载实际节点本身并使用它:

$nid = $node->image_attach[0]->nid;
$image_node = node_load($nid);

在这里您完全加载了引用的节点并拥有其所有信息。

然而,后一种情况会导致不必要的开销,因为在完全加载节点时没有额外的信息存在。完整参考已由原始 node 对象内的 Image Attach 子模块提供。只要知道 Image Attach 实际上会在水下创建额外的图像节点,您可以将其视为这样。

【讨论】:

  • 非常感谢您在评论中付出的努力。这真的很有帮助和赞赏。我也想出了这个来检索图像路径。 $image = $node->content["image_attach"]["#value"]; preg_match('/(?
  • 不客气。批评您自己找到的解决方案的一点:您现在正在使用regex 来解析路径。虽然regex 本身看起来像是魔法,但它是黑暗面的魔法。常说:“一个使用regex解决问题的程序员,现在有两个问题。”。例如,在您的情况下,您将无法捕获图像的不同版本。或者,如果底层 API 发生更改,您的 regex 可能不再正确匹配。如果有明确的解决方案(在这种情况下通过 API),总是更喜欢使用 regex(它们应该是最后的、绝望的手段)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多