Internet Lynx

Blog > Aberatii nocturne > Modifică-ţi tema pentru WordPress 2.7

Modifică-ţi tema pentru WordPress 2.7

Autor : Alexandru Negrea | 12 Dec 2008 | 22 comentarii.
Pentru noutati ma gasesti pe Twitter| Facebook| Tumblr
Propuneri prin pagina de contact sau la adresa de email alexandru.negrea (la) gmail (punct) com

Am văzut că nu e foarte clar ce şi cum trebuie modificat, astfel încât temele WordPress apărute înainte de versiunea 2.7, să suporte şi noile îmbunătăţiri (threaded/nested comments, paginare nativă a comentariilor). Înainte de toate vreau să fie cât se poate de clar că, dacă NU faci această modificare, blogul tău va funcţiona perfect, ca şi până acum, aşa că relaxează-te.
Bun, pentru a începe trebuie să adaugi o mică funcţie în fişierul header.php al temei tale. Deschide-l şi caută :

<?php wp_head(); ?>

Adaugă deasupra acestei functii, codul de mai jos :

<?php if (is_singular()) wp_enqueue_script('comment-reply'); ?>

Acum, javascriptul folosit pentru comentarii se încarcă, deci putem trece la următorul pas (modificarea fişierului comments.php

1. În primul rând, hai să ne familiarizăm cu noua funcţie ce afişează comentariile :

<?php wp_list_comments(); ?>

Da, funcţia asta mică a înlocuit toată polologhia aia din versiunile anterioare de WordPress. Nu mai e nevoie de funcţii repetitive, nu mai e nevoie de adăugarea de grămezi de clase CSS pentru stilizare, munca a fost uşurată enorm. Acum să înţelegem ce anume afişează această funcţie şi ce parametrii are (trebuie să o personalizăm cumva) :

    a. Afişează automat gravatarul comentatorului. Pentru a modifica dimensiunea acestuia, funcţia de mai sus se transformă în (35 reprezintă lungimea/lăţimea avatarului) :

    <?php wp_list_comments(array('avatar_size'=>35)); ?>

    b. Dacă este definit, poate afişa linkul de reply pentru fiecare comentariu. Ideea cu acest link de reply este că permite răspunsurile în mod thread (replica ta pentru un comentariu anterior, se adaugă imediat sub comentariul respectiv, în aceeaşi clasă CSS cu el). Definirea se face astfel :

    <?php wp_list_comments(array('avatar_size'=>35, 'reply_text'=>'Reply to this Comment')); ?>

2. Pentru stilizarea listei de comentarii au apărut câteva clase CSS standard, să zicem. Asta înseamnă că vei deschide fisierul style.css al temei tale şi vei defini acolo următoarele clase :

    a) .comment, .trackback, .pingback – clasele pentru comentarii, pinguri, trackabackuri;
    b) .reply – clasa linkului de reply vizibil pentru fiecare comentariu în parte;
    c) .cancel-comment-reply – clasa linkului de anulare a unui reply;
    d) .comment-meta sau .commentmetadata – clasa pentru metadata-ul fiecărui comentariu în parte;
    e) .comment-author-admin – clasa pentru comentariile administratorului (admin poate fi înlocuit cu orice alt user);

3. Formul de publicare comentarii s-a modificat şi el într-o oarecare măsură, trebuind să fie încadrat obligatoriu într-un ID CSS, numit “#respond”. Dacă tot eşti acolo, deasupra formului de scriere mesaj (textarea), adaugă :

<?php comment_id_fields(); ?>

Această funcţie se ocupă cu partajarea comentariilor (daca au sau un “comentariu tată”), dar ai grijă că anumite teme au definită sintaxa de mai jos (daca există, sterge-o) :

<input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" />

Nu mai e nevoie de ea şi mai mult de atât, aceasta împiedică afişarea corespunzătoare a reply-urilor, adăugând fiecărui comentariu un nou id, independent de celelalte.

4. Linkurile de navigare prin paginile comentariilor (dacă este activată funcţia de paginare din Settings -> Discussions) :

    <?php previous_comments_link() ?> | <?php next_comments_link() ?>

Ştiu că pare un pic complicat, însă te vei obişnui repede cu aceste modificări pentru că în mod cert e mult mai simplu aşa. Un exemplu de comments.php (folosit în ultima temă pe care am lansat-o), avem mai jos :

<?php // Do not delete these lines
if (!empty($_SERVER['SCRIPT_FILENAME']) && 'comments.php' == basename($_SERVER['SCRIPT_FILENAME']))
	die ('Please do not load this page directly. Thanks!');
if ( post_password_required() ) { ?>
	<p class="nocomments">This post is password protected. Enter the password to view comments.</p>
<?php if ( have_comments() ) : ?>
	<ul class="commentlist" id="singlecomments">
	<?php wp_list_comments(array('avatar_size'=>35, 'reply_text'=>'Reply to this Comment')); ?>
	</ul>
	<div class="nav">
		<div class="alignleft"><?php previous_comments_link() ?></div>
		<div class="alignright"><?php next_comments_link() ?></div>
        <div class="clear"></div>
	</div>
 <?php else : // this is displayed if there are no comments so far ?>

	<?php if ('open' == $post->comment_status) :
		// If comments are open, but there are no comments.
	else :
		// comments are closed
	endif;
endif;

if ('open' == $post-> comment_status) :

// show the form
?>
<div id="respond"><h3><?php comment_form_title('Leave a Reply', 'Leave a Reply to %s'); ?></h3>

<div id="cancel-comment-reply">
	<small><?php cancel_comment_reply_link(); ?></small>
</div>

<?php if ( get_option('comment_registration') && !$user_ID ) : ?>

<p>You must be <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=<?php echo urlencode(get_permalink()); ?>">logged in</a> to post a comment.</p>

<?php else : ?>

<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">

<?php if ( $user_ID ) : ?>

<p>Logged in as <a href="<?php echo get_option('siteurl'); ?>/wp-admin/profile.php"><?php echo $user_identity; ?></a>.
<a href="<?php echo get_option('siteurl'); ?>/wp-login.php?action=logout" title="Log out of this account">Logout &raquo;</a></p>

<?php else : ?>
<p>Name <?php if ($req) echo "(required)"; ?></p>
<p><input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="22" tabindex="1" /></p>
<p>Email <?php if ($req) echo "(required)"; ?></small></label></p>
<p><input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="22" tabindex="2" /></p>
<p>Website</p>
<p><input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="22" tabindex="3" /></p>

<?php endif; ?>

<div>
<?php comment_id_fields(); ?>
<input type="hidden" name="redirect_to" value="<?php echo htmlspecialchars($_SERVER["REQUEST_URI"]); ?>" /></div>

<p><textarea name="comment" id="comment" cols="6" rows="6" tabindex="4"></textarea></p>

<?php if (get_option("comment_moderation") == "1") { ?>
 <p><small><strong>Please note:</strong> Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.</small></p>
<?php } ?>

<p><input name="submit" type="submit" id="submit" tabindex="5" value="Publish Comment" style="cursor:pointer" /></p>
<?php do_action('comment_form', $post->ID); ?>

</form>
</div>
<?php
endif;

endif;

Te-ar putea interesa si alte articole

Aboneaza-te prin email :

Comentarii (22)

  • Napster says:

    Foarte buna initiativa. O sa imi “repar” si eu tema.

  • BoGy says:

    Foarte interesant.Eu ma gandeam prima data ca va trebui sa modific cel putin jumate din codul temei…Dar iata ca e foarte simplu.Mersi!

  • ciops says:

    Foarte bun articolul :)

  • Alex Olaru says:

    Eu de la primul punct m-am pierdut :)

    Unde anume si ce trebuie sa modific de la punctul 2 in jos ?

    Am facut doar modificarea aia de header si as vrea sa le fac si pe celelalte daca as sti cum si unde :)

    PS: Nu-s bun la programare, chiar deloc.

  • hostsniper says:

    Mersi buddha, esti de ajutor !

  • Pentru cunoscatori probabil este foarte util, dar eu nu am reusit sa ma descurc doar cu indicatiile date asa ca am renuntat (bine ca trebuie sa recunosc ca si experienta mea in ale wp-ului este 0).

  • t3mb3 says:

    ..cata rabdare poti avea!

  • Buddha says:

    @Alex Olaru: În afară de prima funcţie menţionată, care trebuie adăugată în fişierul header.php, următoarele se modifică în fişierul comments.php.
    Recomandarea mea e să nu faceti aceste modificări dacă nu aveţi noţiunile generale de php/css.

  • ERIKA este o fetita de 2 ani ce sufera de LEUCEMIE LIMFOBLASTICA ACUTA. Ea are nevoie de 150.000 EUR pentru a se face bine.Cabral a organizat un concert caritabil pentru a strange acesti bani. Duminica seara in CLUB FIAT 500 CABARET vor canta SPIN, VAMA SI DIRECTIA 5. Pret 30 LEI – MERGETI SI ACESTI BANI VOR INTRA IN CONTUL EI! Mai multe detalii aici – http://www.teleleu.info/2008/12/pentru-erika-2.html

  • Cristi says:

    Buna!
    Am studiat instructiunile din acest articol in speranta ca voi reusi sa-mi rezolv o problema aparuta intr-o tema. Nu am reusit.
    M-am gandit ca a venit timpul sa-mi pun o tema compatibila cu wp 2.7-2.8 si am gasit una care imi place, dar nu-mi afiseaza comentariile din pagini. De fapt nu mi le afiseaza pe primele 50 si nu-mi da link care comentarii mai vechi si mai noi, asa cum imi da la articole… Nu-mi dau seama ce cod imi lipseste si unde trebuie inserat. In rest, tema pare ca merge bine pe wp 2.8. Tema este la pagina http://www.magznetwork.com/wordpress-themes/indomagz-blog-wordpress-theme.html .
    Sper sa ma puteti ajuta.
    Multumesc!

    • Uită-te în single.php şi apoi în page.php şi vezi exact cum este chemată funcţia de afişare a comentariilor. E posibil să fie separate comentariile de trackback-uri, caz în care funcţia diferă puţin.

  • Cristi says:

    Da, comentariile sunt separate de trackback-uri. Problema apare numai in paginile statice. Am peste 50 de comentarii la o pagina si imi afiseaza doar ce trece de 50. Am facut mai multe teste, dar inca n-am rezolvat problema. Vreau sa-mi apara link-uri spre comentariile mai vechi si noi…
    Iti multumesc pt ca mi-ai raspuns, si astept o solutie… daca ma poti ajuta.
    Multumesc!

  • Stinky39 says:

    This recession is ending, the longest since the 1930s. ,

  • Mark29 says:

    First Duvivier, now Dieterle. ,

  • Trackbacks/Pingbacks

    Mentiuni pe Twitter

    loading..

    Lasa un comentariu