[Task] System szablonów

0

Piszac caly kod serwisu powinismy pamietac o rozdzieleniu wlasciwego kodu programu od kodu HTML stanowiocego wyglad strony. Po co? Aby wszystko bylo czytelnijsze, aby zmiena wygladu strony nie wiazala sie z grzebaniem w kodzie. Z tego tez powodu proponuje ustalenie systemu szablonow.

Szablony niech beda sie znajdowac w katalogu /templates serwera. Plki szablonow to zwykly kod HTML, tyle, ze posiadajacy rozszerzenie *.tpl. Programy, skrypty beda ladowac odpowiedni szablon i w odpowiednie miejsca wstawiac konkretne wartosci tak, aby zapewnic efekt stron dynamicznych. Z tego tez powodu w szablonach powinny znajdowac sie komentarze HTML - np. ktory to komentarz zostanie zastapiony przez odpowiedni tekst.

Zarys skryptu oraz przykladowe szablony wrzuce jutro na serwer...

0

Taki system szablonów można by zrobić na obiektach. Wystarczy kilka metod i trzy właściwości, tablica, robocza zmienna tekstowa i zmienna plikowa:

Najpierw wczytanie (metoda LoadTmpFromFile czy coś takiego):

  1. Wczytanie pliku.
  2. Utworzenie tablicy podmienialnych elementów szablonu (zrobionych, tak jak napisał Adam, jako komentarze HTML, z tekstem poprzedzonym np. "TMP_"), w jednej kolumnie nazwa, w drugiej wartość. Z tej tablicy nie korzystałoby się bezpośrednio przy podstawianiu tekstu, zaraz powiem dlaczego.
  3. Zamknięcie pliku.

Następnie modyfikowanie (praca tylko na tablicy, plik jest zamknięty), za pomocą metody SetVar z dwoma parametrami - nazwa zmienianego elementu szablonu i nowa wartość - metoda odszukuje element i wstawia tę wartość.

Na koniec generowanie wyniku (metoda Make), wczytuje ponownie plik, wrzuca go do zmiennej roboczej, zamienia wzystkie pola szablonu na wartości w tablicy i printuje (ewentualnie można by zrobić wersję metody zwracającą gotowy tekst jako wynik)

Z regóły dla jednego pliku wystarczyłby tylko jeden obiekt, ale gdyby trzeba było pracować na kilku szablonach jednosześnie (np. żeby umieścić jeden w drugim), można zrobić kilka kopii obiektu i tyle.

0

Myślę, że rozwiązanie Adama jest słuszne. Nie wiem jeszcze jak to wszystko wygląda, ile jest szablonów (mam nadzieję, że uda się zrobić ich minimalnie mało). Do tego mam nadzieję ze jest jeden plik CSS, bez styli wstawianych w sam HTML.

0

Ja też myślę że to słuszne rozwiązanie. po prostu jeśli ma z tych szablonów korzystać dużo ludzi tworzących serwis, ich obsługa musi być prosta i szybka, żeby nie trzeba było połowy czasu poświęcać na szablony podczas robienia jakiegoś kawałka serwisu. Moje rozwiązanie chyba spełnia te warunki, chociaż nie mówię, że jest najlepsze, może ktoś wpadnie na lepszy pomysł.

0

Tak, podobnie my_nick, to dziala obecnie. I juz nawet dodalem na serwer lekko poprawiony plik - zobacz w dziale /dev plik parse.php

Teraz dodam takze dokumentacje...

0

Właśnie go przejrzełem, faktycznie podobnie, ale jest trochę zbyt, ehmmmm... sztywny... Mi chodzi o coś takiego, żeby wczytywał wszystkie "podmienialne" elementy, niezależnie od ich nazwy i położenia i tworzył tablicę, to by pozwalało na dużą elastyczność. Twój parser ma wprogramowaną obsługę tytułu opisu strony itepe.

0

Nie, nie, nie. Nie tylko takie ma mozliwosci. Oczywiscie jest mozliwosc dodawania wlasnych elementow. Wyglada to tak...

W szablonie mozna dodac np. fragment:

Nastepnie w jakimkolwiek skrypcie:

!

