Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]konstrukcja strony
Forum PHP.pl > Forum > Przedszkole
Kamil Pietrzak
mam pytanie o konstrukcje strony

mam strukture folderow

public_html/ //index.php .htaccess config.php
public_html/javascript/ //po prostu potrzebne biblioteki js
public_html/css/
public_html/img/
public_html/php/includes //podstrony
public_html/php/functions //biblioteki php
public_html/admin/ //panel admina w a nim taka sama struktura

html mam w bazie danych
na poczatku szkielet html, pozniej poszczegolne elementy jak menu, czy stopka
pozniej wyglad podstron

plik index. pobiera szkieler html a pozniej przy uzyciu str_replace podstawia poszczegolne elementy strony

na ile jest to odbra konstrukcja ?
jak mozna to usprawnic ?
Pawel_W
smarty winksmiley.jpg

http://www.smarty.net/
Kamil Pietrzak
a jaka jest roznica w wykorzystaniu tej biblioteki pomiedzy str_replace
bo z tego co czytalem to smarty sie podobnie wykorzystuje tylko z htmlem w plikach
Spawnm
Proszę nadać sensowny tytuł.
Mephistofeles
Zamiast zamieniać przypisz tekst do zmiennej Smarty (chociaż jego nie polecam, lepszy OPT).
Kamil Pietrzak
tylko nadal nei rozumemiem za bardzo w jaki sposob mi to ulatwia pisanie

index zbudowany na moj sposob wyglada tak:

  1.  
  2. <?php
  3.  
  4. include('config.php');
  5.  
  6. $html = html('html');
  7.  
  8. $menu_links = html('menu_links');
  9. $html = str_replace('(-menu_links-)', $menu_links, $html);
  10.  
  11. $menu_user = html('menu_login');
  12. $html = str_replace('(-menu_user-)', $menu_user, $html);
  13.  
  14. $menu_commercial = html('menu_commercial');
  15. $html = str_replace('(-menu_commercial-)', $menu_commercial, $html);
  16.  
  17. $ending = html('ending');
  18. $html = str_replace('(-ending-)', $ending, $html);
  19.  
  20.  
  21. echo $html;
  22.  
  23. ?>
  24.  


+ zmienna odpowiadajaca za tresc i includujaca odpowiedni plik
np. ?action=register
includuje register.php i to co odpowiada za wyswietlenie formularza rejestracji bedzie w tym pliku, html formularza w bazie
Mephistofeles
W szablonie zrobisz {$ending}, zamiast wstawiać (-ending-), a w PHP $tpl->assign('ending', $ending).
Kamil Pietrzak
chodzi tylko o sposob zapisu ?
przeciez mozna go zawsze zmienic
roznica jest taka, ze nie musze wpisywac w wywolaniu w php '(-', czy tam '{$'
czy zle zrozumialem... ?

nie do konca widze sens korzystania z calej biblioteki, jesli moge skorzytac z funkcji wbudowanej w php

