Autor Zpráva
Anonymní
Profil *
Ahoj, dělám, plichtím, tvořím si vlastní redakční systém s šablonami:

Takhle to má adreáře:


+mujrs
-index.php
-sablony
-index.page
-item.page
-etc
-config.php
-db.php
-page.php


index.php

<?php
include './etc/config.php';
include './etc/page.php';
include './etc/db.php';


$kategorie = $_GET["cat"];
$clanek = $_GET["item"];

// Zjisteni co ctenar vlastne chce

if (($kategorie) && ($clanek)):

echo "clanek-permalink";

elseif ($kategorie):

$query = MySQL_Query('SELECT id, url, kategorie, cat-url, DATE_FORMAT(date, "%d.%m.%Y") AS date, name, text FROM item WHERE cat = "'.$kategorie.'" ORDER BY id DESC LIMIT 10;');

if (MySQL_Num_Rows($query)!= 0)
{
while ($articles = MySQL_Fetch_Array($query)) item($articles);
}
else
{
echo "404";
}
else:
$query = MySQL_Query('SELECT id, url, kategorie, DATE_FORMAT(date, "%d.%m.%Y") AS date, name, text FROM item ORDER BY id DESC LIMIT 10;');
while ($articles = MySQL_Fetch_Array($query)) item($articles);

endif;


?>


config.php:

<?php

// db
$config['dbserver'] = 'localhost';
$config['dbuser'] = 'root';
$config['dbpass'] = 'root';
$config['dbname'] = 'blog';

// sablony
$config['sablona'] = './sablony/index.page';
$config['item'] = './sablony/item.page';

// login
$config['author'] = 'admin';
$config['password'] = '123456';

?>


page.php

<?php

function item($articles)
{
global $config;
$sablona = $config['item'];
$item = fopen($sablona,'r');
$item = fread($item, FileSize($sablona));
$item = Str_Replace('$TEXT$', $articles['text'], $item);
$item = Str_Replace('$NADPIS$', $articles['name'], $item);
$item = Str_Replace('$DATUM$', $articles['date'], $item);
$item = Str_Replace('$SEKCE$', $articles['kategorie'], $item);
echo $item;
};

?>







Myslíte že takovej systém je prasárna ?
A teď tedy problém:

Dole vidíte šablony. Systém má fungovat tak:
1.zjistí co kdo chce
2.to co umí udělá jinak 404
No, tedy chci nove prispevky - (na indexu)
tak se vyberou z databaze a poslou na funkci ktera je po 1 vypise, ta funkce item() je volana cyklem. Jenomže já chci vložit její výsledek do šablony index.page misto toho $PRISPEVKY$. Nevim jak to udelat kdyz volam funkci cyklem.
Proste $PRISPEVKY$ v te sablone potrebuju nahradit treba 10prispevkama ktere udelala ta funkce z te jine sablony. Díky, zkuste poradit.


index.page


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>$WEBLOG_TITLE$</title>
<style media="all" type="text/css">@import "style.css";</style>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<meta http-equiv="Cache-control" content="no-cache">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="-1">
</head>

<body>
<div id="main">
<div id="header"><h1>Weblog</h1></div>

<div id="leftmenu"><h2>Menu</h2>
<ul>
<li><a href="index.html">Úvod</a></li>
<li><a href="admin/login.php">Login</a></li>
<li><a href="admin/reg.php">Registrace</a></li>
</ul>
</div>

<div id="content">
$PRISPEVKY$
</div>

<div id="rightmenu"><h2>Archiv</h2>
<ul>
*****
</ul>
<br>
<p class="validation"><a href="http://validator.w3.org/check/referer"><img border="0" src="http://www.w3.org/Icons/valid-html40" alt="Valid HTML 4.0!" height="31" width="88"></a></p>
<p class="validation"><a href="http://jigsaw.w3.org/css-validator/"><img style="border:0;width:88px;height:31px" src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!"></a></p>
</div>

<div id="footer"><p>generated by myrs</p></div>

</div>
</body>
</html>


item.page

<style>
/* ------------- Formatovani prispevku ------------- */

.prispevek { margin-bottom: 15px; padding: 0; }

/* Vrchni cast */

