Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][Smarty] Meta title - swith lub inne rozwiązanie
ar4
post
Post #1





Grupa: Zarejestrowani
Postów: 64
Pomógł: 1
Dołączył: 10.11.2010
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


Witam,
mam problem. Strona na wykonana w smarty.
W pliku _head.tpl mam tak określone meta title:
  1. <title>{$title|default:'Nazwa strony - coś tam jeszcze'}</title>

ten plik jest includowany: {include file=_head.tpl} w pliku index.tpl
Teraz na każdej podstronie mam taki sam tytuł jak na stronie głównej.
Jak rozwiązać ten problem, aby na każdej podstronie był inny tytuł.
Myślałem o tym, aby dodać jakiś swith ale jak go i gdzie go dodać to nie wiem.
Czy ktoś może pomóc rozwiązać ten problem.
Adres podstron jest przyjazny czyli np. domena.pl/kontakt itp.
Proszę o pomoc...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 16)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No to na kazdej podstronie ustawiaj inną wartosc dla zmiennej $title
$ObiektSmartiego->assign('title','Oddzielny tytul na kazdej podstronie');
Go to the top of the page
+Quote Post
Pyton_000
post
Post #3





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


{include file=_head.tpl title="Kurczaczki na wybiegu"}
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@Pyton w Twoim sposobie ten tytul nadal bedzie staly. Przeciez on to includuje w index.tpl
Go to the top of the page
+Quote Post
Pyton_000
post
Post #5





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Ale nie wiemy czy index jest stały (IMG:style_emoticons/default/wink.gif)

