[TODO] "System wtyczek"

0

Tytul troszke przesadny.
Chodzi o mod_rewrite (tak, znowu). Dyskutujac z Embraced znowu cos nam zaswitalo (jak dwoch wariatow dyskutuje, to moze byc niebezpiecznie).
otóż tworzenie wielu galezi w cvs (aktualnie 4) jest troszke... zakrecone. Na razie tak bedzie, ale do TODO chcielibysmy dodac jeszcze inne podejscie. Dodanie mod_rewrite jako.. pluginu. Tzn. zamiast wstawiac do kodu php recznie linki, to aby te link byly generowane np. przez jakas funkcje. Funkcja w zaleznosci od przelacznika generowalaby link zgodny z mod_rewrite lub standardowy. I tak np. do funkcji podawalobysie tablice slow kluczowych oraz wartosci, a funkcja zwracalaby caly link. Jest to chyba dosyc elastyczna metoda pozwalajaca w przyszlosci zmieniac linki i ich ew. format bez wiekszych przerobek (moze np. zamiast typowych wartosci uzywaloby sie pomocniczej bazy i linki wygladalyby w ogole jakby temat postu byl adresem jak to na ALA opisano :P).
Co do skorek, to tutaj nie bardzo wiadomo co zrobic. Jest kilka rozwiazan:

  1. Chyba najprostsze to zostawic tak jak jest standardowo, a skrypcik seda generowalby wersje dla mod_rewrite. Pozniej np. patch bylby umieszczany dla tych co chca sobie do mod_rewrite przystosowac skorki.
  2. Dac tag (lub cos podobnego) i pisac 2 wersje linkow (ta... to juz wiecej zabawy).
  3. Skoro Adam planuje juz i tak jakies warunkowe cuda w szablonach, to moze udostepnic cos na wzor funkcje takie jak w php mialaby byc. Np. tag:

Co wy na takie modfikacje?

0

Jestem za, wszystkie kończyny w górze.

0

Ciekawy pomysł... Ciekawe tylko jak to będzie działało (szybkość)...

0

Ciekawy pomysł... Ciekawe tylko jak to będzie działało (szybkość)...

Jedno wywolanie funkcji z jednym warunkiem dla jezyka skryptowego to jest zadne spowolnienie. Istotniejsze dla szybkosci dzialania serwisu jest buforowanie stron i nie generowanie ich podwojnie.

0

Hmm... akurat jestem w trakcie przerabiania wielu skryptow oraz plikow szablonowych (Dryobates: w klasie template() sa juz instrukcje warunkowe ;)) i mam nieco inne rozwiazanie...

Podobne do sablonow w phpBB oraz planowanych w RoadRunnerze. Otoz, tam w plikach .tpl linki do innych stron oraz linki do obrazkow sa ograniczone do minimum. W ich miejsce mozna wstawic znaczniki (obrazek GG) albo bp. (link do download). Czyli skrypty, dynamicznie generowalyby linki w szablonach, co praktycznie rozwiazauje problem.

0

W ich miejsce mozna wstawic znaczniki (obrazek GG)[...]

Myślę, że dużo lepszym pomysłem jest znacznik zwracający jedynie numerek gg, a nie cały obrazek. Wtedy twórca szablonu mógłby zrobić z nim co chce. Albo wyświetlić go w postaci tekstowej (dla skórki simple'opodobnej), dać link do strony gg z numerkiem jako parametrem, albo napisać własny skrypt php sprawdzający status i zwracający odpowiedni obrazek, który będzie pasował do grafiki. Nie wiem, jakie zamierzenia są co do strony domowej użytkownika i adresu pocztowego, ale myślę, że tu też przydałoby się to samo. Wprawdzie tu nie wiem specjalnie, jaka mogłaby być inna forma owych linków, ale może znajdzie się jakiś twórca skórki z oryginalnym pomysłem :). Zawsze to zniesienie ograniczeń, a zmiana kodu praktycznie żadna.

0

No akurat nie o to chodzilo, to byl tylko przyklad jak maja wygladac skorki [green] Ok... np. link do downloadu - w szablonie moze wygladac tak:

Tutaj:

A w skrypcie PHP:

$template->assign('U_DOWNLOAD' => append_url($config['SITE_URL'] . 'download.php?id=1&p=2'));

Natomiast funkcja append_url() moze np. zamieniac znaki ? oraz & na /. Takie rozwiazanie byloby o tyle fajne, ze dzieki temu mozna zaimplementowac system sesji ktorych ID bedzie doklejane do URL'a (dla osob ktore nie akceptuja cookie).

0

Podpisuje si* pod tym obiema rekami :) Dzieki temu na CVS bedzie krolowala prostota :)

0

Ok, bede jenak potrzebowal Waszej pomocy przy podmianie danych w szablonach i skryptach. Wiem, ze na razie kod na CVS jest troche zogrzebany, wiekszosc skryptow nie dziala, wiec jest trudno. Wszystko to zwiazane jest z wdrozeniem nowej klasy template(). Na razie dziala strona glowna, skrypt users.php, whoisonline.php, ban.php, login.php, register.php, account/.

1) Funkcja append_sid()

W module /include/functions.php dodalem funkcje append_sid(). Pierwotnie miala ona na celu dolaczanie do URL'a parametru ?sid= ktory zawieralby ID sesji w przypadku gdy user nie obsluguje ciastek. Jednak mozna ja wykorzystac takze do podmiany znakow ? oraz & na /. Teraz jak wyglada jej wykorzystanie? Np. przyjrzyj sie linii 219. w pliku index.tpl skorki subMain:

<!--MESSAGE_CONTENT-->&nbsp; [<a href="<!--SITE_URL-->news.<!--EXT-->?id=<!--MESSAGE_ID-->">Czytaj wiÄ?cej...</a>]

Naszym zadaniem byloby zastapienie takiego kodu, nastepujacym:

<!--MESSAGE_CONTENT-->&nbsp; [<a href="<!--U_MESSAGE-->">Czytaj wiÄ?cej...</a>]

Nastepnie, w linii 40. skryptu index.php nalezy dodac nastepujaca linie:

$a_news['U_MESSAGE'][] = append_sid($config['SITE_URL'] . 'news.' . $phpEx . '?id=' . $row['msg_id']);

Spowoduje to zastapienie frazy linkiem do skryptu news.php.

Jak juz mowilem, takich zmian bedzie sporo. Pytanie, czy powinnismy na poczatku kazdego URL'a dodawac $config['SITE_URL'] ? Zmniejsza to bowiem czytelnosc kodu.

BTW: opis struktury systemu (jeszcze nie caly) dostepny jest zawsze (zawsze aktualna wersja) na stronie http://4programmers.net/coyote/manual.html. Tam takze opis wykorzystania klasy template.

0

Jak juz mowilem, takich zmian bedzie sporo. Pytanie, czy powinnismy na poczatku kazdego URL'a dodawac $config['SITE_URL'] ? Zmniejsza to bowiem czytelnosc kodu.

Może nie dodawać, zaś funkcja append_sid() będzie to robić sama w zależności czy używamy rewrite, czy też nie (w przypadku mod_rewrite będzie to wymagane, ścieżki absolutne to podstawa działania)

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