W tym momencie w szablonie komentarz zostanie zamieniony na 'Jakas wartosc'.

Na serwerze, w katalogu /dokumentacje znajduje sie takze opis calej klasy Templates. W razie pytan [b]zwiazanych z owa klasa [/b]prosze pisac na gg/tlen lub na e-maila.

0

A, fakt. Nie przyjrzałem się. Kod w językach C-podobnych jest dla mnie trudniejszy do analizy niż w pascalopodobnych i czasem coś mi się wymsknie...

0

Ja zerkne na to w tygodniu i zobacz o co biega, bo zanim bedziemy cos tworzyc, musimy poznac strukture

0

Dzisiaj wlasnie wstawilem do katalogu /templates przykladowy szablon - index.tpl. Nie jest jedynie przykladowy, lecz bedzie najprawdopodobniej stanowil takze glowny szablon dla serwisu. Prosze zerknac i - ewentualnie poprawic, jakby co :) Szablon jest wziety z obecnej wersji serwisu. Po sciagnieciu na dysk i uruchomieniu tabeli moga wydac sie "rozjechane", lecz najprawdopodobniej po dodaniu srodkowej tabeli z newsami wszystko sie poprawi ;)

Do prawidlowego sciagniecia szablonu nalezy sciagnac takze poprawione wersje plikow require.php oraz parse.php (v. 0.2), oraz plik CSS (takze ew. do poprawy :)) - html.css (v. 0.1) Po sciagnieciu wszystkich plikow (oraz pliku ZIP z obrazkami) nalezy wszystko umiescic w jednym katalogu serwera. Nalezy takze uwazac na zachowanie poprawnej struktury katalogow. Oznacza to, ze pliki require.php, html.css oraz parse.php powinny znalezc sie w glownym katalogu serwera. W glownym katalogu serwera powinien znalezc sie katalog /templates w ktorym nalezy umiescic szablon index.tpl. Do katalogu /obrazki nalezy takze rozpakowac archiwum ZIP.

Przykladowe wykorzystanie szablonu index.tpl:

0

<font color="green"><link rel="stylesheet" type="text/css" href="<!--SITE_URL-->html.css"></span>

To może tutaj wszędzie dawać już gotowy adres http zamiast wstawienia SITE_URL - potem przy robioniu znacznie ułatwi to pracę - przynajmniej trochę.

0

A to specjalnie tak pomyslane :) Bo np. jezeli sobie sciagniesz caly kod zrodlowy na swoj dysk to wystarczy podmienic w pliku require.php stala SITE_URL na http://127.0.0.1 i juz wszystkie linki sa podpiete pod Twoj lokalny serwer. Rozumiesz?

0

Hmm czyli rozumiem że to tylko na potrzeby Coyote program, a nie serwisu. ??

0

Hm... no po calej "kompilacji" szablonu w miejsce zostanie wstawione http://4programmers.net/ Jezeli jednak kod zrodlowy uruchomic na swoim lokalnym serwerze, na swoim dysku to w miejsce zostanie wstawione 127.0.0.1. Dzieki temu wszystkie linki beda dzialac...

0

Hmm mam zastrzeżenia małe co do następującej rzeczy w pliku index.tpl:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<meta http-equiv="Content-Language" content="pl">
<!SITE_META-->
<!--SITE_DESCRIPTION-->
<!--SITE_KEYWORDS-->
<title><!--SITE_TITLE--></titlegt;

Czy nie lepiej zrobić tak jak jest w kontrukcji co do umieszczenia pliku CSS. Chodzi mi o to, aby przygotować w tym szablonie już wszystkie "MET`Y", a potem wstawiać już tylko wartości , np:

<meta name="Description" content="<!--SITE_DESCRIPTION-->">

I tak samo z pozostałymi, aby do szablonu było wstawiane minimalnie mało kodu HTML, a jak najwięcej samych wartości. Wtedy będzie się łatwiej w tym połapać.

Druga sprawa to konkurs na logo 4p. To jak - robimy ???

AHA No i jeszcze jedna sprawa - nie moge ściągnąc obrazków (wymagane hasło) - nie wiem czemu - używam DAP`a 5.3

0
<quote>

1 użytkowników online, w tym zalogowanych: 0, gości: 1