Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Kohana]Zmiana kolejności title
Forum PHP.pl > Forum > PHP > Frameworki
badlalo
Witam,

Mam pewien problem, potrzebuje wprowadzić kilka zmian do storny, którą nie ja pisałem. Mianowicie w tym momencie tytul generwowany jest w tym miejscu(tak mi sie wydaje)
  1. public function before()
  2. {
  3. // Jeśli jest włączone automatyczne renderowanie - przerenderuj szablon.
  4. if ( $this->auto_render === TRUE )
  5. {
  6. $this->template = View::factory($this->template);
  7.  
  8. $serials = ORM::factory('serial')->find_all();
  9.  
  10. // Przyisanie globalnie seriali
  11. $this->template->serials = $serials;
  12. }
  13. $session = Session::instance();
  14.  
  15. if(Session::instance()->get('left') === NULL)
  16. {
  17. Session::instance()->set('left', 500);
  18. }
  19. Notices::init();
  20. Header::instance()->set( 'title', 'Online, Odcinki, Za darmo');
  21.  
  22. return parent::before();
  23. }


Później wyswietlany tutaj
  1. <title><?php echo Header::instance()->title;?></title>


CO chcialbym osiągnąć? Tytuł w tym momencie działa w ten sposób, że na początku jest tekst ONline, odcinki za darmo a pozniej dodawana jest nazwa podstrony. Chcialbym aby nazwa podstrony byla na przedzie a statyczny tytul byl zawsze na koncu, w jaki spososb moge to zrobic ? Albo napisać to w inny sposób bez uzycia tego Header::instance ?
phpion
Pokaż jeszcze kod, w którym masz doklejanie dynamicznego tytułu (pewnie albo w metodzie after() albo w metodzie wyświetlającej konkretne dane). Poza tym Twoje metoda before() nie jest dobrze napisana (aczkolwiek pewnie działa). parent::before() powinno być na początku (bez return bo nic nie zwraca) oraz możesz pozbyć się $this->template = View... (robi się to w parent::before()).
badlalo
Oto chodzi ,ze to nie jest moje wink.gif

Jest takie cos z afterkiem wink.gif O to chodzilo ?

  1. public function after()
  2. {
  3. if ($this->auto_render === TRUE)
  4. {
  5. $this->response->body($this->template->render());
  6. }
  7.  
  8. return parent::after();
  9. }
  10. } // End Website


Dobra to raczej nie ten kawalek haha.gif a bardziej ten ?

  1. public function action_show()
  2. {
  3. $uri = $this->request->param('id');
  4. $param = $this->request->param('param');
  5. $s = $this->request->param('season');
  6. $e = $this->request->param('episode');
  7.  
  8. // Jeśli nie przekazano parametru uri
  9. if(! $uri)
  10. {
  11. Notices::add('error', __('Serial nie został odnaleziony lub został usunięty'));
  12. $this->request->redirect();
  13. }
  14.  
  15. $serial = ORM::factory('serial')->where('uri', '=', $uri)
  16. ->find();
  17.  
  18. $seasons = ORM::factory('serial_season')->where('serial_id', '=', $serial->id)->and_where('season', '=', $s)->find();
  19.  
  20. // Jeśli nie znaleziono serialu w bazie
  21. if(! $serial->loaded())
  22. {
  23. Notices::add('error', __('Serial nie został odnaleziony lub został usunięty'));
  24. $this->request->redirect();
  25. }
  26.  
  27. Header::instance()->append('title', $serial->name);
  28.  
  29. $serial->views += 1;
  30. $serial->last_view = date('Y-m-d H:i:s');
  31. $serial->save();
  32.  
  33. if($param)
  34. {
  35. $episode = ORM::factory('serial_season_episode')->where('uri', '=', $param)->and_where('episode', '=', $e)->and_where('season_id', '=', $seasons->id)->find();
  36.  
  37. if( ! $episode->loaded())
  38. {
  39. $this->request->redirect(Route::get('serial')->uri(array(
  40. 'id' => $serial->uri
  41. )));
  42. }
  43. else
  44. {
  45. if(! Auth::instance()->logged_in())
  46. {
  47. $left = Session::instance()->get('left');
  48.  
  49. if($left === 0)
  50. {
  51. Notices::add('error', __('Przekroczyłeś limit oglądania bez rejestracji. Załóż darmowe konto i oglądaj bez limitu.'));
  52. $this->request->redirect('user/register');
  53. }
  54.  
  55. $left--;
  56.  
  57. if($left >= 0)
  58. {
  59. Session::instance()->set('left', $left);
  60. }
  61. }
  62. Header::instance()->append('title', $episode->name);
  63.  
  64. $this->template->content = View::factory('serials/show_player', array(
  65. 'serial' => $serial,
  66. 'episode' => $episode
  67. ));
  68. }
  69. }
  70. else
  71. {
  72. $this->template->content = View::factory('serials/show', array(
  73. 'serial' => $serial
  74. ));
  75. }
  76. }
ziqzaq
Linia 27
  1. Header::instance()->append('title', $serial->name);
  2. // spróbuj zmienić na
  3. Header::instance()->prepend('title', $serial->name);
badlalo
Przestala dzialac strona po dodaniu prepend haha.gif
ziqzaq
Ups, sorry. Ok, czyli nie ma takiej metody. Zakładałem że skoro ktoś już napisał metodę "append" to dodał i "prepend" wink.gif
Najlepiej jak wkleisz tą klasę Header i zobaczymy jakie ma api.
badlalo
Ogolnie tu jest taki, ze tak powiem burdelek na tym ftpie , ze pierwszy dzien to spedzilem na ogarnianiu czegokolwiek, wiec uwazam, ze nie warto jest zakladac tu czegos co powinno byc zrobione wink.gif

A header wyglada tak
  1. <?php defined('SYSPATH') or die('No direct script access.');
  2. /**
  3.  * @author Michell `b4x` HoduĹ„ <mhodun@gmail.com>
  4.  * @copyright Michell `b4x` HoduĹ„
  5.  * @version 1.0
  6.  */
  7. class Tools_Header {
  8.  
  9. protected static $_instance;
  10.  
  11. public $title;
  12.  
  13. public static function instance()
  14. {
  15. if ( Tools_Header::$_instance === NULL ) Tools_Header::$_instance = new Tools_Header;
  16. return Tools_Header::$_instance;
  17. }
  18.  
  19. public function set ($key, $value)
  20. {
  21. $this->$key = $value;
  22. }
  23.  
  24. public function append ($key, $value, $exploder = ' &mdash; ')
  25. {
  26. $this->$key .= $exploder . $value;
  27. }
  28.  
  29. public function get($key)
  30. {
  31. return ($this->$key !== NULL) ? $this->$key : '';
  32. }
  33. }// Koniec Caching
ziqzaq
Faktycznie, mogłem najpierw spytać o tę klasę.
Możesz albo dopisać tą metodę Header::prepend() na takiej zasadzie jak Header::append(), lub bez kombinacji z tą klasą zmienić kod w tym miejscu co wcześniej:
  1. Header::instance()->append('title', $serial->name);
  2. // na
  3. $head = Header::instance();
  4. $head->set('title', $serial->name . ' - ' . $head->get('title'));
badlalo
Super wink.gif działa , dzięki wilekie wink.gif
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.