Forum forumweb.pl Strona Główna  
Oficjalne forum serwisu: kurshtml.boo.pl
Konkurs
Konkurs
   Regulamin
Regulamin
   FAQ
FAQ
   Szukaj
Szukaj
   Użytkownicy
Użytkownicy
   Grupy
Grupy
   IRC/czat
IRC/czat
   Facebook
Facebook
   Rejestracja
Rejestracja
 
Zmień swój profil  ::  Zaloguj się, by sprawdzić wiadomości  ::  Zaloguj



Zobacz następny temat
Zobacz poprzedni temat
Odpowiedz do tematu  Forum forumweb.pl Strona Główna » PHP
Autor Wiadomość
neo007
Pomocnik
neo007

Płeć: Mężczyzna
Dołączył(a): 08 Lut 2005
Posty: 6341
Pomocy: 46
Post Wysłany: 07.01.2007 16:09
xt (xhtml templates) - system szablonów by neo
Zacytuj zaznaczone   ^

Witam!

Chciałem obwieścić, że projekt umarł śmiercią naturalną.

Chciałem wszystkich Was zaprosić do udziału w projekcie xt, czyli xhtml templates.

Jest to system szablonów, który nie wymaga nauki żadnego szablonowego pseudo-języka - dodawanie poszczególnych wartości opiera się na id i klasach. Inną zaletą jest pełne wsparcie dla xhtml, wysyłanego przeglądarkom, które go rozumieją jako application/xhtml+xml. System szablonów promuje całkowitą wolność od brudzenia htmlowych szablonów pseudo-językiem oraz pełną poprawność xml.

Pomysł skryptu oczywiście narodził się na naszym forum Wink

Na razie dokumentacja jest dość uboga, lecz mam nadzieję, że umożliwi podstawową funkcjonalność. (zamknięto ze względu na wandalizm)

Skrypt jest w początkowej fazie rozwoju, zatem zapraszam wszystkich programistów php do jego testowania, zgłaszania błędów, poprawek i usprawnień.

Nie ukrywam, że bardzo liczę na wsparcie ze strony forum przy rozwoju systemu xt. Liczę tutaj również na administrację i grono moderatorów.

Bardzo chętnie przyjmę wszelką pomoc, szczególnie jeśli chodzi o optymalizację kodu. Byłbym niezmiernie szczęśliwy, gdyby ktoś wykonał szablon dla systemu, jakieś rozpoznawalne logo.

Znane problemy:
  1. kodowanie znaków - konieczność korzystania z utf-8
  2. obsługa błędów, a raczej jej brak
  3. uboga dokumentacja

 

_________________
zamiana walut


Ostatnio zmieniony przez neo007 dnia 13.07.2009 15:06, w całości zmieniany 3 razy
  
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora  
Numer Gadu-Gadu
5878983
 
 
Jabber
 
 
 
 
Numer ICQ
MozillaLinux1280x1024
wig
Użytkownik
wig

Płeć: Mężczyzna
Dołączył(a): 27 Sie 2006
Posty: 2723
Post Wysłany: 07.01.2007 16:13
Zacytuj zaznaczone   ^

A mógłbyś trochę szerzej wytłumaczyć na czym to polega? Kiedy pierwszy raz zobaczyłem ten system szablonów to naprawdę zupełnie nie wiedziałem co to ma być.
Czy to ma być alternatywa dla Smarty itp.?
 

_________________
wig heil 2009
  
Zobacz profil autora Wyślij prywatną wiadomość  
 
 
 
 
 
 
 
 
FirefoxWin981024x768
neo007
Pomocnik
neo007

Płeć: Mężczyzna
Dołączył(a): 08 Lut 2005
Posty: 6341
Pomocy: 46
Post Wysłany: 07.01.2007 16:19
Zacytuj zaznaczone   ^

Tak, można to uznawać za alternatywę Smarty. Działa bardzo podobnie, jednak sam system wstawiania jest zupełnie inny, np. mając taki szablon, zapisany jako szablon.html
Kod:   Zaznacz   Podgląd (X)HTML   Uruchom   Zapisz
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
>
<
html xml:lang="en">

<
head>
    <
title>Przykładowa strona.</title>
    <
