从Drupal网站创建Iframe

从Drupal网站创建Iframe,drupal,iframe,Drupal,Iframe,我有一个drupal网站。我想用drupal站点的内容生成一个Iframe,其他站点可以嵌入它 我认为如何实现这一目标: 方法1:创建一个独立于drupal引擎的php脚本 导入配置文件,从而获得对数据库的访问权。将内容生成为独立网页。将此脚本的url作为iframe的源url分发。 问题:无法在iframe中提供drupal功能,例如与登录用户的交互 方法2:从drupal内部创建iframe 创建一个新模块,该模块使用hoom_菜单(iframe的url)定义菜单项。通过菜单项的回调函数定义

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

我认为如何实现这一目标:

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

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

方法2:从drupal内部创建iframe

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


特别是对方法2的任何意见都将不胜感激!:)

你到底需要做什么? 节点?一个街区?它是静态的还是动态的?
您只需使用php过滤器创建一个节点并生成iframe输出。
然后,您可以将此输出放在
标记之间,将其显示为用户可以在其站点中复制/粘贴的代码。

就在本周,我已经完成了这项工作

<?php print $content; ?> 
我创建了一个自定义模块,只输出我想要的内容(使用
hook\u menu()
)。然后我创建了一个页面模板(
page mycustommodule.tpl.php
),该模板只有

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

我发现格雷厄姆的答案非常有用。不幸的是,我没有足够的声誉在这个网站上添加评论,所以我将不得不把我的评论在一个答案

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

  • 模块主题“devel”现在似乎改为“devel”主题
  • 在D7中,模板命名模式与2略有不同 连字符:页面--[front | internal/path].tpl.php()
  • D7模板根据渲染数组略有不同,因此模板需要类似于打印渲染($page['content')
方法3 您可以使用此模块创建IFRAME就绪网页

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

选择IFRAME视图模式并选择要显示的字段

然后像这样使用url
domain.com/entity\u iframe/node/NID
,您将看到一个没有额外页眉页脚的显示

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


admin/config/system/entity\u iframe
中的设置控制嵌入代码的一些细节


为了完全控制所使用的主题,您可以将其与格雷厄姆结合使用,您所描述的主题效果极佳。现在我们已经对iframe的渲染进行了分类,有没有关于如何使其更高效的想法-如何绕过准备从未渲染过的元素,例如块?我还不是Drupal大师,我不完全确定如何防止渲染块。上下文模块看起来可以做到这一点(还有更多),但我没有任何使用它的经验。块页面可见性模块还防止未使用的块被执行。感谢GiorgosK,它在Drupal Webform和WordPress网站之间运行良好!
    <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>