【发布时间】:2010-08-04 15:53:33
【问题描述】:
我在我的 Blocks 内容中添加了一些 html 代码并启用了完整的 HTML 过滤器。
我为我的图片使用了相对路径,例如“sites/all/themes/zen/zen/image.png”
我想这是不正确的,因为我需要根据我在主页或“节点/ID”页面中更改我的路径。
我想我不能在块内使用 PHP,因此我不能使用 $base_url...如何仅使用 html 添加图像路径?
谢谢
【问题讨论】:
我在我的 Blocks 内容中添加了一些 html 代码并启用了完整的 HTML 过滤器。
我为我的图片使用了相对路径,例如“sites/all/themes/zen/zen/image.png”
我想这是不正确的,因为我需要根据我在主页或“节点/ID”页面中更改我的路径。
我想我不能在块内使用 PHP,因此我不能使用 $base_url...如何仅使用 html 添加图像路径?
谢谢
【问题讨论】:
前面的答案提供了部分解决方案,但这里有一个更全面的独家新闻:
如果您的网站位于 example.com(即它是“根”网站),那么正如其他人所建议的那样,在您的相对路径中添加正斜杠将解决问题:
<img src="/sites/all/themes/zen/zen/image.png">
但是,如果您的网站位于 example.com/my-drupal-site,那么您需要这样编写:
<img src="/my-drupal-site/sites/all/themes/zen/zen/image.png">
如果可以使用 PHP 来确定合适的路径,那就更好了。如果您从主题中调用图像,您可以使用 Drupal 函数drupal_get_path 来获取路径,如下所示:
$img_path = drupal_get_path('theme', 'zen') . '/zen/image.png';
然后您可能真的是 Drupaly 并使用 theme_image 函数为图像生成 HTML:
$img = theme('image', $img_path, 'My Image - Alt Text', 'My Image - Title Text');
$img 现在保存<img> 标记及其src、alt 和title 属性的HTML。有关详细信息,请参阅 drupal_get_path 和 theme_image 的 API 文档。
正如 jeffreymb 所指出的,您最简单的选择是结合使用 WYSIWYG 编辑器和称为 IMCE 的内置文件处理模块来为您掩盖所有这些细节。 如果您无法访问“PHP 代码”输入格式,这是最好的解决方案。
所以,步骤:
See this post 了解有关该设置过程的更多详细信息,并确保阅读 WYSIWYG 模块在其配置页面上显示的文档。
一旦您安装了 IMCE 并与您的 WYSIWYG 集成,当您单击 WYSIWYG 工具栏中的“图像”按钮时,您的正常对话框应该会出现,但会出现一个新的小图标来打开 IMCE 文件浏览器。此文件浏览器允许您浏览 files 文件夹中的图像或上传新文件。它还支持少量图像处理,并在您选择图像后自动生成必要的 HTML。
【讨论】:
我建议在这种情况下使用Pathologic module。它是一个过滤器,您可以将其添加到输入格式中,以使用您网站的基本 URL 将类似的相对 URL 转换为正确的 URL。此外,如果您的 RSS 内容中有图像,因为重新发布内容的网站(如提要聚合器等)具有指向完整 URL 的链接,这将非常有用。
【讨论】:
我使用 CKeditor 和 IMCE 模块在我的网站上执行此操作。
它非常用户友好,设置起来并不难。
【讨论】:
使用绝对路径代替相对路径。所以应该是:
<img src="/sites/all/themes/zen/zen/image.png">
注意开头的斜线。斜线应该是您将现有相对路径转换为绝对路径以用于直接 HTML 的唯一操作。
【讨论】:
如果您的图像路径以斜线开头(“/sites/all/themes/zen/zen/image.png”),这将始终相对于您的 drupal 根目录。
您也可以简单地选择“PHP 代码”作为输入格式,并按照您所说的使用 $base_url。
【讨论】:
我用 cck blocks 来做这件事。 cck blocks是drupal模块,可以将drupal字段放入blocks中
【讨论】: