RSS

zapisz się: RSS Artykuły

szukaj

Dodanie gravataru do komentarzy

Komentarze 10

Avatary - kobieta i mężczyznaMod, który chcę dziś zaprezentować sprawia, że do komentarzy dodawany jest gravatar. Także, jeśli ktoś ma gravatara to jego zdjęcie będzie wyświetlane przy komentarzach. Musi tylko w tym celu dodać e-mail w formularzu komentarzy. W pozostałych przypadkach będzie wyświetlana domyślna grafika.

Autorem tego moda jest Matt Jones. Na początek robimy oczywiście kopię zapasową plików. Następnie w snews.php w funkcji "comment" dodajemy zaznaczony kod:

$url = (strlen($url) > 8 && strpos($url, '?') === false) ? clean(cleanXSS($url)) : null;
$email = trim($_POST['email']);
$email = (strlen($email) > 5 && preg_match( '/^[A-Z0-9._-]+@[A-Z0-9][A-Z0-9.-]{0,61}[A-Z0-9]\.[A-Z.]{2,6}$/i' , $email)) ? clean(cleanXSS($email)) : null;

Nieco niżej szukamy fragmentu i dopisujemy zaznaczony kod:

$query = 'INSERT INTO '._PRE.'comments'.'(articleid, name, url, comment, time, approved, email) VALUES'.
"('$post_article_id', '$name', '$url', '$comment', '$time', '$approved', '$email')";

Następnie w tej samej funkcji szukamy fragmentu:

'name'=>$name,
'comment'=>$comment,

Pomiędzy te dwie linijki wpisujemy:

'email'=>$email,

Kolejnym krokiem będzie dodanie pomiędzy poniższe linijki:

case ($tag == 'comment'):
 echo $r['comment'];

następujący kod:

$email = retrieve('email', 'comments', 'id', $r['id']);
$name = $r['name'];
$default = _SITE."images/layout/avatar.png";
$size = "50";
$rating = "pg";
$gravatar = "http://www.gravatar.com/avatar.php?gravatar_id=".md5($email)."&rating=".$rating."&default=".urlencode($default)."&size=".$size;
echo '<img class="gravatar" src="'.$gravatar.'" width="'.$size.'" height="'.$size.'" alt="'.$name.'" /> ';

W pierwszej zaznaczonej linijce definiujemy ścieżkę do domyślnej grafiki avatara, znajdującą się na naszym serwerze (w przypadku, gdy ktoś nie ma gravatara lub nie poda e-maila). W drugiej zaznaczonej linijce możemy zmienić wielkość naszego obrazka. Liczba ta odpowiada za szerokość i wysokość gravatara. Następną czynnością będzie znalezienie linijki (ciągle w funkcji "comment"):

echo html_input('text', 'url', 'url', $url, l('url'), 'text', '', '', '', '', '', '', '', '', '')."\r\n";

Dodajemy pod nią:

echo html_input('text', 'email', 'email', '', l('cemail'), 'text', '', '', '', '', '', '', '', '', '');

Następnie przechodzimy do funkcji "edit_comment". Dopisujemy w niej zaznaczony fragment:

$query = mysql_query('SELECT id,articleid,name,url,email,comment,approved FROM '._PRE.'comments'.' WHERE id='.$commentid);

W tej samej funkcji dodajemy jeszcze podświetlony kod:

echo html_input('text', 'url', 'url', $r['url'], l('url'), '', '', '', '', '', '', '', '', '', '');
echo html_input('text', 'email', 'email', $r['email'], l('cemail'), '', '', '', '', '', '', '', '', '', '');

Przechodzimy do funkcji "processing". Dodajemy w niej zaznaczony fragment:

$url = cleanXSS($_POST['url']);
$email = cleanXSS($_POST['email']);
$comment = $_POST['editedcomment'];

W tej samej funkcji szukamy i dodajemy podświetloną linijkę:

