【问题标题】:Drupal - Custom theme does not parse media module markupDrupal - 自定义主题不解析媒体模块标记
【发布时间】:2011-10-11 14:40:18
【问题描述】:

我遇到了 Drupal 7 的媒体模块的问题,它在整个网站上都运行良好,除了在我创建的自定义模块中。 该模块使用的字段使用与站点其他部分相同的文本格式,它正确呈现粗体、表格和所有 TinyMCE 内容。但不知何故,它无法处理媒体插件插入的图像。

如果我添加普通文章内容类型,那么它可以正常工作。只有我的模块呈现的字段不会被解析。

所以 - 我通过以下方式显示一个字段:

   echo '<p class="product-section-content">' . $element['value'] . '</p>'."\n";

但是,我得到的不是图像:

[[{"type":"media","view_mode":"media_large","fid":"71","attributes":{"alt":"","class":"media-image","typeof":"foaf:Image"}}]][[{"type":"media","view_mode":"media_large","fid":"63","attributes":{"alt":"","class":"media-image","typeof":"foaf:Image"}}]] 

我应该调用什么来解析这个标记标签?

【问题讨论】:

    标签: drupal drupal-7 drupal-themes


    【解决方案1】:

    这是因为 Media 模块提供了一个默认未激活的新输入过滤器。解析媒体标签需要此过滤器。

    您需要转到admin/config/content/formats,编辑您要用于媒体的文本格式,并为每个格式启用Converts Media tags to Markup 复选框。

    然后它会工作:)

    【讨论】:

    • 通常它会起作用,但不知何故它不起作用。 @user2834003 评论对我有用。由于 Drupal 没有为我的自定义文本过滤器执行 Converts Media tags to Markup 并勾选了该选项。我使用了print media_filter(html);,效果很好。
    【解决方案2】:

    对于Media 模块(仅限1.x 分支),您可以正常使用media_filter 函数:

    print media_filter(html);
    

    【讨论】:

    • 最近的Media模块中已经没有这个功能了,所以改用media_wysiwyg_filter吧。
    • 取决于媒体模块的版本
    【解决方案3】:

    如果有人使用 Media module 2.x 分支,你应该使用:

    print media_wysiwyg_filter(html);
    

    【讨论】:

    • 你有两个几乎相同的答案,我认为这些应该合并为一个,说明哪个函数应该用于哪个分支。
    【解决方案4】:

    看起来您需要使用 render() 函数,而不是仅仅打印出元素的值。

    http://api.drupal.org/api/drupal/includes--common.inc/function/render/7

    所以你的代码应该看起来更像这样:

    echo '<p class="product-section-content">'.render($element).'</p>'."/n";
    

    对您的模块有更多的背景信息会有所帮助。您是否尝试在模板文件中打印出此元素?您的目标只是编辑元素的包装 HTML 吗?等等

    【讨论】:

      【解决方案5】:

      你需要使用drupal“safe_value”而不是“value”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-08-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多