Ostatnio przyszło mi wdrażać projekt graficzny, na którym tytuł strony/wpisu wyglądał w ten sposób, że zawsze pierwszy wyraz był innego koloru niż pozostałe. Niby nic trudnego, ale w momencie gdy treść jest generowana dynamicznie i nie jest to statyczny HTML to pojawia się mały problem. Kojarzyłem pewne funkcje w CSS pozwalające na wyróżnienie pierwszego znaku, ba nawet pierwszej linijki. Mowa tu oczywiście o selektorach :first-letter i :first-line. Na zdrowy chłopski rozum zacząłem szukać podobnego pseudoelementu dla pierwszego wyrazu, czyli coś co brzmiałoby :first-word. Niestety, okazało się, że obecnie nie bardzo mogę coś takiego w łatwy sposób zaimplementować z poziomu CSS. Próbowałem jeszcze przez chwilę znaleźć gotowe rozwiązanie, niestety bezskutecznie. Cały projekt oparty był na WordPressie, więc postanowiłem dopisać po prostu odpowiednią funkcję w pliku functions.php. Nie twierdzę, że jest to optymalne rozwiązanie, ale z pewnością wystarczająco skuteczne. Oto kod:

function first_word($tekst){
  $space = ' ';
  $pos = strpos($tekst, $space);
  if ($pos){
  $firstword = substr($tekst, 0, $pos);
  $rest = substr($tekst, $pos);
  echo '<span class="first-word">'.$firstword.'</span> '.$rest;
  }
  else echo $tekst;
}

Funkcja działa w ten sposób, że pobiera np. tytuł wpisu w zmiennej $tekst, a następnie określa pozycję pierwszej spacji. Potem to już tylko rozbicie łańcucha na pierwsze słowo i resztę i odpowienie „ubranie” w style pierwszego wyrazu.

Podziel się na:
  • Facebook
  • Google Bookmarks
  • Blip
  • Blogger.com
  • Gadu-Gadu Live
  • Grono.net
  • Kciuk.pl
  • Twitter
  • Wykop
  • Śledzik

Komentarze