Jeżeli index jest stały i tylko wkłada content do tego to wystarczy to co napisałeś (IMG:style_emoticons/default/smile.gif) Ja pokazałem inny sposób. Oo.. (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
ar4
post
Post #6





Grupa: Zarejestrowani
Postów: 64
Pomógł: 1
Dołączył: 10.11.2010
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


Zgadza się, plik index ma swoją stałą konstrukcję, a z innych plików jest wrzucana tylko treść.
Mam rozumieć, że rozwiązaniem jest to:
  1. $ObiektSmartiego->assign('title','Oddzielny tytul na kazdej podstronie');

tylko jak wstawić tytuł np. dla podstrony kontakt?

Plik kontaktu to:
  1. {strip}
  2. <div class="dp">
  3. <div class="fk">
  4. <div class="fkl">
  5. <h1>KONTAKT</h1>
  6. {$opis}
  7. </div>
  8. <div class="fkr">
  9. <h1>Formularz kontaktowy</h1>
  10. {if isset($komunikat) && !empty($komunikat) }
  11. <p style="color: #007400">{$komunikat.tresc}</p>
  12. {/if}
  13. <form action="" method="post">
  14. <ul class="form">
  15. <li>
  16. <label>
  17. <em>imię *</em>
  18. <input type="text" value="{if isset($dane.imie)}{$dane.imie}{/if}" name="imie"/>
  19. </label>
  20. </li>
  21. <li>
  22. <label>
  23. <em>nazwisko *</em>
  24. <input type="text" value="{if isset($dane.nazwisko)}{$dane.nazwisko}{/if}" name="nazwisko"/>
  25. </label>
  26. </li>
  27. <li>
  28. <label>
  29. <em>telefon *</em>
  30. <input type="text" value="{if isset($dane.telefon)}{$dane.telefon}{/if}" name="telefon"/>
  31. </label>
  32. </li>
  33. <li>
  34. <label>
  35. <em>e-mail *</em>
  36. <input type="text" value="{if isset($dane.email)}{$dane.email}{/if}" name="email"/>
  37. </label>
  38. </li>
  39.  
  40. <li>
  41. <label>
  42. <em>treść *</em>
  43. <textarea name="pytanie" cols="10" rows="10">{if isset($dane.pytanie)}{$dane.pytanie}{/if}</textarea>
  44. </label>
  45. </li>
  46. <li>
  47. <button type="submit"></button>
  48. </li>
  49. </ul>
  50. </form>
  51. <p style="color: #C49D79; font-size:8px">tresc</p>
  52. </div>
  53. </div>
  54. <div class ="fkb"></div>
  55.  
  56. </div>
  57. {/strip}
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Zgadza się, plik index ma swoją stałą konstrukcję, a z innych plików jest wrzucana tylko treść.
Mam rozumieć, że rozwiązaniem jest to:
Tak.

Jak wstawic? No chyba kazda podstrona ma rownież swoj kod php czyż nie? Wiec w tym kodzie wstawiasz to co ci podalem
Go to the top of the page
+Quote Post
ar4
post
Post #8





Grupa: Zarejestrowani
Postów: 64
Pomógł: 1
Dołączył: 10.11.2010
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


No właśnie chodzi o to, że każda podstrona ma tylko html
Z tego co mi się wydaje to powinno to być jakoś umieszczone w pliku _head.tpl
czyli jak mamy adres strony /kontakt to wstawiamy taki tytuł, itd.

Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Gdzies tam w kodzie php masz, ktory includuje daną stronę. I linijke wczesniej masz wstawic kod co podalem

od biedy w head dac warunki i w zależnosci od strony wstawiac wlasciwy tekst zamiast $title
Go to the top of the page
+Quote Post
ar4
post
Post #10





Grupa: Zarejestrowani
Postów: 64
Pomógł: 1
Dołączył: 10.11.2010
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


Czy to chodzi o plik index.tpl ?
Jego zawartość wygląda tak:
  1. {strip}
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xml:lang="pl" xmlns="http://www.w3.org/1999/xhtml">
  4.  
  5. {include file=_head.tpl}
  6.  
  7. <body {if $controller eq 'Index'}class="bg1"{elseif $controller eq 'NaszeRealizacje'}class="bg2"{elseif $controller eq 'BudowaDomowZBali'}class="bg3"{elseif $controller eq 'Kontakt' or $controller eq 'PosrednictwoInwestycyjne'}class="bg4"{/if}>
  8.  
  9. {if isset($konfig.db.sqlDebug) && $konfig.db.sqlDebug == true}
  10. <div id="sqlDebug">
  11. Wykonywane zapytania na stronie:<br/>
  12. {if isset($sqlDebug)}{$sqlDebug}{/if}
  13. </div>
  14. {/if}
  15.  
  16. {include file=_menu.tpl}
  17.  
  18. {include file=$subpage}
  19.  
  20. {include file=_stopka.tpl}
  21.  
  22. {if !isset($smarty.cookies.cookie_read)}
  23. {include file='_cookie.tpl'}
  24. {/if}
  25.  
  26. </body>
  27. </html>
  28.  
  29. {/strip}
Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




{include file=$subpage}
Gdzies tam, w kodzie PHP a nie szablonie smarty, ustalasz zmienną $subpage. Tam masz dojść.
Go to the top of the page
+Quote Post
ar4
post
Post #12





Grupa: Zarejestrowani
Postów: 64
Pomógł: 1
Dołączył: 10.11.2010
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


Znalazłem...
Zmienna znajduje się w pliku Action.php jego funkcja wygląda tak:
  1. public function display( $layout = '_index.tpl' ){
  2.  
  3. $this->smarty->assign( 'modul', $this->modul);
  4. $this->smarty->assign( 'controller', $this->controller);
  5. $this->smarty->assign( 'action', $this->action);
  6. $this->smarty->assign( 'params', $this->params);
  7. $this->smarty->assign( 'konfig', $this->konfig);
  8.  
  9. if( empty( $this->subpage ) ){
  10. $this->smarty->assign( 'subpage', strtolower( $this->controller ) . DS . $this->action . '.tpl' );
  11. }
  12. else{
  13. $this->smarty->assign( 'subpage', $this->subpage . '.tpl' );
  14. }


Jak zatem dodać kod podany przez Ciebie, aby to zadziałało?
Go to the top of the page
+Quote Post
nospor
post
Post #13





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




  1. if( empty( $this->subpage ) ){
  2.  
  3. $this->smarty->assign( 'subpage', strtolower( $this->controller ) . DS . $this->action . '.tpl' );
  4.  
  5. }
  6.  
  7. else{
  8. $title = null;
  9. switch ($this->subpage){
  10. case 'kontakt':
  11. $title='blabla';
  12. break;
  13. case 'cosinnego':
  14. $title='cos innego';
  15. break;
  16. }
  17. if ($title)
  18. $this->smarty->assign('title',$title);
  19. $this->smarty->assign( 'subpage', $this->subpage . '.tpl' );
  20.  
  21. }
Go to the top of the page
+Quote Post
ar4
post
Post #14





Grupa: Zarejestrowani
Postów: 64
Pomógł: 1
Dołączył: 10.11.2010
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


Nie wywala błędów, ale i nie zmienia się tytuł...
Go to the top of the page
+Quote Post
nospor
post
Post #15





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




ps: oczywiscie zalozylem, ze $title to ogolne jest przypisane gdzies wczesniej. Jesli jest później, to kod co podalem masz wstawic za tamto przypisanie
Go to the top of the page
+Quote Post
ar4
post
Post #16





Grupa: Zarejestrowani
Postów: 64
Pomógł: 1
Dołączył: 10.11.2010
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


Obawiam się, że trochę się zamieszałem...
Czy teraz mam znaleźć, gdzie jest tworzona zmienna $title i tam wrzucić? Dobrze zrozumiałem?
Go to the top of the page
+Quote Post
nospor
post
Post #17





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Najwyraźniej tak (IMG:style_emoticons/default/smile.gif) Widac ona jest tworzona później niż kod co tu pokazales i nadpisuje tytul. Ewentualnie znajdz kod gdzie ona jest tworzona i ją wykomentuj i nic wiecej juz nie rob
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 20:33