meta http-equiv="content-type" content="text/html;charset=utf-8">
</
head>

<
body>

<
p>Hello world!</p>

<
p id="akapit">To jest przykładowy akapit.</p>

<
p class="akapit">Ten akapit ma klasę <code>akapit</code></p>

<
p class="akapit">Ten akapit ma również klasę <code>akapit</code></p>

</
body>
</
html>


Piszemy kod php:
Kod:   Zaznacz   Podgląd (X)HTML   Uruchom   Zapisz
include('xt.class.php');
$t=new xt('szablon.html');
$t->add('akapit', 'Jakaś przykłądowa wartość');
$t->display();


Do akapitu o id="akapit" zostanie dopisana treść podana za drugi argument funkcji add.

Chcę raz jeszcze przeprosić za dość ubogą dokumentację, postaram się jak najprędzej ją uzupełnić.
 

_________________
zamiana walut
  
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora  
Numer Gadu-Gadu
5878983
 
 
Jabber
 
 
 
 
Numer ICQ
MozillaLinux1280x1024
wig
Użytkownik
wig

Płeć: Mężczyzna
Dołączył(a): 27 Sie 2006
Posty: 2723
Post Wysłany: 07.01.2007 16:24
Zacytuj zaznaczone   ^

Uhm, ciekawe. Ja się na programowaniu zorientowanym obiektowo w ogóle się nie znam, ale
neo007 napisał(a):
Byłbym niezmiernie szczęśliwy, gdyby ktoś wykonał szablon dla systemu, jakieś rozpoznawalne logo.

Może się postaram. Na pewno nie będzie to, co jest szczytem Twoich marzeń, ale jednak... Wink
 

_________________
wig heil 2009
  
Zobacz profil autora Wyślij prywatną wiadomość  
 
 
 
 
 
 
 
 
FirefoxWin981024x768
neo007
Pomocnik
neo007

Płeć: Mężczyzna
Dołączył(a): 08 Lut 2005
Posty: 6341
Pomocy: 46
Post Wysłany: 07.01.2007 16:34
Zacytuj zaznaczone   ^

Wigrom, wezmę to pod uwagę tworząc dokumentację - nie wszyscy muszą znać programowanie obiektowe, racja. Ale jest to niezmiernie proste:
Na początku tworzysz obiekt:
Kod:   Zaznacz   Podgląd (X)HTML   Uruchom   Zapisz
$nazwa = new xt( nazwa_szablonu );

Następnie $nazwa staje się obiektem. Wywołujemy jego metody (czyli jak gdyby funkcje przypisane do obiektu) w następujący sposób:
Kod:   Zaznacz   Podgląd (X)HTML   Uruchom   Zapisz
$nazwa -> metoda ( $parametr1, ..., $parametrn )

Czyli w naszym przypadku: (wywołujemy "funkcję add")
Kod:   Zaznacz   Podgląd (X)HTML   Uruchom   Zapisz
$nazwa -> add( 'akapit', ' dopisana wartość');

No i na końcu wyświetlamy wszystko metodą display bez parametrów.
 

_________________
zamiana walut
  
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora  
Numer Gadu-Gadu
5878983
 
 
Jabber
 
 
 
 
Numer ICQ
MozillaLinux1280x1024
kurshtml
Administrator
kurshtml

Płeć: Mężczyzna
Wiek: 30
Dołączył(a): 02 Mar 2004
Posty: 4459
Pomocy: 43
Post Wysłany: 07.01.2007 16:37
Zacytuj zaznaczone   ^

Pomysł, muszę przyznać, ciekawy. Pierwsze uwagi zrobione na szybko:
  • Czy system umożliwia wykonanie zagnieżdżonych pętli?
  • Podczas wykonywania pętli, identyfikatory ID elementów XHTML są powielane, co w wyniku generuje błędny kod.
  • Czy istnieje możliwość usunięcia z szablonu wybranego bloku kodu, ale tak, aby w ogóle nie wystąpił na ekranie, tzn. aby usunięte zostały również elementy obejmujące taki blok? Np. po <div id="wytnij">...</div> nie powinno zostać nic na ekranie.
  • Przy rozległych szablonach może powstać problem zapełnienie przestrzeni nazw. Chodzi o to, że każdy element, do którego się odwołujemy, musi mieć przypisaną klasę lub identyfikator. Obszerne szablony mogą być przeładowane identyfikatorami i klasami, a przez to, mogą się one niezamierzenie powtarzać w różnych częściach szablonu. Powstanie mały chaos przy późniejszym stylizowaniu i nadmiarowy kod.

