PHP-шаблон сайта с ссылками на file_get_content - PullRequest
0 голосов
/ 31 марта 2010

Хорошо, у меня есть шаблонный скрипт, созданный для меня моим другом.Я включу все имена файлов.

ОК, поэтому не работает файл_get_contents, который не захватывает контент

(1 Я не знаю, где этот контент должен быть размещен.

(2 Я хочу, чтобы он был помещен в каталог, чтобы, если я изменил шаблон, область, в которой находится содержимое, была такой же.

(3 Я пытаюсь получить file_get_contents для загрузки ссылок? = About? = services и т. д. в body.tpl в содержимом div, которое я указал с # CONTENTS #

(4 Дерево каталогов выглядит следующим образом

 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'])){
    // 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>';
    }
}
?>

, если кого-то можно обрезатьэто просто шаблон, необходимый код, и файл получает содержимое.

/ * 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 ]

2 голосов
/ 31 марта 2010

Насколько я понимаю, ваш контент находится внутри about.php (например).

этот файл находится в каталоге "contents": contents / about.php

команда

include('about.php')

загрузит и выполнит скрипт about.php inline.Таким образом, он напечатает свое содержимое именно там, где выполняется вызов include .То, что вы видите, должно выглядеть следующим образом:

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

Если вы хотите, чтобы $ content имел правильное значение, измените строку

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

на

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

thisбудет использовать технику буферизации объектов, чтобы PHP понял, что он не должен отображать содержимое файла встроенным, а вместо этого помещает его в переменную $ content.

Надеюсь, это поможет!

1 голос
/ 31 марта 2010

шаблонный скрипт, созданный вашим другом, наполнен вспомогательными функциями, которые помогут вам с шаблонизацией вашего сайта.

В настоящее время, я думаю, у вас есть 2 проблемы:

  1. расположение шаблонов
  2. с использованием шаблонного механизма

1. расположение шаблонов

В настоящее время сценарий вашего друга гласит

var $path = "templates/clean";

, что означает, что вы должны создать папку templates и папку templates / clean в каталоге, куда вы положили index.php и поместить ваши шаблоны (header.tpl, body.tpl, footer.tpl) внутри.

2. используя шаблонный механизм

Попробуйте использовать

<?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 находит вхождение # CONTENT # в предварительно загруженном body.tpl и заменяет его определенным содержимым (в данном случае «Hello World»)

Надеюсь, это поможет вам в этом! скажи мне, если это работает. Джером

0 голосов
/ 01 апреля 2010

Я думаю, что ваша проблема может быть на линии

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

Следует читать

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

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...