if (isset($_POST['submit_text'])) {
  mysql_query("UPDATE "._PRE.'comments'." SET
  name = '$name',
  url = '$url',
  email = '$email',
  comment = '$comment',
  approved = '$approved'
  WHERE id = $commentid");
} else if (isset($_POST['delete_text'])) {

Przyszła kolej na dodanie do bazy danych wiesza e-mail. W tym celu wykonujmy poniższe polecenie w bazie danych naszego CMSa (jeśli nie wiesz jak to zrobić odwiedź stronę z instalacją sNews):

ALTER TABLE comments ADD email varchar(255) NOT NULL;

W kolejnym kroku dodajemy w pliku CSS style do klasy "gravatar". Przykładowo:

.gravatar {
  float: left;
  padding: 6px;
}

W powyższym wypadku styli może zdarzyć się, że avatar będzie poza polem komentarza, jeśli ten jest dość krótki. Aby to zmienić dodajemy zaznaczony fragment w naszym zmodyfikowanym już kodzie:

echo '<img class="gravatar" src="'.$gravatar.'" width="'.$size.'" height="'.$size.'" alt="'.$name.'" /> ';
 echo $r['comment'];
 echo '<br class="clearer" />';
 break;

Na koniec dodajemy do pliku językowego PL.php linijkę odpowiadającą za tekst wyświetlający się przed polem "e-mail" formularza:

$l['cemail'] = 'Email (nie będzie widoczny, potrzebny do <a rel="nofollow" href="http://www.gravatar.com">gravataru</a>)';

Ostatnią rzeczą jaką należy zrobić jest umieszczenie domyślnego avataru w odpowiednim folderze. Po tych zmianach powinny działać gravatary w CMSie sNews.

Podziel się

Bookmark and Share

  1. toolman
    toolman napisał(a):

    To jest bardzo fajna modyfikacja. Szkoda tylko że tak mało popularny jest w naszym kraju serwis Gravatar. Na mojej stronie w komentarzach to tylko ja mam gravatara.

  2. Paweł Landzberg
    Paweł Landzberg napisał(a):

    Racja, dlatego dobrze jest taką małą informację o gravatarze dać w formularzu komentarzy jak u mnie czy na Twojej stronie. Być może ktoś dzięki temu założy swojego gravatara ;)

  3. Kaito
    Kaito napisał(a):

    No tak. "Polska to dziwny kraj" jak powiedział pewien polski polityk. Może warto poświecić cały artykuł na ten temat. Na moim portalu najpierw zastosuje gawatara dla wszystkich użytkowników a potem trzeba by to dobrze rozpisać. Swoją drogą to Gavatar ma już swoje lata i nawet polską wersję językową, czyli problem jest gdzie indziej, np. Złudne poczucie anonimowości i ciągle istniejące pokolenie ludzi "Dzieci Neostrady". Ale z czasem może do tego dorośniemy.

  4. Kaito
    Kaito napisał(a):

    No tak a mój nie zawsze się wyświetla :D heheh

  5. Paweł Landzberg
    Paweł Landzberg napisał(a):

    Spoko, spoko - wyświetla się ;) Wszystko to racja o czym piszesz. Ja stosunkowo od niedawna używam Gravatara, wcześniej jakoś nie myślałem o tym, bo się za bardzo na blogach nie udzielałem. Jednak teraz czasem gdzieś walnę w sieci komentarz, to taki Gravatar jest całkiem fajną sprawą.

  6. Kaito
    Kaito napisał(a):

    O widzę zmiany :D ładnie ładnie :D nie warto łamać komentarzy na blogu :D.

    Gavatar jest też fajny na forach. Z racji tego, że na każde forum trzeba się zarejestrować na maila a chyba wszystkie fora posiadają plugin Gavatar

  7. Paweł Landzberg
    Paweł Landzberg napisał(a):

    Miałem jakoś domyślnie ustawione - widocznie zapomniałem o tym ;) Ale już wszystko gra :)

    Odnośnie gravatara, nie wiedziałem, że na forach gravatar też działa. Trza wypróbować :)

  8. Pablo
    Pablo napisał(a):

    Właśnie przeprowadziłem sobie tą modyfikację. Bardzo fajnie to wyszło :)

    Mam jednak takie pytanie pośrednie do wpisu. Modyfikował trochę formularz dodawania komentarzy, m.in. nazwy poszczególnych pól (czyli: zamiast standardowej nazwy 'Adres WWW' wprowadziłem 'Adres strony WWW (opcjonalne)' , itp.). To poszło dość sprawnie.

    Jednak standardowo przed polem textarea do treści komentarza jest jeszcze nazwa: '* Komentarz:'
    Chciałem to usunąć i poniekąd udało mi się, tylko pozostał na końcu sam dwukropek ' : '
    Nie wiem ja go usunąć, bo on dodaje się automatycznie.


    Aktualnie u mnie linijka w snews.php odpowiadająca za wygląd tej 'powierzchni' wygląda tak:

    echo html_input('textarea', 'text', 'text', $comment, '', '', '', '', '', '', '7', '60', '', '', '')."\r\n";

    (usunąłem tylko zmienną l('comment')

    Widzę, że ty sobie z tym poradziłeś, więc dlatego piszę :)

  9. Paweł Landzberg
    Paweł Landzberg napisał(a):

    W FORM GENERATOR jest ten dwukropek. Dokładnie w tym miejscu:

    case 'textarea':
    $output = '<p>'.$lbl.':<br />

  10. Pablo
    Pablo napisał(a):

    No i cyka :) Dzięki.
    Swoją drogą wszystko jakieś takie porozrzucane w tym skrypcie jest. Ale być może mi, jako osobie nie znającej się na programowaniu, tak się wydaje :D

Komentowanie zostało zablokowane