Jeżeli chodzi o ostatni punkt, to może zastanowisz się, nad wprowadzeniem specjalnego atrybutu, np.
Kod:   Zaznacz   Podgląd (X)HTML   Uruchom   Zapisz
<li xt:id="identyfikator">...</li>

Oczywiście taki specjalny atrybut powinien zostać usunięty z wynikowego kodu źródłowego.
 

_________________
stop-ie6.png


Ostatnio zmieniony przez kurshtml dnia 07.01.2007 16:41, w całości zmieniany 1 raz
  
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora  
 
 
Jabber
 
 
 
 
OperaLinux1280x800
wig
Użytkownik
wig

Płeć: Mężczyzna
Dołączył(a): 27 Sie 2006
Posty: 2723
Post Wysłany: 07.01.2007 16:40
Zacytuj zaznaczone   ^

Nie no, chodziło o to, że nie pomogę przy testach, bo się nie znam Smile
A używanie rzeczywiście jest bardzo proste, nikt nie powinien mieć problemów, jeśli tylko to prosto i konkretnie omówisz.
neo007 napisał(a):
jakieś rozpoznawalne logo

A z czym tym system szablonów ma się kojarzyć?
 

_________________
wig heil 2009
  
Zobacz profil autora Wyślij prywatną wiadomość  
 
 
 
 
 
 
 
 
FirefoxWin981024x768
neo007
Pomocnik
neo007

Płeć: Mężczyzna
Dołączył(a): 08 Lut 2005
Posty: 6341
Pomocy: 46
Post Wysłany: 07.01.2007 16:46
Zacytuj zaznaczone   ^

kurshtml, dzięki. Zaraz odpowiadam:
  1. tak, umożliwia. Pętlę znajdziesz w przykładach, zagnieżdżenie może wykombinujesz, bo jeszcze nie zdążyłem w dokumentacji tego zrobić. Patrz pomocnicza metoda r(), może wymyślisz Wink
  2. nie, nie są powielane. Są usuwane. I tu główna różnica czy w pętli korzystamy z id czy class
  3. o tym też myślałem, być może wprowadzę coś w stylu pobierania n-tego elementu wg nazwy tagu, inne pomysły również wskazane. Myślę, że wszystko wyjdzie przy testach przeprowadzonych wspólnie przez forumowiczów. Może dodatkowy atrybut to dobry pomysł, ale na razie bym się powstrzymał z jego wprowadzeniem. Może znajdzie się inny, dobry pomysł


Aby ukazać prawdziwe działanie szablonów najlepiej musiałbym udostępnić kod źródłowy samej strony. Postaram się o to jutro.

Co do loga - może jakiś konkurs Wink Bardzo podobał mi się konkurs na logo svg. Ale na razie trzeba pracować nad jego technicznymi aspektami, grafika przyjdzie później.

--edit--

Jest metoda remove.
Kod:   Zaznacz   Podgląd (X)HTML   Uruchom   Zapisz
$xt_obiekt->remove( node )

Parametr pierwszy może być bardzo różnorodny: (jeśli nic nie pominąłem)
  1. domnode, czyli obiekt
  2. nazwa - usunie obiekt o id="nazwa
  3. nazwa:n - usunie n-ty obiekt o klasie "nazwa"

 

_________________
zamiana walut
  
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora  
Numer Gadu-Gadu
5878983
 
 
Jabber
 
 
 
 
Numer ICQ
MozillaLinux1280x1024
kurshtml
Administrator
kurshtml

Płeć: Mężczyzna
Wiek: 30
Dołączył(a): 02 Mar 2004
Posty: 4459
Pomocy: 43
Post Wysłany: 07.01.2007 16:54
Zacytuj zaznaczone   ^

neo007 napisał(a):
nie są powielane. Są usuwane.

A tutaj?

