Wordpress and Webdesign Forum go41 » WordPress Code Snippets

  1. Many people love the WordPress feature of threaded comments. As this option is available in wordpress now, I would like to use it.
    Many older themes do not support this feature, it's not built in and just doesn't work.

    Anyone an idea how to get threaded comments working in older themes? I use arthemia free on http://gadgets.ezxplain.com/ and want to enable users to reply on existing comments, so the discussion will be displayed threaded or nested.

    Posted 1 year ago #
  2. In arthemia you could take the code below as modified comments.php

    <?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
    		return;
    	}
    ?>
    
    <!-- You can start editing here. -->
    
    <?php if ( have_comments() ) : ?>
    	<h3 id="comments"><?php comments_number('No Responses', 'One Response', '% Responses' );?> to “<?php the_title(); ?>”</h3>
    
    	<div class="navigation">
    		<div class="alignleft"><?php previous_comments_link() ?></div>
    		<div class="alignright"><?php next_comments_link() ?></div>
    	</div>
    
    	<ol class="commentlist">
    	<?php wp_list_comments(); ?>
    	</ol>
    
    	<div class="navigation">
    		<div class="alignleft"><?php previous_comments_link() ?></div>
    		<div class="alignright"><?php next_comments_link() ?></div>
    	</div>
     <?php else : // this is displayed if there are no comments so far ?>
    
    	<?php if ( comments_open() ) : ?>
    		<!-- If comments are open, but there are no comments. -->
    
    	 <?php else : // comments are closed ?>
    		<!-- If comments are closed. -->
    		<p class="nocomments">Comments are closed.</p>
    
    	<?php endif; ?>
    <?php endif; ?>
    
    <?php if ( comments_open() ) : ?>
    
    <div id="respond">
    
    <h3><?php comment_form_title( 'Leave a Reply', 'Leave a Reply to %s' ); ?></h3>
    
    <div class="cancel-comment-reply">
    	<small><?php cancel_comment_reply_link(); ?></small>
    </div>
    
    <?php if ( get_option('comment_registration') && !is_user_logged_in() ) : ?>
    <p>You must be <a href="<?php echo wp_login_url( 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 ( is_user_logged_in() ) : ?>
    
    <p>Logged in as <a href="<?php echo get_option('siteurl'); ?>/wp-admin/profile.php"><?php echo $user_identity; ?></a>. <a href="<?php echo wp_logout_url(get_permalink()); ?>" title="Log out of this account">Log out &raquo;</a></p>
    
    <?php else : ?>
    
    <p><input type="text" name="author" id="author" value="<?php echo esc_attr($comment_author); ?>" size="22" tabindex="1" <?php if ($req) echo "aria-required='true'"; ?> />
    <label for="author"><small>Name <?php if ($req) echo "(required)"; ?></small></label></p>
    
    <p><input type="text" name="email" id="email" value="<?php echo esc_attr($comment_author_email); ?>" size="22" tabindex="2" <?php if ($req) echo "aria-required='true'"; ?> />
    <label for="email"><small>Mail (will not be published) <?php if ($req) echo "(required)"; ?></small></label></p>
    
    <p><input type="text" name="url" id="url" value="<?php echo esc_attr($comment_author_url); ?>" size="22" tabindex="3" />
    <label for="url"><small>Website</small></label></p>
    
    <?php endif; ?>
    
    <!--<p><small><strong>XHTML:</strong> You can use these tags: <code><?php echo allowed_tags(); ?></code></small></p>-->
    
    <p><textarea name="comment" id="comment" cols="100%" rows="10" tabindex="4"></textarea></p>
    
    <p><input name="submit" type="submit" id="submit" tabindex="5" value="Submit Comment" />
    <?php comment_id_fields(); ?>
    </p>
    <?php do_action('comment_form', $post->ID); ?>
    
    </form>
    
    <?php endif; // If registration required and not logged in ?>
    </div>
    
    <?php endif; // if you delete this the sky will fall on your head ?>

    here is the reply loop for threaded comments included, so just replace the content above with the content of your arthemia theme's comments.php

    to get the correct styling you have to edit style.css too. Add the following entries:

    /* threaded comments style, edited to use default themes comments.php with arthemia */
    /* Begin Comments*/
    .alt {margin: 0;padding: 10px;}
    .even, .alt {border-left:1px solid #DDDDDD;}
    .children { padding: 0; }
    .commentlist {padding: 0;text-align: justify;}
    .commentlist li{background:#F2F2F2 none repeat scroll 0 0; border-bottom:1px solid #DCDBD7; color:#4D4D4D; font-weight:bold; line-height:1.25em; list-style-image:none; list-style-position:outside; list-style-type:none; margin:15px 0 10px; padding:5px 5px 10px 10px;}
    .commentlist li ul li { margin-right: -5px;margin-left: 10px;font-size:1em;background: #F8F8F8;}
    .commentlist li .avatar { float: right;width:45px;height:45px;border: 1px solid #eee;padding: 2px;background: #fff;}
    .commentlist p {margin: 10px 5px 10px 0;font-weight:normal;line-height:1.5em;text-transform:none;}
    .commentlist blockquote{background:#ededed}
    .commentlist small{background:#e9e9e9}
    .commentlist cite, .commentlist cite a {font-weight: bold;font-style: normal;font-size: 1.1em;}
    .commentlist li.comment-author-admin {background: #E2E4FF;}
    .commentmetadata {margin: 0;display: block;font-weight:normal;}
    #commentform {margin: 5px 10px 0 0;}
    #commentform p {margin: 5px 0;}
    #commentform input {width: 170px;padding: 2px;margin: 5px 5px 1px 0;}
    #commentform small{background:#FFF; font-weight:bold; padding:0}
    #commentform textarea {width: 100%;padding: 2px;}
    #commentform #submit {margin: 0 0 5px auto;float: right;}
    #respond:after {content: "."; display: block; height: 0; clear: both; visibility: hidden;}
    .nocomments {text-align: center;margin: 0;padding: 0;}
    /* End Comments */

    and delete all entries formatting the former comments.php as shown below:

    #commentform input {
    	width: 140px;
    	margin: 5px 5px 1px 0;
    	}
    
    #commentform textarea {
    	width: 99%;
    	margin-top:5px;
    	}
    
    /* Comments*/
    
    .commentlist cite {
    	font-style:normal;
    	margin-bottom:4px;
    	display:block;
    	}	
    
    .commentlist blockquote {
    	background:#ededed;
    	}
    
    .commentlist li {
    	padding: 10px 0px 10px 0px;
    	list-style:none;
    	margin-bottom:3px;
    	}
    
    .commentlist li li {
    	background:none;
    	border:none;
    	list-style:square;
    	margin:3px 0 3px 20px;
    	padding:3px 0;
    	}
    
    .commenttext {
    	padding: 10px 10px 0px 10px;
    	background:#f2f2f2;
    	border-top:1px solid #ddd;
    	border-bottom: 1px solid #ddd;
    	width:495px;
    	float:right
    	}
    
    .commentlist cite strong {
    	font-size:1.1em;
    	}
    
    li.my_comment {
    	background: #FFF;
    	border:none;
    	}
    
    li.my_comment cite strong {
    	font-size: 1.3em;
    	color:#313228;
    	}
    
    #commentform small {
    	background:#FFF;
    	font-weight:bold;
    	padding:0;
    	}
    
    .commentmetadata {
    	color:#4d4d4d;
    	display: block;
    	margin-top:3px;
    	text-align:right;
    	font-size:0.9em;
    	}
    
    .commentmetadata a, .commentmetadata a:visited {
    	color:#959382;
    	}
    
    .commentlist small {
    	background:#e9e9e9;
    	}
    
    .avatar {
    	border:1px solid #bbb;
    	margin:0px 10px 0px 0px;
    	float:left;
    	padding:2px;
    	width:55px;
    	height:55px;
    	}	
    
    #comment {
    	width:590px;
    	background:#fff;
    	}

    now enable threaded comments in your dashboard if not done already and enjoy!

    btw: see a demo of threaded comments here:
    T-Rex 450 XL mit Fusuno retract kit

    Posted 1 year ago #
  3. member
    Member

    Hello,

    Thank you for the reply.

    So basically I open comments.php, select it all, delete it and out in:

    <?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
    return;
    }
    ?>

    <!-- You can start editing here. -->

    <?php if ( have_comments() ) : ?>
    <h3 id="comments"><?php comments_number('No Responses', 'One Response', '% Responses' );?> to “<?php the_title(); ?>”</h3>

    <div class="navigation">
    <div class="alignleft"><?php previous_comments_link() ?></div>
    <div class="alignright"><?php next_comments_link() ?></div>
    </div>

    <ol class="commentlist">
    <?php wp_list_comments(); ?>

    <div class="navigation">
    <div class="alignleft"><?php previous_comments_link() ?></div>
    <div class="alignright"><?php next_comments_link() ?></div>
    </div>
    <?php else : // this is displayed if there are no comments so far ?>

    <?php if ( comments_open() ) : ?>
    <!-- If comments are open, but there are no comments. -->

    <?php else : // comments are closed ?>
    <!-- If comments are closed. -->
    <p class="nocomments">Comments are closed.</p>

    <?php endif; ?>
    <?php endif; ?>

    <?php if ( comments_open() ) : ?>

    <div id="respond">

    <h3><?php comment_form_title( 'Leave a Reply', 'Leave a Reply to %s' ); ?></h3>

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

    <?php if ( get_option('comment_registration') && !is_user_logged_in() ) : ?>
    <p>You must be ">logged in to post a comment.</p>
    <?php else : ?>

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

    <?php if ( is_user_logged_in() ) : ?>

    <p>Logged in as /wp-admin/profile.php"><?php echo $user_identity; ?>. " title="Log out of this account">Log out »</p>

    <?php else : ?>

    <p><input type="text" name="author" id="author" value="<?php echo esc_attr($comment_author); ?>" size="22" tabindex="1" <?php if ($req) echo "aria-required='true'"; ?> />
    <label for="author"><small>Name <?php if ($req) echo "(required)"; ?></small></label></p>

    <p><input type="text" name="email" id="email" value="<?php echo esc_attr($comment_author_email); ?>" size="22" tabindex="2" <?php if ($req) echo "aria-required='true'"; ?> />
    <label for="email"><small>Mail (will not be published) <?php if ($req) echo "(required)"; ?></small></label></p>

    <p><input type="text" name="url" id="url" value="<?php echo esc_attr($comment_author_url); ?>" size="22" tabindex="3" />
    <label for="url"><small>Website</small></label></p>

    <?php endif; ?>

    <!--<p><small>XHTML: You can use these tags: <?php echo allowed_tags(); ?></small></p>-->

    <p><textarea name="comment" id="comment" cols="100%" rows="10" tabindex="4"></textarea></p>

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

    </form>

    <?php endif; // If registration required and not logged in ?>
    </div>

    <?php endif; // if you delete this the sky will fall on your head ?>

    The above taken from your post at the beginning.

    Then follow the rest of the instructions?

    Posted 8 months ago #
  4. that's right, replace actually the whole file with this new content.

    Finally the bigger problem is the style.css, you have to add new code and delete old stuff as it will not display correctly with all left in.

    Posted 8 months ago #
  5. member
    Member

    Hello,

    It doesn't seem to work for me.

    I have a plugin installed for threaded comments but this theme breaks it by putting the break in between.

    However I ignored the plugin and edited the code and when I replied it didn't become thread, instead it went right to the bottom.

    Why is that?

    Posted 8 months ago #
  6. did you enable threaded (nested) comments under Settings - Discussions?
    Set it to minimum 2 levels deep to work

    Posted 8 months ago #
  7. member
    Member

    Yes I did. And it doesn't come out 'nested'. If I reply, the reply comes right at the end instead of next to the person's comment.

    Posted 8 months ago #
  8. is your site online? for me it works as can be seen here:
    T-Rex 450 XL mit Fusuno retract kit

    Posted 8 months ago #
  9. member
    Member

    okay it works now when I disabled the plugin.

    arabic doesn't work.

    do you know how to fix it?

    Posted 8 months ago #

RSS feed for this topic

Reply

You must log in to post.

Join us! or log in (lost password?):