You are here

为你的drupal主题创建一个.info文件(1)

老葛的Drupal培训班 Think in Drupal

恭喜恭喜!现在你应该可以实际的看到你的设计了。外部的样式表还没有加载进来(我们将在后面讨论它),访问你的站点中的任何页面,都会一而再再而三的显示同一个页面,尽管如此,这也是一个了不起的开始!由于访问你的站点中的任何页面,都会显示page.tpl.php中的静态HTML内容,所以现在你无法进入管理界面了。我们将你关到了Drupal站点的门外面!哎哟。一不小心被关到了门外面,对于初学者来说,这是常碰到的事情,下面我们将向你讲述如何解决这个问题。一种方案是对刚才启用的主题进行重命名。在这种情况下,你可以简单的将greyscale重命名为greyscale_,这样你就可以重新返回站点到里面了。那是一个快速解决办法,但是由于你知道问题的真正所在(也就是,我们还没有包含动态内容),这里给出另一种方案:你可以向page.tpl.php中添加适当的变量,从而显示Drupal的动态内容而不是前面的静态内容。
    每一个PHPTemplate模板文件----比如page.tpl.php,node.tpl.phpblock.tpl.php等等----都有一组动态内容的变量传递给它们使用。打开page.tpl.php将相应的静态内容替换为相应的Drupal变量。不要担心,我很快就会对这些变量进行讲解。
 
<html>
<head>
    <title><?php print $head_title ?></title>
    <link rel="stylesheet" href="global.css" type="text/css" />
</head>
<body>
    <div id="container">
        <div id="header">
            <h1><?php print $site_name ?></h1>
            <?php print $header ?>
        </div>
 
        <?php if ($left): ?>
            <div id="sidebar-left">
               <?php print $left ?>
            </div>
        <?php endif; ?>
 
        <div id="main">
            <?php print $breadcrumb ?>
            <h2><?php print $title ?></h2>
            <?php print $content ?>
        </div>
 
        <div id="footer">
            <?php print $footer_message ?>
            <?php print $footer ?>
        </div>
    </div>
<?php print $closure ?>
</body>
</html>
 
    重新加载页面,你将发现,变量被来Drupal的内容替换了。你将注意到没有加载global.css样式表,这是因为指向该文件的路径不对。你可以手工的调整它的路径,或者你可以采用Drupal的方式来完成它,这样更加灵活并且具有其它好处。
  首先,将global.css重命名为style.css。根据规定,Drupal将自动的查找每个主题下面的style.css文件。一旦找到了这个文件,那么Drupal会将其添加到变量$styles里面,从而被传递给page.tpl.php.让我们使用下面的信息来更新page.tpl.php。
<html>
<head>
<title><?php print $head_title ?></title>
<?php print $styles ?>
</head>
...
    保存你的修改并重新加载页面。瞧!如果你查看页面的源代码的话,你将注意到,其它启用的模块所带有的样式表也被加载了进来,这些都是通过变量$styles实现的:
<html>
<head>
    <title>Example | Drupal 6</title>
    <link type="text/css" rel="stylesheet" media="all"
        href="modules/node/node.css?f" />
    <link type="text/css" rel="stylesheet" media="all"
        href="modules/system/defaults.css?f" />
    <link type="text/css" rel="stylesheet" media="all"
        href="modules/system/system.css?f" />
    <link type="text/css" rel="stylesheet" media="all"
        href="modules/system/system-menus.css?f" />
    <link type="text/css" rel="stylesheet" media="all"
        href="modules/user/user.css?f" />
    <link type="text/css" rel="stylesheet" media="all"
        href="sites/all/themes/greyscale/style.css?f" />
</head>
...
 
    通过将你的CSS文件命名为style.css,这样Drupal就可以使用它的CSS预处理引擎来对它进行处理,以消除CSS文件中所有的空白和换行,另外,它还将它们合并到了一起(Drupal没有使用多个样式表),作为一个文件提供给浏览器。关于这一特性的更多细节,参看第22章。
 
注意 Drupal在样式表URL的后面添加了伪查询字符串(在前面例子中的“?f”),这样就可以控制缓存了。当需要的时候,它可以修改字符串,比如运行update.php以后,或者在管理界面“管理➤站点构建 ➤性能”中清空了缓存以后。
 
    在你将global.css重命名为style.css以后,刷新浏览器,你将看到一个与图8-3中主题类似的主题,它包含了页首,页脚,和左边栏。尝试一下,导航到“管理➤站点构建 ➤区块”,将“在线用户”区块指定到左边栏。
  除了前面提到的这些变量以外,还有更多的变量可以添加到page.tpl.php和其它模板文件中。让我们深入的学习一下!如果你没有动手实现前面所给的例子,那么你可以浏览一下themes目录中所带有的核心主题,看看在这些主题中,变量是如何使用的。
 

Drupal版本: