Follow us on Twitter!
Napisany 25 Paz 2009|Kamil| 5

tl_files/artykuly/data_1.pngTaki format prezentowania daty jest obecny również u nas na stronie, w prawej kolumnie (patrz obrazek). Żeby uzyskać taki efekt pierwszą rzeczą jaką musimy zrobić jest zmiana formatu wyświetlania daty. Wchodzimy w Struktura stron i edytujemy punkt startowy naszego serwisu. W polu Format daty i czasu, za dokumentacją php, wklepujemy d-M-Y. Co ciekawe, jeśli mamy wgrane spolszczenie TYPOlight automatycznie przekonwertuje nam nazwy angielskie na ich polskie odpowiedniki, np. "Jul" -> "Lip".

Teraz przechodzimy do modyfikacji szablonu niusa. Otwieramy nasz plik, w moim przypadku jest to news_prawakolumna.tpl. Z pomocą rozbicia daty przychodzi nam funkcja php explode(). W miejsce kodu

<?php echo $this->date; ?>

wstawiamy

<?php $date = explode('-',$this->date); ?>

Dzięki temu datę mamy rozbitą na trzy fragmenty,

$date[0] => dzień
$date[1] => miesiąc
$date[2] => rok

które to możemy wywołać w naszym szablonie:

<div class="day">
    <?php echo $date[0]; ?>
</div>
<div class="month">
    <?php echo $date[1]; ?>
</div>

5 Komentarzy

pralasant | 27 Paz 2009
A w przypadku, gdy potrzebujemy wyświetlić tylko rok(bez godziny) można datę rozbić jak poniżej:
Prałasant | 29 Paz 2009
No to jeszcze raz.

Typo obsługuje tylko liczbowy format daty. Pewnie bez ingerencji w źródła nie dałoby się tego ominąć - więc powyższy przykład sypnie się przy np. próbie ponownego zapisania jakiegoś newsa.
Oczywiście wszystko działa jak najlepiej stosując j, d, m, n, y, Y, g, G, h, H, i, s, ale np. M wyrzuca w pewnych okolicznościach error.
No i ten brak polskiego "ź" w miesiącu "Październik" - trzeba edytować plik języka i zapisać jako "z". I z tym właśnie związane jest ograniczenie TL.
Kamil | 02 Lis 2009

"No i ten brak polskiego "ź" w miesiącu "Październik" - trzeba edytować plik języka i zapisać jako z"

Tak, masz rację, plik tłumaczenia trzeba edytować ręcznie. Inaczej wyświetli nam się Pa<?>, czyli krzak zamiast "ź".

Socha | 02 Lis 2009
A nie można tego miesiąca załatwić zwykłym "if"?
Coś na kształt tego:
if ($date[1] == 1) {
echo 'Styczeń'
} elseif ($date[1] == 2) {
echo 'Luty'
}
itd...
Kamil | 02 Lis 2009

Socha masz rację, ale trochę pisania by było. Poza tym zamiast if można by użyć switch, które z tego co pamiętam jest nieco szybsze.

W celu wyświetlenia tylko trzech pierwszych liter, można również ustawić w punkcie startowym datę by wyświetlała pełne nazwy miesięcy, a nastepnie obrobić je w php, np. za pomocą:

<?php echo substr($date[1], 0, 3); ?>

Dodaj komentarz (+)

*
*
Jaka jest suma 8 i 6?*
! Tagi bbcode są dozwolone.
  • 28 Lut
    Zaraz po wersji 2.8.0 ukazała się wersja 2.8.1, naprawiająca kilka bugów i usprawniająca zarządzanie grupami.
    przez Kamil|0
  • 16 Lut
    Właśnie dzisiaj ukazała się długo oczekiwana nowa wersja 2.8.0 TYPOlight.
    przez Marcin|0
  • 19 Gru
    Wykryto krytyczną lukę bezpieczeństwa w instalatorze TYPOlight.
    przez Marcin|1

Instalacja TYPOlightInstalacja TYPOlight pokazana krok po kroku. Obejrzyj Video

Opis opcji ustawieńSzybki przegląd ustawień dostępnych w TYPOlight. Obejrzyj Video

Extension manager i catalogPokazana istota działania repozytorium modułów. Obejrzyj Video

Więcej screencastów