[ _CaRtMan_ @ 26.08.2008. 08:57 ] @
Pozdrav. U varijabli (putem GET metode pisem naziv file-a)

npr.

?param=home.php
?param=forum.php
i sl.

Kako sad da, ako sam u Smarty-u u index.tpl napisao:

{$inc} da tu ide include onog file-a koji je u varijabli.

Probao sam ovako:

Code:

<?php
// Poziva klasu za template
require 'libs/Smarty.class.php';
// Poziva klasu za postavke neke
require 'libs/Settings.class.php';
$S = new Settings; // Settings ide extends Smarty
// Učitava     

$S->assign("inc", include("home.inc.php"));  // za sad statično, kasnije bih ucitavao iz ?param=..
$S->display("index.html");    
?>


I na vrhu mi to include...

Zahvalan.
[ kazil @ 26.08.2008. 09:16 ] @
Ne volem smarti, al aj... :)

O'ma da napomenem, ovo jos nisam radio, al po nekoj logici stvari i proucavanjem manuala, trebalo bi da radi.

Code:

<?php

$param = $_GET['param']; // tipa "home.inc.php"
...

$S->assign("inc",$param);
...


tpl file:
Code:

{include_php file=$inc}
<!-- ili -->
{include file=$inc}


Nije istina da si presao smarty manual.

Cheers!
[ _CaRtMan_ @ 28.08.2008. 18:26 ] @
E super radi. Hvala. :)
[ kazil @ 28.08.2008. 18:31 ] @
Kazem ja... Procitas manual i da vidis :)
[ _CaRtMan_ @ 29.08.2008. 17:04 ] @
heh probao sam ovako :)


dodao u neku svoju klasu koja naslijedjuje smarty klasu

function add_template($search, $template){
$template = "{include_php file=\"$template\"}";
$this->assign($search, $template);
}

i tamo ukucam

$param = $_GET["param"];
$S->add_template("inc", $param);

u tpl upisem {$inc} i ispise mi:

{include_php file="home.php"}

a trebalo bi valjda da ide include tog file-a

heh :)



da ne pisem

$S->assign("inc",$param);

pa tamo

{include file=$inc}

ovako bi lakse bilo, alii... :)
[ ColdKeyboard @ 29.08.2008. 17:41 ] @
Zar ti nije bilo jednostavnije da tu gdje zelis include tog fajla da radis

{include file="$smarty.get.file"}

Ili u phpu da uradis

$fajl = $_GET['file'];
$smarty->assign('inc', $fajl);

i onda {include file=$inc}


Pozdrav,
Sale
[ _CaRtMan_ @ 29.08.2008. 17:58 ] @
Nije :-). Ovako bi bilo

$S->add_template("nesto", $fajl);

I tamo samo:

{$nesto}

Pozdrav.
[ kazil @ 29.08.2008. 20:11 ] @
Opet, mozda nije tacno ovo sto cu napisati, but here goes.

Mislim da ne mozes kako si zamislio, a razlog bi bio tome kako Smarty kompajlira tamplate. Po nekoj logici stvari nije mu isto ispisivanje promenljive i include-ovanja file-a. Po mojoj logici, trebalo bi prvo da odradi include-ovanje, pa posle da dodeli promenljive, jer mozda u tom include-ovanom file-u mora isto da ispise neke promenljive... A kad on tebi ispise {include $file} on se vise ne vraca na include, nego siba dalje sta mu je sledece...

Cheers!
[ _CaRtMan_ @ 29.08.2008. 20:33 ] @
Hehe. ma hajd to i nije tako bitno, vec koliko je bitan slijedeci problem.

index.php

Code:

<?php
// Poziva klasu za template
require 'libs/Smarty.class.php';
// Poziva klasu za postavke neke
require 'libs/Settings.class.php';
$S = new Settings;
// Učitava     
    
        // Title, treba dodati i desc i keywords
    $S->assign("title", $S->title);

    $param = $S->getvar("param");    

    if($param==""){
    $param = "home.inc.php";
    }

    if(!file_exists("modules/plugin/".$param)){
    $param = "not_found.inc.php";
    }
    
    $S->assign("inc", "modules/plugin/".$param);
    $S->add_html_template("login_box", "login_box.html");
    $S->display("index.html");    
?>


settings.class.php

Code:

<?php
class Settings extends Smarty{

    public $title;
    public $keywords;
    public $desc;
    
    
    
    // Funkcija za dobijanje varijabli $_GET metodom !
    function getvar($var){
    $get = addslashes($_GET["$var"]);
    return $get;
    }    
    
    function add_html_template($search, $template){
        $this->assign($search, file_get_contents("modules/modules_html/".($template))); // ovo radi :)
    }
    
}
?>


home.inc.php

Code:

<?php
class Content extends Settings {

   function template()
   {
    // Title, keywords i description
    $this->title = "Početna stranica";
    $this->keywords = "Cms, content management system";
    $this->desc = "Početna stranica CMS Portala";
    
    $this->display("home.html");
    
   }

}

$content = new Content;
$content->template();
?>


Ne kontam sad kako bih kad otvorim

index.php?param=home.inc.php

prikazao title, description i keywords..


Ja sam probao u index.html upisati {$title} ali nista ne prikazuje. trebam nekako iz home.inc.php staviti u ovu public varijablu ili nesto tako ? :S