Copyright - skrypt php i javascript
Można oczywiście w ogóle zrezygnować z daty lub z informacji o prawach autorskich, ale jeśli już to robimy, to zróbmy to porządnie.
Najprostszym sposobem jest umieszczenie w stopce informacji o prawach jedynie w odniesieniu do aktualnego roku, ale zamiast wpisywać rok ręcznie i zmieniać go co rok (lub o tym zapominać), można podać rok 'aktualny', do którego mamy dostęp dzięki obiektowi Date:
<?php echo date('Y'); ?>
Co, jeśli chcemy bardziej rozbudować naszą stopkę, na przykład o zakres lat? Na przykład, rozpoczęliśmy pisanie na blogu w roku 2007, w chwili tworzenia tego wpisu mamy rok 2010, więc chcielibyśmy dostać © 2007-2010. Napiszmy więc funkcję, która nam w tym pomoże:<?php
function copyright($fromYear) {
return '© '.$fromYear.'-'.date('Y');
}
echo copyright(2007);
?>
<?php
function copyright($fromYear,$author) {
return '© '.$fromYear.'-'.date('Y').' '.$author;
}
echo copyright(2007,'Ender');
?>
<?php
function copyright($fromYear,$author) {
$currentYear = date('Y');
$dateRange = '';
if($fromYear >= $currentYear)
$dateRange = $currentYear;
else
$dateRange = $fromYear.'-'.$currentYear;
return '© '.$dateRange.' '.$author;
}
echo copyright(2007,'Ender');
?>
// normalny warunek:
if(warunek)
$zmienna = 'coś';
else
$zmienna = 'coś innego';
// skrócony warunek:
$zmienna = warunek ? 'coś' : 'coś innego';
$dateRange = ($fromYear >= $currentYear ? $currentYear : $fromYear.'-'.$currentYear);
Możemy to jeszcze bardziej uprościć przenosząc powtarzającą się zmienną poza instrukcję warunkową:$dateRange = ($fromYear >= $currentYear ? '' : $fromYear.'-').$currentYear;
Dzięki tym zabiegom nasza funkcja wygląda następująco:<?php
function copyright($fromYear,$author) {
$currentYear = date('Y');
$dateRange = ($fromYear >= $currentYear ? '' : $fromYear.'-').$currentYear;
return '© '.$dateRange.' '.$author;
}
echo copyright(2007,'Ender');
?>
<?php
function copyright($fromYear,$author,$link) {
$currentYear = date('Y');
$dateRange = ($fromYear >= $currentYear ? '' : $fromYear.'-').$currentYear;
$authorInfo = $link ? '<a href="'.$link.'">'.$author.'</a>' : $author;
return '© '.$dateRange.' '.$authorInfo;
}
echo copyright(2007,'Andrzej','');
echo copyright(2006,'Ender','http://end3r.com/');
?>
Gotowe, skończyliśmy tworzyć skrypt, który za nas bedzie martwił się odpowiednim wyświetleniem zakresu dat dla praw autorskich. Oczywiście zwracany wygląd można sobie dowolnie zmodyfikować, na przykład wyświetlić najpierw autora, a później znaczek © i daty. Na przykład zmiana ostatniej linijki funkcji na return 'Copyright © '.$dateRange.' by '.$authorInfo; wyświetli nam Copyright © 2007-2010 by Andrzej. Każdy może zmodyfikować powyższy skrypt dla własnych potrzeb i uzyskać zadowalający go efekt.
JavaScript
Jeśli ktoś woli użyć JavaScript zamiast PHP, to logika jest identyczna, a kod różni się jedynie szczegółami (zmienne, łączenie łańcuchów znakowych). Tak wygląda kod po zmianie języka:
<script type="text/javascript">
function copyright(fromYear,author,link) {
var currentYear = new Date().getFullYear();
var dateRange = (fromYear >= currentYear ? '' : fromYear +'-') + currentYear;
var authorInfo = link ? '<a href="' + link + '">' + author + '</a>' : author;
return '© ' + dateRange + ' ' + authorInfo;
}
document.write(copyright(2006,'Ender','http://end3r.com/'));
</script>
komentujKomentarze:
Można na przykład doliczyć to do większego rachunku. Można też wykorzystać ten skrypt jedynie na własnych stronach, a na stronach klientów pozostawić stare daty do aktualizacji - nie musisz się bawić z aktualkami na własnych serwisach, a za zmiany u klienta pobierasz opłatę. Rozwiązanie idealne ;]
northerr, a u siebie na metalnews to który niby masz rok w footerze, że się tak tutaj z mojego nabijasz? ;)
otwierając ten wpis bałam się, że wymyślisz coś egzotycznego, a tu widzę, że nawet wszystko rozumiem ; )
Ender - dzięki Tobie nie będę musiała sobie głowy zaprzątać aktualizacją copyright'a :*
miły tutek :)
To, co podałeś jest praktycznie tym samym, co pierwszy fragment kodu podanego przeze mnie we wpisie tyle, że zamiast PHP jest w JavaScript. Co kto lubi, może być i js ;]
No i nie Java, tylko JavaScript ;]
var data = new Date();
var rok = (data.getFullYear ? data.getFullYear() : data.getYear());
if (data != 0) document.write(rok);
Ale chyba JAVA wychodzi z mody widać ;)