Kafa etiketi yerine belirtilen div önce $ _GET içerik yükleme

3 Cevap php

Sorun olduğunu i <!DOCTYPE>, <html> <head></head> index.php dosyasına eklenir önce etiketinden önce görüntüleyen içerik yükler ŞİMDİ Vücut etiketinden önce içerik yükleri $ zaman ... o "İçindekiler" in beloaded ne zaman div.

(1 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 (2 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)

/ * 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'])){
    ob_start();
    // if not, lets load our index page(you can change home.php to whatever you want:
    include("main.txt");
    // else $_GET['page'] was set so lets do stuff:
    } else {
    // lets first check if the file exists:
    if(file_exists($_GET['page'].'.txt')){
    // and lets include that then:
    include($_GET['page'].'.txt');
    $content = ob_get_contents();
    ob_end_clean();

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

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

/ * Index.php * /

<!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> //everything before this USED to be in header.tpl but i moved it here until fix so that w3c validator would validate my code
<?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 * /

 <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>

My Firefox Showing The Problem In Action

3 Cevap

Edited answer: I'd originally assumed that the p() method was an accidental method you were calling, but that appears (according to the update you made to fix the fact that both pages were the same) to be a red herring. The issue is similar maybe though.

When you: include('classes/file.class.php'); as part of your index.php, one of the things it does is define the methods and then run a few if statements, as part of this change it includes a .txt file. (e.g. include("main.txt");).

Benim tahminim ne görüyorsanız bu içeriği ekrana görüntülenen dosyasını dahil olmasıdır. Onları dahil edilme noktası nedir? Sadece bunları kaldırabilir miyim? Eğer gerçekten sadece bunun yerine (ve ekrana etkili echo'ing / baskı onu) dahil olmak üzere bir değişkene içeriği okuma olmalıdır?

Bunları kaldırma ve bu sorunu çözer eğer görmeye çalışın - ama aksi halde, şablon dosyaları içerdikleri ne düşündüğünü içerdiğinden emin olmak için kontrol edin. :)

Ben index.php kodu file.class.php kodu olarak aynıdır, biraz kafam karıştı (olduğu bir hata?). Ama sanırım olsaydı senin sorunun $ dosya> p () fonksiyonu baskı satırında olabilir:

function p($content) {
  $v = $content;
  $v = str_replace('#CONTENT#','',$v);
  print $v;
 }

Bu fonksiyon, onu çağırdığınızda bağlı olarak, gayet iyi. Eğer henüz ekrana çıktı değil bir şey var, ve p () arayın ve bunu body.tpl içeriği geçerseniz, size alıyoruz yanlış HTML çıktısına neden olabilir.

almak firebug ve içerik div ve metne uygulanan stilleri kontrol. Bir position sorun gibi görünüyor.