PHP Templated sitesi w / file_get_content bağlantılar

3 Cevap php

Tamam bu yüzden benim arkadaşım benim için inşa edilmiş bir şablon komut dosyası var. Ben tüm dosya isimlerini ekleriz.

Tamam bu yüzden ne çalışmıyor? Izle, İçerik grabing değil

(1 I içeriğin nereye yerleştirilmesi gerektiğini bilmiyorum.

(2 Ben şablonunu değiştirmek IF içerik kalır alan aynı olduğunu bu yüzden bir dizin yerleştirilir istiyorum.

(3 I bağlantıları yüklemek için file_get_contents almak için çalışıyorum? = I # KONULAR # ile belirttiğiniz içeriği div body.tpl vb hakkında? = Hizmetleri içine

Aşağıdaki gibi (4 Dir Ağacı

 htdocs>
    classes> file.class.php
    contents> where i want #CONTENTS# (file_get_contents) to grab data from
    images> content (changing images)
    templates> where the templates are hosted
            clean>main template (Files are header.tpl, body.tpl, footer.tpl, styles.css, menu_style.css, and the images folder for images relating to the template itself.)
            other templates>(to come)

herhangi bir yardım takdir edin. sorunları artık komut sadece görüntüleme değil yüklemeden doğru alanındaki her şeyi koyarak whats?.

/ * File.class.php * /

<?php

$file = new file();

class file{
    var $path = "templates/clean";
    var $ext = "tpl";

    function loadfile($filename){
  return file_get_contents($this->path . "/" . $filename . "." . $this->ext);
 }

 function setcontent($content,$newcontent,$vartoreplace='#CONTENT#'){
  $val = str_replace($vartoreplace,$newcontent,$content);
  return $val;
 }

 function p($content) {
  $v = $content;
  $v = str_replace('#CONTENT#','',$v);
  print $v;
 }
}
if(!isset($_GET['page'])){
    // if not, lets load our index page(you can change home.php to whatever you want:
    ob_start();
    include("contents/".'main.php');
    $content = ob_get_contents();
    ob_end_clean();
    // else $_GET['page'] was set so lets do stuff:
    } else {
    // lets first check if the file exists:
    if(file_exists($_GET['page'].'.php')){
    // and lets include that then:
    ob_start();
    include("contents/". $_GET['page'] . '.php');
    $content = ob_get_contents();
    ob_end_clean();


    // sorry mate, could not find it:
    } else {
        echo 'Sorry, could not find <strong>' . $_GET['page'] .'.php</strong>';
    }
}
?>

Bazı biri aşağı Döşeme olabilir yani eğer SADECE şablon Gerekli kod ve dosya içeriğini olsun.

/ * Index.php * /

<?php
    include('classes/file.class.php');

    // load the templates
    $header = $file->loadfile('header');
    $body = $file->loadfile('body');
    $footer = $file->loadfile('footer');

    // fill body.tpl #CONTENT# slot with $content
    $body = $file->setcontent($body, $content);

    // cleanup and output the full page
    $file->p($header . $body . $footer);

?>

/ * Header.tpl * /

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-Transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<meta name="robots" content="index,follow"/>
<meta name="distribution" content="global"/>
<meta name="description" content=""/>
<meta name="keywords" content=""/>
<link href="templates/clean/style.css" rel="stylesheet" type="text/css" media="screen" />
<link rel="stylesheet" href="templates/clean/menu_style.css" type="text/css" />
<script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js"></script>
</head>
<body>
 <div id="header">
  <div id="logo"><a href="index.php" style="height:30px;width:150px;"><img src="images/logo.png" border="0" alt=""/></a></div>
   <div id="menuo"> 
    <div class="menu">
     <ul id="menu">
      <li><a href="?page=home">Home</a></li>
      <li><a href="?page=about">About Us</a></li>
      <li><a href="?page=services">Services</a>
       <ul>
        <li><a href="?page=instore">InStore Repairs</a></li>
        <li><a href="?page=inhome">InHome Repairs</a></li>
        <li><a href="?page=website">Website Design</a></li>
        <li><a href="?page=soon">Comming Soon.</a></li>
         </ul>
       </li>
      <li><a href="?page=products">Products</a>
                   <ul>
                   <li><a href="?page=pchard">Computer Hardware</a></li>
                   <li><a href="?page=monitor">Monitor's</a></li>
                   <li><a href="?page=laptop">Laptop + Netbooks</a></li>
                   <li><a href="?page=soon">Comming Soon.</a></li>
                   </ul>
             </li>
      <li><a href="?page=contact">Contact</a></li>
     </ul>
    </div>
   </div>
 </div>
 <div id="headerf">
 </div>

/ * Body.tpl * /

   <div id="bodys">
    <div id="bodt"></div>
        <div id="bodm">
            <div id="contents">
                #CONTENT#
                </div>
    <div id="bodb"></div>
        </div>
</div>

/ * Footer.tpl * /

<div id="footer">
<div style="position:absolute; top:4px; left:4px;"><img src="images/ff.png" alt="ok"></div> <div style="position:absolute; top:4px; right:5px; color:#FFFFFF;">&copy;2010 <a href="mailto:">Company Name</a></div>
</div>
</body>
</html>

3 Cevap

Kimden ne anlıyorum, içerik içeride about.php (örneğin).

içeriği / about.php: Bu dosya "içeriği" dizinde olduğunu

Komut

include('about.php')

script about.php satır içi yük ve yürütecek. include çağrı yapılır tam olarak nerede bu yüzden onun içeriği yazdırmak olacaktır. Ne görmek gibi bakmak gerekir:

(content of about.php) | header | body | footer

Eğer doğru değere sahip $ içeriği istiyorsanız, hat değiştirmek

include($_GET['page'].'.php');

ile

ob_start();
include("contents/". $_GET['page'] . '.php');
$content = ob_get_contents();
ob_end_clean();

Bu PHP dosyası inline içeriğini işlemek gerektiğini anlamak yapmak, ancak bunun yerine $ içeriği değişken koymak nesne tamponlama tekniği kullanır.

Bu yardımcı olur umarım!

Arkadaşınız sizin için inşa şablon komut sitenizi çiftleşmiş size yardımcı olacaktır yardımcı fonksiyonları ile doludur.

Şu anda, ben size 2 sorunları olduğunu düşünüyorum:

  1. şablonları konumu
  2. şablon mekanizmasını kullanarak

1. şablonları konumu

Şu anda, arkadaşınızın komut devletler

var $path = "templates/clean";

Hangi Eğer index.php koyduk dizinde bir templates klasör ve bir templates/clean klasör oluşturun ve şablonları (header.tpl, vücut koymak gerektiği anlamına gelir. tpl, footer.tpl) içeride.

2. şablon mekanizmasını kullanarak

Kullanmayı deneyin

<?php
    include('classes/file.class.php');

    // load the templates
    $header = $file->loadfile('header');
    $body = $file->loadfile('body');
    $footer = $file->loadfile('footer');

    // fill body.tpl #CONTENT# slot with "Hello World!"
    $body = $file->setcontent($body, "Hello World!");

    // cleanup and output the full page
    $file->p($header . $body . $footer);

?>

Setcontent önceden yüklenen body.tpl içinde İÇERİĞİ # vakasını bulmak ve belirli bir içeriğe sahip değiştirir (bu durumda, "Merhaba Dünya")

I hope this will put you on good track ! tell me if it works. Jerome

Ben senin sorunun hattı üzerinde olabilir düşünüyorum

if(file_exists($_GET['page'].'.php')){

Bunu şöyle olmalıdır

if(file_exists('contents/'.$_GET['page'].'.php')){

Umarım bu yardımcı olur