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);

?>

Sposób wyświetlania odpowiedzi

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

template.tpl.php?

Hmmm…ale ja nie mam pliku template.tpl.php! Czy miałeś na myśli, że trzeba go stworzyć w katalogu wybranej templatki?