从Drupal网站创建一个iframe

时间:2010-10-28 11:22:28

标签: drupal iframe

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

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

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

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

方法2 在drupal中创建iframe。

使用hoom_menu(iframe的url)创建一个定义菜单项的新模块。从菜单项的回调函数定义iframe的内容。然后以某种方式为所需的iframe网址分配自定义page.tpl.php主题,以便只显示iframe的内容而不显示所有其他页面元素(块,菜单,页脚等)。

特别对方法2的任何评论将不胜感激! :)

4 个答案:

答案 0 :(得分:6)

这一周我完成了这件事!

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

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

<body>标记内。

基本上都是这样。要找出您的网页模板需要的名称,请使用develtheme_devel模块,然后只需点击您的网页,它就会告诉您它寻找的模板。

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

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

答案 1 :(得分:1)

我发现格雷厄姆的答案非常有用。不幸的是,我在这个网站上没有足够的声誉来添加评论,因此我必须将我的评论放在答案中。

5年后,信息略有变化:

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

方法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

结合使用