Alternatywne szablony w zależności od rodzaju strony

Zawarte tu informacje dotyczą modyfikacji wyglądu segmentów i całej strony w zależności od typu wyświetlanego segmentu (artykuł, wątek, książka). Mogą być one przydatne np. gdy chcesz w inny sposób zaprezentować użytkownikom statyczne strony typu „o nas” czy „regulamin korzystania” (pozbyć się informacji o dacie dodania itp.).

Drupal i PHPTemplate oferują dwie podstawowe możliwości:

  • nadanie innego wyglądu segmentowi (tytuł, informacje o autorze, dacie dodania, odnośniki kontekstowe itp.)
  • nadanie innego wyglądu całej stronie

poprzez stworzenie alternatywnych szablonów PHPTemplate.

Wygląd segmentów

Skopiuj swój plik node.tpl.php, odpowiadający za wygląd segmentu i nadaj mu nową nazwę, zgodnie ze schematem node-rodzaj_zawartości.tpl.php, gdzie rodzaj_zawartości to np. page czy story.

Następnie zmodyfikuj zawartość tego pliku zgodnie z Twoimi wymaganiami. Możesz usunąć pewne fragmenty albo dodać nowe. Zwróć uwagę, że – korzystając z funkcji Clean URLs – możesz zamieścić swoją stronę pod adresem typu /o-nas czy /pomoc.

Wygląd całej strony

Alternatywne szablony modyfikujące wygląd całej strony osiągnąć można na wiele sposobów. Tutaj przedstawiony zostanie jeden z najprostszych, a zarazem najbardziej wygodnych.

Mechanizm tego rozwiązania polega na wywołaniu z głównego pliku szablonu całej strony innych szablonów, w zależności od rodzaju segmentu.

Skopiuj swój plik page.tpl.php w bezpieczne miejsce oraz do pliku page-default.tpl.php. Zawartość page.tpl.php zastąp poniższym kodem, którego autorem jest PhilK:

<?php
switch ($node->type) {
  case 'book': $inc = 'page-book.tpl.php'; break;
  case 'blog': $inc = 'page-blog.tpl.php'; break;
  case 'image': $inc = 'page-image.tpl.php'; break;
  case 'forum': $inc = 'page-forum.tpl.php'; break;
  default: $inc = 'page-default.tpl.php';  break;
}
include ($inc);
?>

Działanie kodu:

  • jeśli rodzaj segmentu to książka – odczytanie pliku page-book.tpl.php
  • jeśli blog – page-blog.tpl.php
  • jeśli grafika dodana przez moduł image – page-image.tpl.php
  • jeśli wątek na forum – page-forum.tpl.php
  • w innych przypadkach – page-default.tpl.php

Możesz usunąć wybrane linijki rozpoczynające się od case albo dodać własne, wywołujące szablony wyglądu innych rodzajów segmentów.

Następnie powinieneś oczywiście wyedytować każdy z potrzebnych plików .tpl.php i odpowiednio dostosować wygląd.

W ten sposób zmienić możesz nie tylko strukturę stron (HTML), ale i ich ostylowanie. W sekcji <head> danego szablonu umieść wywołanie alternatywnego arkusza stylów CSS, np. tak:

<style type="text/css" media="all">@import "/katalog_skórki/image.css";</style>

Możesz także sprawić by pierwsza, główna strona witryny posiadała inny wygląd. W tym celu stwórz szablon page-front.tpl.php i dodaj następującą linijkę na początek kodu w pliku page.tpl.php:

if ($is_front) {include 'page-front.tpl.php'; return; }

Inne możliwości

Jest wiele innych sposób na zmianę wyglądu w zależności od typu segmentu, włączają w to uzależnienie wyglądu od kategorii, w której umieszczony został dany segment. Więcej informacji znajdziesz na poniższych stronach:

Sposób wyświetlania odpowiedzi

Wybierz preferowany sposób wyświetlania odpowiedzi i kliknij "Zachowaj ustawienia", by wprowadzić zmiany.

Zmiana wyglądu strony przy wielu witrynach

„Skopiuj swój plik page.tpl.php w bezpieczne miejsce oraz do pliku page-default.tpl.php. Zawartość page.tpl.php zastąp poniższym kodem,[..]”

Czy skopiowanie modułu „system” do katalogu /sites/www.ja­kaś_witryna.pl/mo­dules/system/ i dokonanie tam zmian zastąpi ustawienia z katalogu głównego /modules/system/ i pozwoli na ustalenie odmiennych szablonów dla tej wybranej witryny, a pozostawienie domyślnych ustawień dla innych? Jednym słowem, czy można bezpiecznie dublować podstawowe moduły systemowe i ważniejsze dla danej witryny będą te z katalogu tej witryny?

Wygląda na to że ktoś

Wygląda na to że ktoś kopiował ten kawałek kodu przez jakiś edytor wspomagający autokorektę apostrofów/cud­zysłowów …

Zamiast:

case ‚book’: $inc = ‚page-book.tpl.php’; break;

Powinno być tak:

case ‚book’: $inc = ‚page-book.tpl.php’; break;

Portret użytkownika archetwist

Popełniłeś ten sam błąd, nie

moderator

Popełniłeś ten sam błąd, nie wykorzystując znaczników :-) , ale dziękuję za informację, zrozumiałem o co chodzi i wyedytowałem artykuł.