我有一个drupal网站。我想生成一个包含我的drupal网站内容的iframe,其他网站可以嵌入。
我认为如何实现这一目标:
方法1 :创建一个独立于drupal引擎的php脚本。
导入配置文件,从而获得对数据库的访问权限。将内容生成为独立网页。将此脚本的网址分发为iframe的源网址。 问题:无法在iframe中提供drupal功能,例如与登录用户的交互。
方法2 :在drupal中创建iframe。
使用hoom_menu(iframe的url)创建一个定义菜单项的新模块。从菜单项的回调函数定义iframe的内容。然后以某种方式为所需的iframe网址分配自定义page.tpl.php主题,以便只显示iframe的内容而不显示所有其他页面元素(块,菜单,页脚等)。
特别对方法2的任何评论将不胜感激! :)
答案 0 :(得分:6)
这一周我完成了这件事!
我创建了一个自定义模块,只输出我想要的内容(使用hook_menu()
)。然后我创建了一个只有
page-mycustommodule.tpl.php
)
<?php print $content; ?>
在<body>
标记内。
基本上都是这样。要找出您的网页模板需要的名称,请使用devel
和theme_devel
模块,然后只需点击您的网页,它就会告诉您它寻找的模板。
要注意的一件事:iframe中的任何链接只会更改THAT FRAME的内容,因此当您的模块创建链接时,请使用正确的目标使父页面跳转到新的URL:
l('link text',
'node/' . $mynode->nid,
array('attributes' => array('target' => '_parent')));
答案 1 :(得分:1)
我发现格雷厄姆的答案非常有用。不幸的是,我在这个网站上没有足够的声誉来添加评论,因此我必须将我的评论放在答案中。
5年后,信息略有变化:
print render($page['content']);
答案 2 :(得分:0)
你对iframe究竟需要什么?
一个节点?一块?它应该是静态的还是动态的?
您可以使用php过滤器创建一个节点并生成iframe输出。
然后,您可以将此输出放在<pre>
标记之间,以将其显示为用户可以在其网站中复制/粘贴的代码。
答案 3 :(得分:0)
您可以使用此模块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
结合使用