Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sekcja head w sekcji body...
Forum PHP.pl > Forum > PHP
MMySlime
Witam.
Pisząc własnego CMSa z systemem ładowania szablonów natknąłem się na bardzo dziwną rzecz. Dokładnie rzecz mówiąc: mam skrypt head.tmpl, w którym definiuję całą tą sekcję. Jednak ładując stronę ta sekcja head jest w sekcji... body. Na miejscu head "wpylił" się jakiś inny kod, dokładnie to dwa, jeden css, drugi js. Css to był wrc-middle-css a JavaScript zwał się wrc-script-middle_window, po usunięciu tych dwóch skryptów nic się nie dzieje, jakby te skrypty były nie potrzebne. Ale jak się kończy ta sekcja head i zaczyna body to kolejne dziwo mi "się wsadziło". Były to dwa apostrofy (" ") przesuwając stronę w dół. Co najdziwniejsze strona wyświetla się poprawnie. Jednak nie wyświetla się faviconka oraz długie ładowanie cssów może być wkurzające. Coś mi się zdaje że te dwa skrypty wszystko wypychają...

Może macie jakiś sposób na rozwiązanie tego? Piszcie, wszystkie odpowiedzi mile widziane smile.gif
KotWButach
Z całym szacunkiem ale jak ktoś odpowie Tobie na twoje pytanie to stawiam że jest czarodziej.

Opisałeś problem ok ale gdzie kod? Nie wiemy co tak naprawdę się dzieje.
MMySlime
No jak mam wczytywanie szablonów:
  1. /* Head */
  2. $head = new Template(TMPL_PATH . '/head.tmpl');
  3. $head->add('title', $config['title']);
  4. $head->add('author', $config['author']);
  5. $head->add('charset', $config['charset']);
  6. $head->add('keywords', $config['keywords']);
  7. $head->add('desc', $config['desc']);
  8. $head->add('TMPL_PATH', TMPL_PATH);
  9. $head->add('favico', FAV_ICON);
  10.  
  11. /* Header */
  12. $header = new Template(TMPL_PATH . '/header.tmpl');
  13. $header->add('page_title', $config['page_title']);
  14. $header->add('base_path', $config['base_path']);
  15. $header->add('slogan', $config['slogan']);
  16.  
  17. /* SideBar */
  18. $sidebar = new Template(TMPL_PATH . '/sidebar.tmpl');
  19. $sidebar->add('TMPL_PATH', TMPL_PATH);
  20.  
  21. /* Footer */
  22. $footer = new Template(TMPL_PATH . '/footer.tmpl');
  23. $footer->add('copr', $config['copr']);
  24.  
  25. echo $head->show();
  26. echo $header->show();
  27. include TMPL_PATH . '/menu.php';
  28. echo '</ul>';
  29. echo '</div>';
  30. echo '</div>';
  31. echo '<div id="site_content">';
  32. echo $sidebar->show();
  33. include TMPL_PATH . $cont;
  34. echo $footer->show();


A plik head.tmpl wygląda tak:
  1. <head>
  2. <title>{title}</title>
  3. <meta charset="{charset}" />
  4. <meta name="description" content="{desc}" />
  5. <meta name="author" content="{author}" />
  6. <meta name="keywords" content="{desc}" />
  7. <link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Tangerine&amp;v1" />
  8. <link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Yanone+Kaffeesatz" />
  9. <link rel="stylesheet" type="text/css" href="{TMPL_PATH}/style/style.css" />
  10. <link href="{favico}" rel="icon" type="image/x-icon" />
  11. </head>


Bardziej mi zależy żebym wsunął head do head :/ (Trochę dziwne sformułowanie)
nospor
Z tego o kodu:
echo $head->show();
echo $header->show();
include TMPL_PATH . '/menu.php';
echo '</ul>';
echo '</div>';

Dość jasno wynika, ze ty te swoje head wyświetlasz gdzieś już w body więc nie kumam Twojej niesamowitego zdziwienia.... chcesz miec w head to ładuj razem z head a nie ładujesz w body.
MMySlime
Chodzi ci o to?
  1. /* Head */
  2. $head = new Template(TMPL_PATH . '/head.tmpl');
  3. $head->add('title', $config['title']);
  4. $head->add('author', $config['author']);
  5. $head->add('charset', $config['charset']);
  6. $head->add('keywords', $config['keywords']);
  7. $head->add('desc', $config['desc']);
  8. $head->add('TMPL_PATH', TMPL_PATH);
  9. $head->add('favico', FAV_ICON);
  10.  
  11. /* Header */
  12. $header = new Template(TMPL_PATH . '/header.tmpl');
  13. $header->add('page_title', $config['page_title']);
  14. $header->add('base_path', $config['base_path']);
  15. $header->add('slogan', $config['slogan']);
  16.  
  17. /* SideBar */
  18. $sidebar = new Template(TMPL_PATH . '/sidebar.tmpl');
  19. $sidebar->add('TMPL_PATH', TMPL_PATH);
  20.  
  21. /* Footer */
  22. $footer = new Template(TMPL_PATH . '/footer.tmpl');
  23. $footer->add('copr', $config['copr']);
  24.  
  25. echo '<head>';
  26. echo $head->show();
  27. echo '</head>';
  28. echo $header->show();
  29. include TMPL_PATH . '/menu.php';
  30. echo '</ul>';
  31. echo '</div>';
  32. echo '</div>';
  33. echo '<div id="site_content">';
  34. echo $sidebar->show();
  35. include TMPL_PATH . $cont;
  36. echo $footer->show();


head.tmpl:
  1. <title>{title}</title>
  2. <meta charset="{charset}" />
  3. <meta name="description" content="{desc}" />
  4. <meta name="author" content="{author}" />
  5. <meta name="keywords" content="{desc}" />
  6. <link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Tangerine&amp;v1" />
  7. <link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Yanone+Kaffeesatz" />
  8. <link rel="stylesheet" type="text/css" href="{TMPL_PATH}/style/style.css" />
  9. <link href="{favico}" rel="icon" type="image/x-icon" />
nospor
Nie, chodzi mi o to, że head masz wyświetlać tam, gdzie w swoim systemie wyświetlasz HEAD a nie tak jak teraz tam gdzie już dawno jestes w BODY
MMySlime
Nie wiem o co ci chodzi...
Mój index wygląda tak że "includuję" plik konfigurujący template, i tyle. Nic więcej nie mam. (Plik konfiguracyjny to mianowicie index.php którego source pokazałem wyżej. Zauważyłem jednak że z każdym "includem" dodaje się jedna pusta linijka.
abort
BOM (Byte-Order-Mark), prawdopodobnie. Sam kiedyś się na to naciąłem.
Posprawdaj wszystkie swoje pliki - najprawdopodobniej w którymś (z wzmiankowanych przez Ciebie) nieopatrznie zastosowałeś kodowanie UTF8 z BOM, najlepiej zamień na UTF8 bez BOM.
MMySlime
I to jest powodem?! O cie... Jak ja we wszystkich plikach wziąłem kodowanie z BOM tongue.gif
Dzięki za rozwiązanie, masz pomógł wink.gif
zbychoCom
Dodam jeszcze, że BOM (Byte-Order-Mark) można szybko sprawdzić w walidatorze W3
wpm834
Zuważyłem że niektóre STATYCZNE strony internetowe zobacz np. http://riddle.pl/-/xhtml/css-centering/block-01.html są skażone powyższym kodem CSS tj. <style id="wrc-middle-css" type="text/css"> i wtopionym za nim podejrzanym kodem JavaScript obsługującym KARTĘ KREDYTOWĄ exclamation.gif! Nie wpływa to na wygląd strony i jest niepotrzebne. Co więcej wyszukiwanie systemowe plikow *.html zawierających tekst "wrc-middle" nie wynajduje takiego pliku, dopiero zakłócenie jego spokoju tj. otwarcie pliku wpisznie i usunięcie dowolnego znaku i zamknięcie pliku powoduje - że plik .html z takową zawartością jest odnajdywany przez system. Dziwne??
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.