HTML临时模板系统

时间:2014-06-11 23:59:03

标签: php html

在我的网站上,我有一些名为新闻/博客/产品等的文件夹......所有这些部分实际上都是相同的设置,除了头部的小内部样式更改,而不是复制和粘贴相同文件n次我宁愿拥有一个模板,我开始这样做:

  • 每个部分都有一个名为“base”的.php文件(news.php / blog.php / products.php等...)
  • 每个页面都有2个包含:

    <?php
         include "../article_template/part1.html";
    ?>
    
    // Each pages internal styling goes here
    
    <?php
        include "../article_template/part2.html";
    ?>
    

第1.html部分:

<?php
    require_once "directory/functions.php";
?><!DOCTYPE html>
<html><head>

<link rel="stylesheet" type="text/css" href="http://example.org/folder/style1.css">
<link rel="stylesheet" type="text/css" href="http://example.org/folder/style2.css">

<style type="text/css">

第2.html部分:

</style>

<title> <?php get_title(explode('/', $_GET['$url'])); ?></title>

</head><body>
<?php 
    include "../topborder.html";
    include "../banner.php";
    include "../navbar.html";
?>
<div id="container">
<div id = "article_container">
    <?php
        $uri = explode('/', $_GET['$url']);
        get_article($uri[0]);
    ?>
</div>
<?php include "../folder/sidepanel.html"; ?>
</div></body></html>

在第1部分和第2部分之间,我可以插入页面的内部样式。虽然这个工作正常,但看起来有点hacky - 我会遇到很多性能或其他任何问题吗? - 虽然这个设置对我来说更容易,因为我只需要更改1个文件来影响所有区域,我有点担心性能。有更好的方法吗?

3 个答案:

答案 0 :(得分:1)

这与WordPress页面使用的布局技术相同。你会没事的。如果您需要证明,请下载免费的WordPress主题并查看它。

答案 1 :(得分:1)

重复自己需要花费更多的时间,如果你不得不回去并在多个地方做出同样的改变,那么可能会有更多的时间。 DRY(不要重复自己)减少重复和随之而来的维护问题。

在您的示例中,您包含了不同的HTML文件,我们可以制作包含任何HTML模板的功能。好处:更短的代码,您不需要记住每个文件的路径,如果您需要更改HTML文件,您只需执行一次。

<?php

    // Add this to functions

    function get_template($template = '') {

        $path = '/absolute/path'; // Absolute path to your project

        $templates = array(
            'topBorder' => '/views/topborder.html',
            'banner' => '/views/banner.html',
            'navBar' => '/views/navBar.html',
            'sidePanel' => '/views/sidepanel.html'
        );

        if(isset($templates[$template])) {
            $templateFile = $path . $templates[$template];
            if(file_exists($templateFile))
                include($templateFile);
        }

    }

    // Instead of including some static HTML
    // We only call the function with the corresponding template

    get_template('navBorder');
    get_template('banner');
    get_template('navBar');

答案 2 :(得分:0)

  

我有点担心表现。有没有更好的方法   这样做?

为什么呢? HTML之前的PHP标签意味着100%的任何东西。 PHP将作为PHP&amp;第二个HTML <!DOCTYPE html>出现,它直接通过Web服务器以HTML格式发送。