Nasıl bu şablon sistemi geliştirebilir?

0 Cevap php

Şu anda, ben bir taban HTML şablon dosyası var. Ben yeni bir sayfa yapmak istiyorum şimdiye kadar, ben şablonu kopyalayıp belirli etiketler arasında bazı require_once ifadeleri yerleştirdiğinizde. Şablonu her zaman kopyalamak için gereksiz kılacak daha iyi bir yolu olup olmadığını merak ediyordum. İşte tipik bir örnek:

  <html>
   <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <link rel="stylesheet" type="text/css" href="css/second.css" />
    <script language="JavaScript" type="text/javascript"
        src="js/validation_functions.js"></script>
    <title>Order a Ticket for the ball</title>
   </head>
   <body>

    <div id="banner">St. Tom's Ambulance Ball</div>

    <!-- START[container] -->
    <!-- "body" -->
    <div id="container">

        <!-- START[header] -->
        <div id="header">

            <!-- header -->
            <div id="header_text">introduction</div>
            <div id="header_cell2">the process</div>
            <div id="header_cell3">start</div>

        </div>
        <!-- END[header -->

        <!-- START[content] -->
        <!-- "other container" -->
        <div id="content">

            <!-- START[form] -->
            <div id="form">
                <?php
                require_once(realpath($config["directories"]["views"]."/index.form.view.php"));
                ?>
            </div>
            <!-- END[form] -->

            <!-- START[data] -->
            <!-- "main content" -->
            <div id="data">
                <?php
                require_once(realpath($config["directories"]["views"]."/index.data.view.php"));
                ?>
            </div>
            <!-- END[data] -->

            <!-- START[side] -->
            <div id="side">
                <?php
                require_once(realpath($config["directories"]["views"]."/index.side.view.php"));
                ?>
            </div>
            <!-- END[side] -->

        </div>
        <!-- END[content] -->

        <!-- START[footer] -->
        <div id="footer">
            <!-- footer -->
            <div id="footer_text">
                <ul>
                    <li><a href="index.php">home</a></li>
                    <li><a href="">partners</a></li>
                    <li><a href="">projects</a></li>
                    <li><a href="">contact us</a></li>
                </ul>
            </div>

            <div id="footer_cell2">&nbsp;</div>
            <div id="footer_cell3">&nbsp;</div>

        </div>
        <!-- END[footer] -->

    </div>
    <!-- END[container] -->

  </body>
 </html>

EDIT: I GET kullanmak için önerilerin not almış. Yeni fikir, her isteği url index.php? Page = PAGE_NAME olarak meydana sahip olmaktır. Bu istek daha sonra $ _GET ['sayfa'] değerine dayalı şablon değişkenlerini ayarlar bir ana kontrolör tarafından ele olacaktır. Bunun için, şablon şimdi olacak:

  <html>
   <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <link rel="stylesheet" type="text/css" href="css/second.css" />
    <script language="JavaScript" type="text/javascript"
        src="js/validation_functions.js"></script>
    <title><?php h($title) ?></title>
   </head>
   <body>

    <div id="banner">St. Tom's Ambulance Ball</div>

    <!-- START[container] -->
    <!-- "body" -->
    <div id="container">

        <!-- START[header] -->
        <div id="header">

            <!-- header -->
            <div id="header_text"><?php h($header_1) ?></div>
            <div id="header_cell2"><?php h($header_2) ?></div>
            <div id="header_cell3"><?php h($header_3) ?></div>

        </div>
        <!-- END[header -->

        <!-- START[content] -->
        <!-- "other container" -->
        <div id="content">

            <!-- START[form] -->
            <div id="form">
                <?php
                require_once(realpath($view_1));
                ?>
            </div>
            <!-- END[form] -->

            <!-- START[data] -->
            <!-- "main content" -->
            <div id="data">
                <?php
                require_once(realpath($view_2));
                ?>
            </div>
            <!-- END[data] -->

            <!-- START[side] -->
            <div id="side">
                <?php
                require_once(realpath($view_3));
                ?>
            </div>
            <!-- END[side] -->

        </div>
        <!-- END[content] -->

        <!-- START[footer] -->
        <div id="footer">
            <!-- footer -->
            <div id="footer_text">
                <ul>
                    <li><a href="index.php">home</a></li>
                    <li><a href="">partners</a></li>
                    <li><a href="">projects</a></li>
                    <li><a href="">contact us</a></li>
                </ul>
            </div>

            <div id="footer_cell2">&nbsp;</div>
            <div id="footer_cell3">&nbsp;</div>

        </div>
        <!-- END[footer] -->

    </div>
    <!-- END[container] -->

  </body>
 </html>

Not: h () her şeyden önce bir dize yankılanan önce tüm istenmeyen varlık etiketleri kaldırır bir fonksiyonudur.

İlgili bir not olarak, her sayfanın üst kısmında ben Require_oncenin dahil bazı denetleyici dosyaları var. Sadece bu şekilde belirli bir giriş dizesi (işlevsellik / sayfa adı) yani "index" dayalı dosyaları içeren bir fonksiyonu uygulamak mümkün olacağını merak ediyordum:

function include_controller($page){
  switch($page){
    case "index":
       require_once(realpath($config["directories"]["controllers"]."/index_.php"));
       break;
    case "checkout":
      require_once(realpath($config["directories"]["controllers"]."/checkout_.php"));
      break;
    default:
      break;
  }
}

0 Cevap