Odwoływanie się do elementów po numerze wystąpienia w kodzie źródłowym, to wg mnie zły pomysł. Jeżeli ktoś zmieni szablon, układając klasy w inny sposób, cały kod PHP przestanie działać poprawnie.

Nazwę specjalnego atrybutu data można by zmienić na #text, co by było zgodne ze specyfikacją DOM, a więc bardziej intuicyjne. Choć to tylko sprawy estetyczne.
 

_________________
stop-ie6.png


Ostatnio zmieniony przez kurshtml dnia 07.01.2007 17:06, w całości zmieniany 2 razy
  
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora  
 
 
Jabber
 
 
 
 
OperaLinux1280x800
neo007
Pomocnik
neo007

Płeć: Mężczyzna
Dołączył(a): 08 Lut 2005
Posty: 6341
Pomocy: 46
Post Wysłany: 07.01.2007 17:02
Zacytuj zaznaczone   ^

Tak, masz rację. Ostatnio zmodyfikowałem pewną metodę i przestało działać. Poprawię... Poprawiłem.

Idąc na łatwiznę mogę pozostawić oba - i data i #text.
 

_________________
zamiana walut
  
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora  
Numer Gadu-Gadu
5878983
 
 
Jabber
 
 
 
 
Numer ICQ
MozillaLinux1280x1024
kurshtml
Administrator
kurshtml

Płeć: Mężczyzna
Wiek: 30
Dołączył(a): 02 Mar 2004
Posty: 4459
Pomocy: 43
Post Wysłany: 07.01.2007 17:06
Zacytuj zaznaczone   ^

Nasunęła mi się jeszcze jedna myśl. Przez to, że można się odwoływać tylko do elementów XHTML, nie będzie można np. powielić zwykłego tekstu. Rozwiązaniem mogłoby być wprowadzanie poza atrybutem xt:id dodatkowy element, np.
Kod:   Zaznacz   Podgląd (X)HTML   Uruchom   Zapisz
<xt:node>...</xt:node>

Problem w tym, że wtedy to już nie będzie szablonów w czystym XHTMLu Sad
 

_________________
stop-ie6.png
  
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora  
 
 
Jabber
 
 
 
 
OperaLinux1280x800
neo007
Pomocnik
neo007

Płeć: Mężczyzna
Dołączył(a): 08 Lut 2005
Posty: 6341
Pomocy: 46
Post Wysłany: 07.01.2007 17:16
Zacytuj zaznaczone   ^

kurshtml, system opiera się na dom, dlatego można to zrobić korzystając z funkcji domowych. Jeśli podasz konkretny przykład spróbujemy się razem zastanowić w jaki sposób mogłoby to funkcjonować.
 

_________________
zamiana walut
  
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora  
Numer Gadu-Gadu
5878983
 
 
Jabber
 
 
 
 
Numer ICQ
MozillaLinux1280x1024
kurshtml
Administrator
kurshtml

Płeć: Mężczyzna
Wiek: 30
Dołączył(a): 02 Mar 2004
Posty: 4459
Pomocy: 43
Post Wysłany: 07.01.2007 17:35
Zacytuj zaznaczone   ^

W tym sęk, że DOM nie pozwala dotrzeć do każdego fragmentu kodu, a jedynie do elementów i atrybutów oraz wartości. Nie można dotrzeć do fragmentu tekstu, który nie jest oznaczony żadnymi znacznikami.

Załóżmy, że cały szablon w uproszczeniu wygląda tak:
Kod:   Zaznacz   Podgląd (X)HTML   Uruchom   Zapisz
Jakiś tekst...

Chcielibyśmy powielić ten tekst np. 3 razy bez dodawania żadnych znaczników. DOM na to nie pozwala, a gdyby zrobić tak:
Kod:   Zaznacz   Podgląd (X)HTML   Uruchom   Zapisz
<xt:node>Jakiś tekst... </xt:node>

To moglibyśmy do tego dotrzeć metodami DOM i powielić tekst, usuwając z niego na wyjściu niepotrzebny znacznik:
Kod:   Zaznacz   Podgląd (X)HTML   Uruchom   Zapisz
Jakiś tekst... Jakiś tekst... Jakiś tekst...

 

_________________
stop-ie6.png
  
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora  
 
 
Jabber
 
 
 
 
OperaLinux1280x800
neo007
Pomocnik
neo007