.vrsek {
background-color: #FFCFBD;
padding: 0 5px 0 5px;
margin: 0 5px 0 30px;
height: 25px;
}
.vrsek .nadpis {
float: left;
margin-top: 6px;
font: bold 11px Verdana, serif;
}
.vrsek .datum {
float: right;
margin-top: 7px;
font: normal 10px Verdana, serif;
}
.vrsek a { text-decoration: none; color: #000; }
.vrsek a:hover { text-decoration: underline; }

/* Telo prispevku */

.prispevek-text {
clear: left;
font: normal 0.8em Verdana, serif;
line-height: 1.6;
padding: 8px 10px 5px 35px;
}
.prispevek-text p { margin: 4px 0 4px 0; padding: 0; }

/* Elementy uvnitr prispevku img, code, seznamy, citace a jine */

.obrazek {
float: left;
padding: 4px;
margin-right: 5px;
background-color: #fff;
border: 1px solid #000;
}
code {
font: normal 1.1em "Courier New", serif;
display: block;
margin: 5px 0px 5px 0;
padding: 5px;
color: #000;
background: url('images/code.png') no-repeat right bottom;
border: 1px solid #FFCFBD;
line-height: 1.5;
text-indent: 0;
}
.prispevek-text ul { margin: 15px; padding: 0; }

.prispevek-text li {
list-style: disc inside;
margin: 5px 0 5px 0;
padding: 0;
font: normal 1.1em Arial, serif;
}

/* Link na komentare */

.komentare { margin-top: 8px; text-align: right; }

.komentare a {
height: 15px;
background: url('images/bublina.png') no-repeat left center;
padding: 0 0 0 20px;
color: #000;
text-decoration: none;
font: normal 12px Verdana, serif;
}
.komentare a:hover { text-decoration: underline; }
</style>

<div class="prispevek">
<div class="vrsek">
<div class="nadpis"><a href="">$NADPIS$</a></div>
<div class="datum"><a href="">$SEKCE$</a> | $DATUM$</div>
</div>
<div class="prispevek-text">
$TEXT$
<div class="komentare"><a href="">Komentáře (55)</a></div>
</div>
</div>

halogan
Profil
Objektove by to slo udelat tak, ze bys to tam mohl ukladat, takhle se zbytecne budes babrat s globalnima promennyma.

Ke kodu by bylo vice pripominek, tak alespon jednu:
$item = fopen($sablona,'r');


$item = fread($item, FileSize($sablona));

file_get_contents je opravdu vhodnejsi.
Anonymní
Profil *
Jo, a nejaka rada, klidne i s tema globalnima promenejma, ukladat se mi to nechce. A co je to za funkci ?
halogan
Profil
php.net/file_get_contents

STFW!
krteczek
Profil
halogan: Už zase??? q:o)

STFW!=>přečti si už konečně ten zatracený manual! (to je ta slušnější verze)
halogan
Profil
krteczek: Nejde jen o manual, jde o hledani na internetu.
krteczek
Profil
halogan: jasně, strýček GOOOOOOOOGLE to ví!!! a proto se ho zeptej... nj ale co když ho sem google přivedl??? q:o)
krteczek
Juan
Profil
<?php
class lts_template{
var $lts_tags;
var $lts_template;
var $only_parse_php_file;

/** Constructor tridy lts_template
* @param string $template - cesta k sablone
* @param array || string tags - nazvy tagu ktere maji byt prepsany
* @param string $only_parse_php_file - urci zda maji byt parsovany pouze soubory s koncovkou php (true) nebo jakykoliv soubor (false)
* @copyright Jan Jílek, johny.vk@gmal.cz
*/
function lts_template($template, $tags, $only_parse_php_file = false){
$this->lts_tags = $tags;
$this->lts_template = join("", file($template));
$this->only_parse_php_file = $only_parse_php_file;

$this->lts_replace();
$this->lts_print_template();
}

//Parsovani souboru
function lts_parse($file){
//zjisteni koncovky
$ext = explode(".", $file);
$ext = $ext[count($ext)-1];

ob_start();
if($this->only_parse_php_file == false){
include($file);
$buffer = ob_get_contents();
}
elseif($this->only_parse_php_file != false && eregi("php", $ext)){
include($file);
$buffer = ob_get_contents();
}
else{
$file = join("", file($file));
$file = eregi_replace("<\?php", "&lt;?php", $file);
$file = eregi_replace("<\?", "&lt;?", $file);
$buffer = $file;
}
ob_end_clean();

return $buffer;
}

//Nahazeni tagu v sablone textem
function lts_replace(){
foreach($this->lts_tags as $tag => $key){
$data = (file_exists($key)) ? $this->lts_parse($key) : $key;
$this->lts_template = eregi_replace("{".$tag."}", $data, $this->lts_template);
}
return $this->lts_template;
}

//vytisknuti vystupu
function lts_print_template(){
echo $this->lts_template;
}
}

//Pouziti
new lts_template("./ahoj.html",
array( "title" => "Ahoj",
"menu" => "br.php"
)
);

?>

Priklad html souboru ahoj.html:

<html>
<title>
{title}
</title>
<body>
{menu}
</body>
</html>
Toto téma je uzamčeno. Odpověď nelze zaslat.