【问题标题】:Create an Iframe from a Drupal Website从 Drupal 网站创建 iframe
【发布时间】:2010-10-28 11:22:27
【问题描述】:

我有一个 drupal 网站。我想用我的 drupal 网站中的内容生成一个 iframe,其他网站可以嵌入。

我认为这是如何实现的:

方法一创建一个独立于drupal引擎的php脚本。

导入配置文件,从而获得对数据库的访问权限。将内容生成为独立网页。将此脚本的 url 分发为 iframe 的源 url。 问题:无法在 iframe 中提供 drupal 功能,例如与登录用户的交互。

方法 2在 drupal 中创建 iframe。

创建一个新模块,该模块使用 hoom_menu(iframe 的 url)定义菜单条目。从菜单项的回调函数中定义 iframe 的内容。然后不知何故为所需的 iframe url 分配一个自定义 page.tpl.php 主题,以便只呈现 iframe 的内容,而不呈现所有其他页面元素(块、菜单、页脚等)。

任何特别适用于方法 2 的 cmets 将不胜感激! :)

【问题讨论】:

    标签: drupal iframe


    【解决方案1】:

    就在这周,我完全做到了这一点!

    我创建了一个只输出我想要的内容的自定义模块(使用hook_menu())。然后我创建了一个只有

    的页面模板 (page-mycustommodule.tpl.php)
    <?php print $content; ?> 
    

    &lt;body&gt; 标签内。

    基本上就这些了。要找出您的页面模板需要的名称,请使用develtheme_devel 模块,然后只需单击您的页面,它就会告诉您它要查找的模板。

    需要注意的一点:iframe 中的任何链接只会更改 THAT FRAME 的内容,因此当您的模块创建链接时,请使用正确的目标使父页面跳转到新 URL:

    l('link text',
      'node/' . $mynode->nid,
       array('attributes' => array('target' => '_parent')));
    

    【讨论】:

    • 格雷厄姆,你所描述的效果很好。现在我们已经对 iframe 的渲染进行了排序,关于如何使其更高效的任何想法 - 如何绕过从未渲染的准备元素,例如积木?
    • 还不是 Drupal 大师,我不完全确定如何防止渲染块。 Context 模块看起来可以做到这一点(以及更多),但我没有任何经验。块页面可见性模块还可以防止执行未使用的块。
    【解决方案2】:

    我发现 Graham 的回答非常有用。不幸的是,我在这个网站上没有足够的声誉来添加评论,所以我必须将我的评论放在答案中。

    5 年过去了,信息略有变化:

    • 模块 theme_devel 现在似乎改为 devel_themer。
    • 在 D7 中,模板命名模式与 2 略有不同 连字符:page--[front|internal/path].tpl.php (see docs)
    • D7 模板根据渲染数组略有不同,因此模板需要类似于print render($page['content']);

    【讨论】:

      【解决方案3】:

      方法3

      您可以使用此模块https://www.drupal.org/project/entity_iframe 创建 IFRAME READY 网页

      安装它并转到要用作 iframe 内容的内容类型的显示设置admin/structure/types/manage/CONTENTTYPE/display

      选择 IFRAME 视图模式并选择您希望显示的字段

      然后使用domain.com/entity_iframe/node/NID 这样的网址,您将看到没有额外页眉页脚等的显示...

      默认情况下,每个节点设置下都会向管理员提供示例 EMBED/IFRAME 代码

          <iframe width="100%" height="300" src="domain.com/entity_iframe/node/96" frameborder="0" class="entity_iframe entity_iframe_node" id="entity_iframe_node_96" allowfullscreen="true" webkitallowfullscreen="true" mozallowfullscreen="true"></iframe>
      

      admin/config/system/entity_iframe中的设置控制了嵌入代码的一些细节

      为了完全控制所使用的主题,您可以与https://www.drupal.org/project/entity_iframe_theme结合使用

      【讨论】:

      • 感谢 GiorgosK 它在 Drupal Webform 和 WordPress 网站之间运行良好!
      【解决方案4】:

      iframe 究竟需要什么? 一个节点?块?它应该是静态的还是动态的?
      您可以简单地使用 php 过滤器创建一个节点并生成 iframe 输出。 然后,您可以将此输出放在&lt;pre&gt; 标记之间,以将其显示为用户可以在其网站中复制/粘贴的代码。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-31
        • 1970-01-01
        • 2011-12-09
        • 1970-01-01
        • 2012-08-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多