php - Drupal 7 - 向页面添加 block

标签 php html drupal drupal-7

这是我目前的设置。

我创建了一个包含以下区域的新自定义主题。

regions[header] = Header
regions[content] = Content
regions[footer] = Footer

页面.tpl.php

    <div id="Header">
        <div class="row">
            <div class="span12" style="text-align:center;padding-top:20px;">
                <div><a href="/"><img src="logo.png" width="150" height="150" alt="KT Logo"></a></div>
            </div>
        </div>

        <div class="row">&nbsp;</div>
    </div><!-- /Header -->

    <div id="Navigation">
        <div class="row" style="text-align:center;">
            <div class="span12" style="text-align:center;">
                <?php print render($page['header']); ?>
                <hr class="style-two">
            </div>
        </div>
    </div><!-- /Navigation -->

    <div id="Content">

        <div class="row">&nbsp;</div>

        <div class="row">
            <div class="span8 offset1">
                <h1><?php print $title; ?></h1>
            </div>
        </div>

        <div class="row">&nbsp;</div>

        <div class="row">
            <div class="span10 offset1">
                <?php print render($page['content']) ?>
            </div>
        </div>

        <div class="row">&nbsp;</div>
    </div><!-- /Content -->

    <footer>
        <div class="row">
            <div class="span12">
                <img src="separator.png" alt="separator">
                <?php print render($page['footer']); ?>
            </div>
        </div>
        <div class="row">&nbsp;</div>
    </footer>

</div><!-- /container -->

这一切都很好,我已经很好地创建了几个基本页面。当我想在页面上有一个包含 2 个 block 的自定义“内容类型”时,问题就来了,一个在左侧有主要内容,一个在右侧有侧边栏。现在我还没有完全理解这些区域是如何工作的。

我想要类似 sidebar_second 效果的东西,但我不确定它会如何设置我的宽度。这是我所在地区的屏幕截图。 http://goo.gl/XFVnl

所以我认为我需要更改我的内容区域的显示方式,以便它可以包含边栏区域?

感谢您的帮助

最佳答案

内容类型特定模板通常是 node.tpl.php 文件,页面模板是 page.tpl.php 文件。

当您使用 node.tpl.php 时,page.tpl.php 文件已经包含在内

首先,将所有区域添加到它们主题的 .info 文件中。这直接影响 block 管理页面中可用的区域。 没有必要让您定义的所有区域(在 .info 文件中)出现在所有 page.tpl.php 文件中。

由于您在 page.tpl.php 文件中有 3 个区域,因此保留它,它将继续工作。 但是要覆盖特定节点类型的 page.tpl.php,您必须在主题的 template.php 文件中设置它们。您简单地“询问”Drupal 使用此 page.tpl.php 文件是节点类型是“页面”(例如)。

将此添加到您的 template.php 文件中。如果节点类型是(机器名称)是“book”,Drupal 将不会在 page--node-book.tpl.php 文件中查找替代的 page.tpl.php 文件。

<?php
function themename_preprocess_page(&$variables) {
  if (!empty($variables['node'])) {
    $variables['theme_hook_suggestions'][] = 'page__node_' . $variables['node']->type;
  }
}
?>

现在您可以将 page.tpl.php 文件复制到 page--node-[type].tpl.php 并在那里进行更改。无论您在此文件中放入什么,都将用于该节点类型的页面模板。 (注意:“page”和“node”之间有 2 个连字符,“node”和“[type]”之间有一个连字符) 如果看不到更改,请记住清除缓存。

关于php - Drupal 7 - 向页面添加 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10963613/

相关文章:

php - 使用 PHP QR Code Generator 在 PHP 中创建带有居中 Logo 的 QR 码

php - 如果我通过 vagrant box add 安装 homestead,homestead.yaml 在哪里?

php - 如何避免JS代码变成input?

php - 将字段添加到 Drupal 6.12 的站点信息部分

php - mcrypt 已弃用,有什么替代方案?

php - 被表格格式难住了

html - Goji - 如何在变量中获取对 GoLang 的 HTML GET 表单请求?

html - 在 bootstrap 4 中使用 justify-content-center 打破标签

css - Internet Explorer 的样式问题 - 最有可能的简单解决方案

css - 如何通过 hook_menu 改变 body_classes_array?