【问题标题】:Drupal Reuse moduleDrupal 重用模块
【发布时间】:2012-06-27 02:07:18
【问题描述】:

我是 Drupal 的新手,但是我一直在研究模块开发,并且我设法使用块和 jQuery 完成了一些功能。但是需求变得更大,并且在某些部分用户想要上传和图像,并裁剪它以创建将在其他块中呈现的缩略图。 我知道这个确切的行为已经在一些社区模块中完成,特别是 ImageFieldCrop,所以我想使用它......但是我想将上传的图像和裁剪的图像保存在我的自定义模块内的文件夹中。那么问题来了?我如何扩展该模块?...是否有必要重写代码以指向正确的路径???或者有没有办法拦截钩子方法?由于我是drupal开发的新手,如果这听起来像是一个基本问题,我深表歉意......无论如何,如果有人能给我提供一些链接或教程来展示如何拦截钩子或在我创建的模块上使用其他模块代码,那就太好了。非常感谢

【问题讨论】:

  • 这完全取决于您要扩展的模块,如果模块贡献者提供了拦截钩子的工具,是的,这是最好的选择,否则需要重新编写代码 - 没有其他选择。
  • 据我记得,模块是不允许在包含模块的目录中创建文件的;这是 Drupal 使用的默认文件权限。

标签: drupal drupal-7 drupal-modules


【解决方案1】:

如果您希望允许用户上传图像和文件,最好使用“文件字段”来实现,这在 D7 中已成为其核心模块集的一部分。当您添加和配置字段时(作为内容类型创建过程的一部分),您有机会设置您希望文件保存到的路径。

JS 裁剪和图像样式

在作物解决方案方面,我可以推荐EPSA Crop 模块。这允许您的用户为每个上传的图像定义多个不同的裁剪区域,并使用交互式 JS 小部件来实现。它与 D7 的“图像样式”(在 D6 中的正式图像缓存)的约定中工作,允许有效地重用和操作图像;例如您的用户上传了一张高分辨率图片,并且可以创建变体以在您网站的各个地方使用。

创建样式后,您可以使用 API 主题调用 (theme_image_style) 以编程方式添加它们

避免忽视既定惯例

但是,Drupal 作为一个系统设置了许多约定,理想情况下应该遵循这些约定。

就用户创建的文件而言,最好将它们存储在您网站的文件目录中。 Drupal 使用两种类型的文件访问——公共的,它不关注任何类型的访问权限和私有的——它允许应用访问限制。通过选择将文件存储在模块目录中,您可能会给自己或任何未来的开发人员带来问题。

我建议不要将这些文件保存在您的模块目录中,除非您有一个非常很好的理由这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    相关资源
    最近更新 更多