【问题标题】:Drupal - open node body in new windowDrupal - 在新窗口中打开节点主体
【发布时间】:2010-03-16 10:35:24
【问题描述】:

所以我遇到了一个问题,真的没有找到任何解决方案,所以我希望这里有人可以帮助我。

我的网站带有图书导航模块。我的首页有多个块,每个块包含书籍导航和列出不同书籍的内容。

问题是我需要在一个新窗口中从一个块中打开书页,而这个新窗口应该只包含节点的主体数据,而没有围绕它的模板内容。

我已经设法在新窗口中打开这些节点,其中自定义模块仅列出给定书籍中的书籍页面,但我无法弄清楚如何在这个新窗口中仅打印没有模板内容的节点正文。

我在新窗口中打开书页的解决方案是 target="_blank",因此它可能不是执行此操作的“drupal 方式”,因此也将不胜感激任何提示。

提前非常感谢!

【问题讨论】:

    标签: php drupal drupal-6


    【解决方案1】:

    template.php(在您的主题文件夹中)

    function THEMENAME_preprocess_page(&$vars) {   
      if (isset($_GET['popup']) && $_GET['popup'] == '1') {
        $vars['template_file'] = 'popup';
      } 
    }
    

    并在您的主题中创建一个 popup.tpl.php 以及 page.tpl.php ,其中包含内容

    <?php echo $content ?>
    

    刷新主题 .现在您可以将 ?popup=1 添加到您想要的任何链接。你只会得到 $content

    例如 'user/1?popup=1' :)

    【讨论】:

    • 这个解决方案似乎不适用于 Drupal 7。关于如何将这个答案用于 Drupal 7 有什么想法吗?我目前正在尝试使用$vars['theme_hook_suggestions'][] = 'page__popup'; 代替您的“template_file”行。它确实执行了模板,但是$content是未定义的,所以只显示了Title,没有内容。
    • @cmcnulty 在 drupal 7 中,echo $contentecho render($page['content'])
    • 重大飞跃!它仍然打印侧边栏,但至少现在它正在显示内容!
    • @cmcnulty 仅包含内容,删除所有其他变量
    • @cmcnulty 也可以参考 ajaxify drupal 。我已经基于相同的概念构建了一个模块
    【解决方案2】:

    如果您想要的只是正文而不包含任何其他“内容”,我建议您覆盖您正在使用的内容类型的默认主题。您可以手动完成(编写 PHP),或者内容模板(Contemplate)模块也可以工作。

    【讨论】:

    • 但是这种行为应该只发生在未登录的用户身上。所以基本上我需要能够为弹出窗口的内容指定自定义模板。它不应该影响其他相同的内容类型。只有在新窗口中打开的那些。
    猜你喜欢
    • 2011-04-24
    • 2014-03-24
    • 1970-01-01
    • 2021-07-20
    • 1970-01-01
    • 2015-07-15
    • 1970-01-01
    • 2012-10-17
    • 1970-01-01
    相关资源
    最近更新 更多