Własne arkusze stylów
Drupal wyposaża witrynę w ogromną ilość reguł CSS. Jeśli chcemy załączyć dodatkowe arkusze stylów (na przykład dla poszczególnych działów witryny), należy skorzystać z rekomendowanej funkcji drupal_add_css
.
Jednak dla twórcy, który chce sam zaprojektować cały wygląd witryny i uzależnić korzystanie z poszczególnych arkuszy stylów od, na przykład, adresu podstrony, nie jest to najlepsze rozwiązanie, ponieważ arkusze dodane w ten sposób zostaną umieszczone wraz z dziesiątkami arkuszy udostępnianych przez moduły.
Poniżej znajduje się specjalna funkcja, którą można wstawić do szablonu template.tpl.php, a później korzystać z niej z poziomu page.tpl.php, wstawiając kolejne arkusze. Umożliwia ona podanie lokalizacji arkusza (względem katalogu skórki) oraz zadeklarowanie wartości atrybutów media
oraz title
. Wszystko to może się ładnie wkomponowywać w strukturę działów witryny.
Do template.tpl.php:
/* Serving user-declared stylesheets © archetwist
------------------------------------------------- */
<?php
function at_stylesheets($style) {
foreach ($style as $stylefile => $styleattr) {
$output .= '<link rel="stylesheet" href="';
$output .= base_path() . path_to_theme() . $stylefile .'" ';
$output .= 'media="'. $styleattr[media] .'" ';
if (isset($styleattr[title])) {
$output .= 'title="'. $styleattr[title] .'" ';
}
$output .= '/>'. "\n";
}
return $output;
}
?>
Do page.tpl.php, wewnątrz elementu head
(przykład):
<?php
// lokalizacja, media, title (ocpjonalnie)
// główny arkusz
$style["/style.css"] = array(media => "all", title => "base");
// arkusz alternatywny
$style["/alternate.css"] = array(media => "all", title => "alt");
// arkusz dla głównej strony
if ($is_front) {
$style["/front.css"] = array(media => "all");
}
// arkusz dla działu zarządzania
if (arg(0) == 'admin') {
$style["/admin.css"] = array(media => "all");
}
// wywołanie funkcji
print at_stylesheets($style);
?>

template.tpl.php?
astral, pt., 2008-01-25 18:50Hmmm…ale ja nie mam pliku template.tpl.php! Czy miałeś na myśli, że trzeba go stworzyć w katalogu wybranej templatki?