Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SMARTY] Odwoływanie się do .tpl
GreenGo
post
Post #1





Grupa: Zarejestrowani
Postów: 265
Pomógł: 4
Dołączył: 30.08.2004

Ostrzeżenie: (0%)
-----


Witam.
Mam mniej więcej taka strukturę katalogów:

smart/libs/Smarty.class.php
smarty/page/index.php
smarty/page/template/index.tpl


w index.php mam wczytanie klasy Smarty i odwołanie się do index.tpl. Wszystko działa ładnie ale jak przeniosę plik index.php do np.
smart/page/modules/index.php
i oczywiścię zmienie ścieżkę do klasy Smarty to już mi nie czyta pliku index.tpl :/ dlaczego tak jest ?

Z góry dzięki za pomoc, pozdrawiam.

Ten post edytował GreenGo 25.03.2008, 18:41:15
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
tiraeth
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Po pierwsze, zdecyduj się. Katalog ze Smarty to smart, smarty czy Smarty?

Po drugie, zarówno require jak i include dołącza kod PHP. Dla przykładu:

Kod
- Directory
-- Subdirectory
---- index.php
-- setup.php
- Directory2
-- config.php


Jeśli w pliku setup.php ustawisz: include('../Directory2/config.php') i otworzysz w przeglądarce http://localhost/Directory/setup.php, to poprawnie załaduje się plik config.php.

Jeśli potem plik setup.php dołączysz do index.php z Directory/Subdirectory, to PHP będzie szukało config.php w Directory/config.php, czyli ../ względem Subdirectory. Te dwie kropeczki oznaczają katalog wyżej, tak jak w linii komend (tudzież w konsoli) wpisujesz cd .., aby przejść do foldera wyżej.

Najlepszym rozwiązaniem jest zastosowanie takiego myku:
Directory/Subdirectory/index.php
  1. <?php
  2. /* Sciezka do katalogu glownego aplikacji
  3.  * ----
  4.  * /Directory/Subdirectory/ ---> /Directory/ ---> /
  5.  */
  6.  $sRootDir = '../../';
  7.  include( '../setup.php' );
  8.  // Mozna takze:
  9.  // include( $sRootDir . 'Directory/setup.php' );
  10. ?>

Directory/setup.php
  1. <?php
  2.  if ( !isset($sRootDir) ) {
  3. /* Jesli nie ustawiono przed zaincludowaniem tego pliku nigdzie zmiennej $sRootDi
    r, to ja ustawimy, tak aby pasowala do obecnej sciezki
  4.    * ----
  5.    * /Directory/ ---> /
  6.    */
  7.  $sRootDir = '../';
  8.  }
  9.  include( $sRootDir . 'Directory2/config.php' );
  10. ?>

Directory2/config.php
  1. <?php
  2. echo 'Hello world!';
  3. ?>


Teraz zadziała, zarówno jak w przeglądarce wywołasz http://localhost/Directory/setup.php jak i http://localhost/Directory/Subdirectory/index.php. Wynikiem powinno być Hello World!.

Pisane z palca, powinno działać. Jak pomogło zrozumieć - jest taki przycisk obok posta...
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 9.10.2025 - 03:51