Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]dynamiczne nagłówki
Forum PHP.pl > Forum > Przedszkole
robos85
Mam stronę dynamicznie ładująca treść z bazy danych. I mam pytanie, jak najlepiej napisać kod, który będzie wyświetlał słowa kluczowe oraz robił opis (description - meta tag) z treści strony, a później ładował oczywiście cała stronę.
Pilsener
Silnik generuje odpowiednie zmienne - np. $description, $title etc. a Ty to potem podstawiasz to do szablonu strony:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>{TYTUL}</title>
  5. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  6. <meta name="keywords" content="{KEYWORDS}" />
  7. <meta name="description" content="{DESCRIPTION}" />
  8. <meta name="robots" content="index,follow" />
  9. {BASE}{CSS}
  10. </head>
- przykład z mojego rozwiązania. Silnik może generować META automatycznie, jednak ja polecem półautomatyczne - czyli generowane z treści + słowa kluczowe na które pozycjonujemy stronę. Dzięki temu uzyskamu zarówno nasycenie słowami kluczowymi, jak i różnorodność.
f1xer
Najprościej to w sekcji head dajesz kod PHP który pobiera dane z bazy i wstawia do pola np. description tagu <meta>. Ale wszystko zależy od tego jak wygląda twój skrypt.
robos85
Cytat(Pilsener @ 2.09.2008, 12:35:17 ) *
Silnik generuje odpowiednie zmienne - np. $description, $title etc. a Ty to potem podstawiasz to do szablonu strony:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>{TYTUL}</title>
  5. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  6. <meta name="keywords" content="{KEYWORDS}" />
  7. <meta name="description" content="{DESCRIPTION}" />
  8. <meta name="robots" content="index,follow" />
  9. {BASE}{CSS}
  10. </head>
- przykład z mojego rozwiązania. Silnik może generować META automatycznie, jednak ja polecem półautomatyczne - czyli generowane z treści + słowa kluczowe na które pozycjonujemy stronę. Dzięki temu uzyskamu zarówno nasycenie słowami kluczowymi, jak i różnorodność.


A jakieś wskazówki może jak taki system napisać.
btw - jak kod napisać, żeby w nawiasy {zmienna} wstawiał odpowiednie teksty?
dr_bonzo
Nie includuj kodu PHP do stronki html tylko na odwrot, wczytaj dane z bazy i dopiero sie zabierz na generowanie htmla poczawszy od DOCTYPE i html.
Czyli to co Pilsner proponuje
robos85
aktualnie mam taki układ:

mam plik header i footer. W tych plikach sa stałe elementy strony.
do konkretnego pliku dołączam te pliki i po tym całość jest pokazywana, po odpowiednim pobraniu danych z bazy oczywiście.

czyli wg tego co piszecie, musiałbym teraz to pozmieniać tak, aby najpierw ładowały się wszystkie dane z bazy, a następnie strona byłaby budowana?

Tylko teraz chyba bedzie ciężko to poprzerabiać :/

i jak to teraz pozmieniać?
Pilsener
Cytat
A jakieś wskazówki może jak taki system napisać.
btw - jak kod napisać, żeby w nawiasy {zmienna} wstawiał odpowiednie teksty?


Przede wszystkim musisz mieć silnik (niektórzy pewnie inaczej na to mówią, ale pal to licho). Silnik jako parametry przyjmuje np. zmienne z adresu strony i na ich podstawie generuje garść zmiennych - umiesz coś takiego zrobić? W najprostszej postaci pobierasz dane z bazy i wczytujesz do zmiennych - musisz mieć wizję tego i to od Ciebie zależy, jak takie coś będzie działać i na ile to będzie elastyczne. Dobry silnik uwzględnia wiele opcji - np. gdy nie ma meta-danych dla danej kategorii, szuka ich w kategorii nadrzędnej i tak aż do głównej strony, pozwala dynamicznie dołączać tylko te pliki CSS, które są akurat wykorzystywane na stronie (a nawet dynamicznie generować plik css na podstawie styli zapisanych w bazie) itp. itd. Podobnie z szablonami - jak dla kategorii nie ma szablonu to jest wczytywany domyślny - dzięki temu jesteś elastyczny i możesz dla różnych kategorii dawać różne szablony czy style. Musisz przemyśleć każdy temat oddzielnie: meta, pliki css, menu, treść.

Na samym końcu silnik "wypluwa" te zmienne a Ty je tylko wstawiasz do szablonu (szablony można trzymać w plikach lub bazie). Możesz użyć gotowego systemu szablonów (np. smarty), lub napisać samemu bardzo prostą funkcję/klasę opartą o str_replace, choćby tu masz artykuł o tym:
http://www.programuj.com/artykuly/www/template.php - dla większości małych i średnich serwisów w zupełności wystarcza - tym bardziej, że szablony możesz przecież łączyć (np. {TRESC} może składać się z szablonów tresc_lewa, tresc_prawa etc.).

Ogólnie ciężko tak sa sucho - musisz działać, bo najlepiej uczy się człowiek przez praktykę.

Cytat
musiałbym teraz to pozmieniać tak, aby najpierw ładowały się wszystkie dane z bazy, a następnie strona byłaby budowana?
- dokładnie tak. Wiem, że cięzko, ale korzyści są olbrzymie no i tak powinno to wyglądać: 1. Dane wejściowe 2. Algorytm 3. Wynik 4. Publikacja wyniku - zauważ, że ten sposób ma same zalety, masz pełną kontrolę nad treścią, nie ma znaczenia, czy najpierw generujesz nagłówek, czy stopkę bo i tak wszystko trafi na swoje miejsce w końcowej fazie tych machinacji smile.gif
robos85
nie mam systemu szablonów. w echo piszę znaczniki html itp. Aby załadować dodatkowy plik css, na początku każdego pliku, przed wywołaniem header, tworzę zmienną z nazwą css. W header jeżeli istnieje ta zmienna, ładuję dodatkowo css.

Na podobnej zasadzie mogę też chyba zrobić te pobieranie, oraz wklejanie meta tagów, a wykonane zapytanie, można uzyć dalej do pokazania na stronie już.

A co do smarty: jak bardzo trudne jest operowanie na tym?

a jak w smarty np. zrobić szkielet strony, żeby najpierw wykonywało się php wiadomo, a po tym był cały html, z tymże dołączałbym np plik header, main(główna zawartość strony), footer.

Bo troszkę czytałem już, ale jakoś nie moge tego wymyśleć, jak to rozpisać w kodzie - jakbym jakąś pomoc uzyskał byłbym wdzięczny:)
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.