czy trzymanie html w bazie to dobre rozwiazanie? w sumie to nie wiem czemu nei pliki lub jeden plik(w bazie mam ponad 20 rekordow z roznymi elementami html)... ale zawsze moge edytowac funkcje 'html' tak aby mi wyciagala z pliku a nie z bazy
Mephistofeles
Zamiast str_replace nie lepiej będzie dać wstawki PHP w szablonie? Skoro już chcesz wykorzystywać natywne funkcje.
Co do HTMLa, to nie bardzo.
Kamil Pietrzak
ja widze tylko 2 mozliwosci
str_replace('{$ending}', $ending, $html);
lub
include('template.php';

a w template .php
<title><? echo $title; ?></title>

chyba, ze zapis {$title} oznacza tyle samo co echo $title;

co do htmla
moze dac go do jednego pliku i kazdy element przypisac do zmiennej

$ending = '
<div id="ending">all rights reserved</div>
';

if($show_ending = 'yes') {echo $ending;};
Mephistofeles
Klamry {} to element Smarty i kilku innych systemów szablonu, a służą najczęściej za echo.
Kamil Pietrzak
ale w sumie to nadal calosc zostanie przepuszczona przez str_replace i nie bedzie lzejsza dla serwera ?
Mephistofeles
Nie wiem, nie interesowała mnie do tej pory wewnętrzna budowa Smarty. Jeśli chcesz odciążyć serwer, to jak mówiłem użyj wstawek PHP w kodzie szablonu zamiast zamieniać tekst.
Kamil Pietrzak
nei napisalem poki co portalu ktory by zagial serwer... ale wiadomo... zawsze lepiej lzej snitch.gif

mysle o tym zeby dac wszystkie czesci htmla do jednego pliku, tylko w roznych zmiennych, z drugiej strony jak bedzie tego duzo to lepiej juz bedzie w dziesiatkach plikow(burdel) lub w mysql(dodatkowe obciazenie na drodze mysql-strona i trudniejszy dostep

co do samych smartow... nie widze sensu
sam zrobie to tak samo a nie musze uzywac biblioteki skryptow
erix
Cytat
mysle o tym zeby dac wszystkie czesci htmla do jednego pliku, tylko w roznych zmiennych

Z lekkością naprawdę to nie ma nic wspólnego... Tylko pamięć zapychasz; przecież nie potrzebujesz wszystkich szablonów przy generowaniu jednej podstrony.

Zawsze zostaje Ci XSLT.
Kamil Pietrzak
mozna narobic dziesiatki plikow i jechac na str_replace
albo pozostac przy bazie...

z tego co widzialem to np. taka joomla miesci szablon w 4 plikach, ale nei widzialem zadnego skomplikowanego szablonu

wszyscy do okola uzywaja tych smartow, co w tym jest ?
Mephistofeles
Czemu tak kurczowo trzymasz się tego str_replace? Nie uznajesz konstrukcji jak <?php echo $ending ?> która będzie najprawdopodobniej szybsza niż twoje replace? Nie rozumiem twojego myślenia na ten temat.
Kamil Pietrzak
ok
moge dac tak jak piszesz
mozna chyba nawet zapisac jakos tak <?=$title?> w przypadku jednej zmiennej
no i daje rade... natomiast to nei koniec konstrukcji

zastanawiam sie tez nad samymi skryptami wykonywanymi
chyba napisze wiersz polecen a pozniej zastapie go ladna oprawa opierajaca sie na tej samej konstrukcji
ale to juz tak na marginesie... po prostu zaczne juz pisac...
erix
Cytat
mozna narobic dziesiatki plikow i jechac na str_replace

Kurza stopa, nie widzisz, że sam pod sobą dołek kopiesz? Nawet kilka razy:
  1. rezultat wypluwanej strony musisz kopiować do pamięci (a jak przyjdzie Ci do głowy wypisać kilkaset tysięcy rekordów; hipotetycznie) - prędzej czy później ujrzysz komunikat o błędzie przy próbie zaalokowania więcej niż wynosi limit tongue.gif
  2. kopiujesz drugi raz w pamięci (str_replace musi na czymś operować; aczkolwiek mogę się tu mylić)
  3. katujesz niepotrzebnie procesor w poszukiwaniu ciągu znaków do podmiany
  4. wymuszasz w niektórych przypadkach wykorzystanie funkcji buforowania wyjścia


Jeszcze za mało argumentów? Jak pisałem pierwsze skrypty pod CMS-y, to też popełniałem ten sam błąd, ale zaczynając myśleć o zużywanej pamięci, puknąłem się mocno w głowę.

Cytat
zastanawiam sie tez nad samymi skryptami wykonywanymi

A po polsku? Wykonywanymi przez kogo/co?
Kamil Pietrzak
chodzilo mi juz o same skrypty zarzadzania trescia, nie o budowe

ok, zastosuje echo i tez bedzie, dla mnie to niewielka roznica, a skoro serwer ma zdychac...
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.