Płeć: Mężczyzna
Dołączył(a): 08 Lut 2005
Posty: 6341
Pomocy: 46
Post Wysłany: 08.01.2007 16:12
Zacytuj zaznaczone   ^

Myślałem za to o magicznych klasach:
  1. remove_id
  2. remove_parent
  3. remove_class

Co by oznaczało, że znacznikowi, który posiada daną klasę zostanie usunięty kolejno: id, rodzic lub klasa. To załatwiałoby wiele problemów.

Ps. Gdzie podziało się liczne grono specjalistów tego forum? Czyż naprawdę skrypt wzbudza tak nikłe zainteresowanie? Byłbym zatem wdzięczny za wszelką formę reklamy systemu Smile
 

_________________
zamiana walut
  
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora  
Numer Gadu-Gadu
5878983
 
 
Jabber
 
 
 
 
Numer ICQ
MozillaLinux1280x1024
minchal
Użytkownik
minchal

Płeć: Mężczyzna
Dołączył(a): 18 Sty 2005
Posty: 903
Pomocy: 15
Skąd: Złotoryja
Post Wysłany: 08.01.2007 17:13
Zacytuj zaznaczone   ^

pierwsze co mi się nasuwa na myśl, to to, jak np. dodać coś do meta? w meta chyba nie mogę dać id lub class, tym bardziej, że potem one pozostaną w kodzie wynikowym. Może warto byłoby aby metoda add pozwalała modyfikować dowolny znacznik o dowolnym atrybucie, który posiada dowolną wartość?
coś w stylu:
Kod:   Zaznacz   Podgląd (X)HTML   Uruchom   Zapisz

add
(
$wartosc, // standordowo id lub class, gdy inny $atrybut to wartość atrybutu
$text, // wiadomo
$atrybut=id/class, // czyli niestandardowy atrybut
$tag='*' // bedzie można np. odwoływać się do tagu meta, który ma http-equiv="coś tam" ($atrybut=$wartosc)
);

mam nadzieję, że zrozumiale napisałem.

neo007, czy istnieje możliwość abym w niedalekiej przyszłości wykorzystał xt w projekcie komercyjnym?
Bo mój mini-cms teraz raczej nie korzysta z żadnych szablonów (nie było takiej potrzeby), ale tak mały i szybki system może zastąpić aktualne:
Kod:   Zaznacz   Podgląd (X)HTML   Uruchom   Zapisz

<? echo $tpl_eglebegle; ?>


--DOPISANE--
można do metody add dodać jeszcze jedną zmienną (jak to się w OOP nazywa?), a mianowicie $gdzie, która standardowo przyjmowała by wartość in lub before i after, dzięki czemu nie będzie trzeba tworzyć dodatkowych metod w stylu add_before.

PS trzymam kciuki za projekt :]
 


Ostatnio zmieniony przez minchal dnia 08.01.2007 17:29, w całości zmieniany 1 raz
  
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora  
Numer Gadu-Gadu
6170208
 
 
Jabber
 
 
 
 
OperaLinux1024x768
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Szybka odpowiedź
Kod potwierdzający
Użytkownik
Temat
Very Happy Smile Sad Surprised Shocked Confused Cool Laughing Mad Razz Embarassed Crying or Very sad Evil or Very Mad Twisted Evil Rolling Eyes Wink Exclamation Question Idea Arrow Neutral Mr. Green + - *
  

  Zamknij Tagi
 
 

Zobacz następny temat
Zobacz poprzedni temat
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach

RSS Przełącz do wersji mobilnej

Zdobywca I miejsca w konkursie WWW
[www.moskat.pl] [eaw.abajt.pl]
Powered by phpBB © 2001, 2005 phpBB Group
Uruchamianie kodu dzięki Sphere Research Labs w ramach ideone.com
Style created freely by Cyber-MX :: Modified by logeen :: Sponsor: Biuro Rachunkowe
katalog stron
katalog stron
kbkteam.net
bajkar

www.bajkar.sitpchem…
Klimatyzacja
Clima Cool
www.climacool.pl
systemy CMS
Profesjonalne systemy CMS !
www.govern.pl
Sklep odżywki
Sklep odżywki
www.megapower.pl