显示Drupal视图,周围没有页面模板
2022-08-30 12:50:52
我想显示一个Drupal视图,而没有通常围绕它的页面模板 - 我只想要视图节点的纯HTML内容。
这个视图将包含在另一个非Drupal站点中。
我希望必须使用多个视图来执行此操作,因此,让我快速轻松地设置这些视图的解决方案将是最好的 - 我宁愿每次需要在某个地方包含视图时都不必创建.tpl.php文件。
我想显示一个Drupal视图,而没有通常围绕它的页面模板 - 我只想要视图节点的纯HTML内容。
这个视图将包含在另一个非Drupal站点中。
我希望必须使用多个视图来执行此操作,因此,让我快速轻松地设置这些视图的解决方案将是最好的 - 我宁愿每次需要在某个地方包含视图时都不必创建.tpl.php文件。
我正在寻找一种通过ajax提取节点数据的方法,并为Drupal 6提出了以下解决方案。实现以下更改后,如果您在URL中添加ajax = 1(例如 mysite.com/node/1?ajax=1),您将只获得内容而没有页面布局。
在模板中.php主题的文件:
function phptemplate_preprocess_page(&$vars) {
if ( isset($_GET['ajax']) && $_GET['ajax'] == 1 ) {
$vars['template_file'] = 'page-ajax';
}
}
然后在您的主题目录中创建 page-ajax.tpl.php,其中包含以下内容:
<?php print $content; ?>
根据Ufonion Labs的答案,我能够通过实现这两个模板并在我的主题模板中完全删除Drupal 7中页面内容周围的所有HTML输出.php,如下所示:hook_preprocess_page
hook_preprocess_html
function MY_THEME_preprocess_page(&$variables) {
if (isset($_GET['response_type']) && $_GET['response_type'] == 'embed') {
$variables['theme_hook_suggestions'][] = 'page__embed';
}
}
function MY_THEME_preprocess_html(&$variables) {
if (isset($_GET['response_type']) && $_GET['response_type'] == 'embed') {
$variables['theme_hook_suggestions'][] = 'html__embed';
}
}
然后我在我的主题中添加了两个模板:html--embed.tpl.php
<?php print $page; ?>
和:page--embed.tpl.php
<?php print render($page['content']); ?>
现在,当我打开一个节点页面(例如 http://example.com/node/3)时,我会像往常一样看到完整的页面,但是当我添加response_type参数(例如 http://example.com/node/3?response_type=embed)时,我只获取带有页面内容的,以便它可以嵌入到另一个页面中。<div>