Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [smarty] strona główna i includowanie
Forum PHP.pl > Forum > Gotowe rozwiązania > Systemy szablonów
pys1986
witam, chciałbym w pliku index.php zrobić includowanie modułów ale niemam pojęcia jak sad.gif chodzi mi o zaincludowanie pliku np. start.php który coś tam robi i wyświetlenie go w szablonie start.tpl ale w pliku intex.tpl. mam nadzieje że dobrze to wyjaśniłem sad.gif
Informatic
Kod
{include_php file="start.php"}

Enjoy.

ps. Oczywiście plik "start.php" sam musi wyświetlać templatkę.
pys1986
no tak, a czy nieda się tego zrobić jakoś bardziej elegancko questionmark.gif bo wtedy w każdym module musze tworzyć nowy obiekt SMARTY sad.gif
Informatic
Tak. Wstawiasz na początku danego pliku który inkludujesz, zamiast tworzenia obiektu smarty:
Kod
global $nazwaZmiennejWKtórejTrzymaszInstancjęSmartyTworzonąWPlikuIndexPeHaPe;

biggrin.gif
pys1986
SUPER biggrin.gif o to mi chodziło, dzięki.
macx
Nie wiem czy dobrze zrozumiałem Twoje pytanie, jeśli tak to czy nie lepiej będzie zrobić to w ten sposób: (po co includować php do szablonu)

plik index.php
CODE
<?php
include_once ('libs/smarty/Smarty.class.php');
$smarty = new smarty();


/* załadowanie odpowiedniego modułu */

$module = (isset($_GET['m']) ? $_GET['m'] : '');

if($module == '') {
$module = 'start'; }

if(file_exists('modules/'.$module.'.php')) {
include('modules/'.$module.'.php');
}
else {
include('modules/start.php');
}

/* koniec ładowania modułu */
?>


potem w pliku nazwa_mudulu.php robisz coś tam z danymi w php i na koniec wyświetlasz templatke.

Takie rozwiązanie pozwoli Ci na załadowanie dowolnego modułu z katalogu modules poprzez np.: ?m=test
unikasz w ten sposób includowania php do tpl.

pozdr.
McX
f4ll3ns3raf1n
witam,
ja z podobnym pytaniem, a mianowicie:
pominmy kwestie bezpieczenstwa danych przekazywanych za pomocą get, chodzi mi o samą ideę.

mam przykladowo plik index.php,
w parametrze "s" jest informacja, jaka strona ma być includowana do konkretnego DIVa, (przykladowo div id="include")
z tym ze, dana strona tez miala by wykorzystywać funkcjonalność szablonów,

przykladowo:
index.php
  1. include($_GET[s].'php');
  2.  
  3. $smarty = new Smarty;
  4. $smarty->assign(toInclude, $_GET[s]);
  5. $smarty->display(index.tpl.php)


strona.php
zawiera jakieś tam skrypty, samo php

index.tpl.php
  1. <div id="include">
  2. {include file={$toInclude}.'tpl.php'}
  3. </div>
  4. </body>


i właśnie sęk w tym, że {include file={$toInclude}.'tpl.php'}, w taki sposób nie mogę....
nie potrafie znalezc odpowiedzi na pytanie, albo slabo wertowalem manual, albo poprostu nie ma tam rozwiązania tego problemu...

ok, poradzilem sobie,
dla potomnych:

index.php => smarty->display(index.tpl)

a w pliku index.tpl sekcja jest, w ktorej jest zczytany include, ktory kieruje do pliku php, a kazdy plik php - do pliku tpl z konkretna zawartoscia :-)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.