Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CodeIgniter]Główny szablon strony
Forum PHP.pl > Forum > PHP > Frameworki
adbacz
Witam,

Od jakiegoś czasu zaznajamiam się z CodeIgniterem i cały czas ubolewam nad tym, jak zrobić główny szablon strony, do którego poszczególne widoki byłyby wysyłane i wyświetlane w nim? Tak samo z tytułami, jak zrobić, żeby każda podstrona serwisu miała inny tytuł?

Nie czepiajcie się ale ja na prawdę nie mam zielonego pojęcia. Jeśli macie jakieś pytania to z chęcią odpowiem.
szok
2 wynik w google

http://codeigniter.com/wiki/layout_library/

Jeśli chodzi o tytuły to zrób sobie w layocie
<title><?php echo $pagetitle; ?></title>
I potem przekazuj w tablicy do widoku pagetitle, wtedy będziesz miał każdy inny tytuł strony.
adbacz
No dobrze, ale jak zrobić aby na stronę ładował się więcej niż jeden kontroler? Powiedzmy, że na stronie głównej mam w treści głównej jakiś artykuł. Pod nim jest kontroler z komentarzami. Po prawej stronie kilka menu (ostatnie artykuły, menu użytkownika) i po lewej kilka (menu strony, jakieś linki). Jak to wszystko ładnie zebrać, żeby sie wyświetlało na stronie głównej?

Trzeba zmodyfikować jakoś ten szablon główny, który jest opisany w podanym linku?
A może napisać główny kontroler, który będzie tym zarządzał?

PS: szok - Jak wpisałeś zapytanie dla google?
szok
Google:
http://www.google.pl/search?sourceid=chrom...eigniter+layout

Hm ja sie stosuje zasady, jeden layout i koniec, bez budowania go z kilku elementów bo to niema potrzeby specjalnie po to obciązać serwer aby składał sobie layout z 5 plików jak może z jednego.

Jak chcesz sobie rodzielić to np zrób biblioteki które generuje komentarze, itp i ładuj się w kontrolerze.

Layout musisz tylko dopasowac pod Siebie, modfikacji kodu PHP nie wymaga.
adbacz
Jest świetnie. Zastosowałem sie do Twoich wskazówek szok. Wyedytowałem sobie wszystko, pododawałem conieco. Teraz następne pytanie mnie zżera.

Jak zrobić, by wraz z wyświetlaniem głównego layoutu z treścią, wyświetlane były również boczne menu? I nie chodzi mi o zwykłe menu z linkami ale np o menu, w którym są wyświetlane ostatnie artykuły. Tym menu steruje kontroler. Jak zrobić, żeby razem z generowaniem głównej treści, generował się dodatkowo kontroler wyświetlający najnowsze artykuły?

Myślałem, żeby ładować zapytanie kontrolera od razu w głównym widoku, ale nie mogę znaleźć jak to napisać. Model: $this->load->model(), Widok: $this->layout->view(), a kontroler?


szok
Hm ostanie newsy w bloku menu?
Powiedzmy masz model news to w kontrolerze daj:
Kod
$data['last_news'] = $this->News_model->get_last_news();

//i w layoucie w miejscu gdzie ma byc wyśweitlone

if(isset($last_news))
{
   foreach($last_news as $item)
  {
     echo $item['title'];
  }
}


I po kłopocie, to jest tylko wyświetlenie treści z bazy danych. Kontroler ma za zadanie przekazać je do widoku, a widok wyświetlić.

PS.
Widoki możesz łądować do zmiennych, poprzez:
Kod
$menu = $this->load->view('mojwidok', $data, TRUE);
I potem np wyśweitlić zawartość całego menu w bloku menu poprzez <?php echo $menu; ?>


Trochę nakręciłem, ale mam nadzieje że zrozumiesz moją intencję smile.gif
adbacz
Dzięki Ci wielkie SZOK!

Wszystko hula jak napisałeś. Zrobiłem sobie zapytanie do bazy w widoku i ładnie mi listuje (foreach) wszystkie artykuły.
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.