WordPress.org

Ready to get started?Download WordPress

Forums

Add Numbers to Comments Without foreach (12 posts)

  1. feisthammel
    Member
    Posted 2 years ago #

    I've been building my site's theme around Toolbox and while it's been a huge help, I've run into some issues as well. The one I'm wrestling with right now is how to add a number (#1, #2, #3, etc.) to each comment in a comments template that doesn't use foreach.

    As far as I can tell, all of the usual methods for adding a comment number seem to require foreach in order to keep the count going. I tried the whole <?php $i = 1; ?> and <?php $i++; ?> trick, but the count doesn't increase, and I assume it has to do with the way the PHP is structured in Toolbox. Not knowing much about PHP myself, however, I'm not sure how to correct it without burning the comments template and starting over.

    You can find a copy of the original comments.php at http://feisthammel.com/comments.txt. Thanks for your help!

  2. KimberlyRae
    Member
    Posted 2 years ago #

    Does this put a NUMBER next to the COMMENT?

  3. blakewatson
    Member
    Posted 2 years ago #

    Toolbox 1.2 has the following:

    <ol class="commentlist">
        <?php
            wp_list_comments( array( 'callback' => 'toolbox_comment' ) );
        ?>
    </ol>

    Since it's an ordered list, numbers would be added by default.

  4. KimberlyRae
    Member
    Posted 2 years ago #

    Blake Watson---> here's the code in my comments.php folder.
    Can you PLEASE Tell Me HOW To Get EACH One of my COMMENTS NUMBERED?
    THank you in Advance, KimberlyRae

    CODE:

    <?php // Do not delete these lines
    if ('comments.php' == basename($_SERVER['SCRIPT_FILENAME']))
    die ('Please do not load this page directly. Thanks!');

    if (!empty($post->post_password)) { // if there's a password
    if ($_COOKIE['wp-postpass_' . COOKIEHASH] != $post->post_password) { // and it doesn't match the cookie
    ?>

    <p class="nocomments">This post is password protected. Enter the password to view comments.<p>

    <?php
    return;
    }
    }

    /* This variable is for alternating comment background */
    $oddcomment = 'alt';
    ?>

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

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

    <div class="commentlist">

    <?php foreach ($comments as $comment) : ?>

    <div class="<?php echo $oddcomment; ?>" id="comment-<?php comment_ID(); ?>">
    <div class="commentmetadata">" title=""><?php comment_date('F jS, Y') ?> at <?php comment_time() ?> <?php edit_comment_link('e','',''); ?></div>

    <div class="comment_author"><?php comment_author_link() ?></div>
    <?php if ($comment->comment_approved == '0') : ?>
    Your comment is awaiting moderation.
    <?php endif; ?>

    <div class="comment_text">
    <?php comment_text() ?>
    </div>

    </div>

    <?php /* Changes every other comment to a different class */
    if ('alt' == $oddcomment) $oddcomment = '';
    else $oddcomment = 'alt';
    ?>

    <?php endforeach; /* end for each comment */ ?>

    </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. -->

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

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

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

    <h3 id="respond">Leave a Reply</h3>

    <?php if ( get_option('comment_registration') && !$user_ID ) : ?>
    <p>You must be /wp-login.php?redirect_to=<?php the_permalink(); ?>">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 ( $user_ID ) : ?>

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

    <?php else : ?>

    <p><input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="22" tabindex="1" />
    <label for="author"><small>Name <?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" />
    <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 $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="75%" rows="10" tabindex="4"></textarea></p>

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

    </form>

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

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

  5. blakewatson
    Member
    Posted 2 years ago #

    Try changing <div class="commentlist"> to <ol class="commentlist>". Remember to change the closing tag to </ol>.

    Then change the individual comment div, ie:

    <div class="<?php echo $oddcomment; ?>" id="comment-<?php comment_ID(); ?>">

    to this:

    <li class="<?php echo $oddcomment; ?>" id="comment-<?php comment_ID(); ?>">

    This will create an ordered (numbered) list. Here's the revised chunk of the relevant code:

    <ol class="commentlist">
    
    	<?php foreach ($comments as $comment) : ?>
    
    	<li class="<?php echo $oddcomment; ?>" id="comment-<?php comment_ID(); ?>">
    		<div class="commentmetadata">" title=""><?php comment_date('F jS, Y') ?> at <?php comment_time() ?> <?php edit_comment_link('e','',''); ?></div>
    
    		<div class="comment_author"><?php comment_author_link() ?></div>
    		<?php if ($comment->comment_approved == '0') : ?>
    		Your comment is awaiting moderation.
    		<?php endif; ?>
    
    		<div class="comment_text">
    		<?php comment_text() ?>
    		</div>
    	</li>
    
    	<?php /* Changes every other comment to a different class */
    	if ('alt' == $oddcomment) $oddcomment = '';
    	else $oddcomment = 'alt';
    	?>
    
    	<?php endforeach; /* end for each comment */ ?>
    
    </ol>
  6. KimberlyRae
    Member
    Posted 2 years ago #

    Blake---> you rock!
    Now, please explain 'where' I put all this?
    Do I delete what's in there [I don't want to mess anything up...lol]
    and
    REPLACE with your 'chunk' of new code?
    thanks!

  7. KimberlyRae
    Member
    Posted 2 years ago #

    ok, I went ahead and put the chunk of code in there and now I have this: " title=""> right before the date!!
    I want it to have a number infront, behind the persons name that left a comment. it doesn't matter where it's at as long as the number identifies the person that left the comment. thanks!
    reference: http://kreationsbykimberlyrae.com/blog/?p=603#comments

  8. blakewatson
    Member
    Posted 2 years ago #

    Try this:

    <?php // Do not delete these lines
    if ('comments.php' == basename($_SERVER['SCRIPT_FILENAME']))
    die ('Please do not load this page directly. Thanks!');
    
    if (!empty($post->post_password)) { // if there's a password
    if ($_COOKIE['wp-postpass_' . COOKIEHASH] != $post->post_password) { // and it doesn't match the cookie
    ?>
    
    <p class="nocomments">This post is password protected. Enter the password to view comments.<p>
    
    <?php
    return;
    }
    }
    
    /* This variable is for alternating comment background */
    $oddcomment = 'alt';
    ?>
    
    <!-- You can start editing here. -->
    
    <?php if ($comments) : ?>
    <h3 id="comments"><?php comments_number('No Responses', 'One Response', '% Responses' );?> to “<?php the_title(); ?>”</h3>
    
    <ol class="commentlist">
    
    <?php foreach ($comments as $comment) : ?>
    
    <li class="<?php echo $oddcomment; ?>" id="comment-<?php comment_ID(); ?>">
    <div class="commentmetadata" title=""><?php comment_date('F jS, Y') ?> at <?php comment_time() ?> <?php edit_comment_link('e','',''); ?></div>
    
    <div class="comment_author"><?php comment_author_link() ?></div>
    <?php if ($comment->comment_approved == '0') : ?>
    Your comment is awaiting moderation.
    <?php endif; ?>
    
    <div class="comment_text">
    <?php comment_text() ?>
    </div>
    
    </li>
    
    <?php /* Changes every other comment to a different class */
    if ('alt' == $oddcomment) $oddcomment = '';
    else $oddcomment = 'alt';
    ?>
    
    <?php endforeach; /* end for each comment */ ?>
    
    </ol>
    
    <?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. -->
    
    <?php else : // comments are closed ?>
    <!-- If comments are closed. -->
    <p class="nocomments">Comments are closed.</p>
    
    <?php endif; ?>
    <?php endif; ?>
    
    <?php if ('open' == $post->comment_status) : ?>
    
    <h3 id="respond">Leave a Reply</h3>
    
    <?php if ( get_option('comment_registration') && !$user_ID ) : ?>
    <p>You must be /wp-login.php?redirect_to=<?php the_permalink(); ?>">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 ( $user_ID ) : ?>
    
    <p>Logged in as /wp-admin/profile.php"><?php echo $user_identity; ?>. /wp-login.php?action=logout" title="Log out of this account">Logout »</p>
    
    <?php else : ?>
    
    <p><input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="22" tabindex="1" />
    <label for="author"><small>Name <?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" />
    <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 $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="75%" rows="10" tabindex="4"></textarea></p>
    
    <p><input name="submit" type="submit" id="submit" tabindex="5" value="Submit Comment" />
    <input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" />
    </p>
    <?php do_action('comment_form', $post->ID); ?>
    
    </form>
    
    <?php endif; // If registration required and not logged in ?>
    
    <?php endif; // if you delete this the sky will fall on your head ?>

    Replace your whole comments.php with this.

    DISCLAIMER: I'm just trying to help. You should always back up your site (or at least the affected files) before making any big changes. Please don't be mad at me if this doesn't work or breaks your site! :-)

  9. feisthammel
    Member
    Posted 2 years ago #

    It's true that it's an ol element and that provides a really handy way to take care of the numbering, but that doesn't help with threaded comments. They would wind up getting numbered separately, as with any other nested lists.

    That's probably fine, really, it's just not exactly what I had in my head. So it goes. PHP beggars can't be choosers.

    Looks like this has been helpful to someone, though, and I'm glad of that!

  10. blakewatson
    Member
    Posted 2 years ago #

    Ah. Yeah, that is a different beast altogether. Have you seen this plugin?

    http://wordpress.org/extend/plugins/gregs-threaded-comment-numbering/

  11. KimberlyRae
    Member
    Posted 2 years ago #

    Thank you, Blake!
    However, it's NOT numbering my *individual Comments*.....it
    s just keeping tract of the total Comments on the post. What on earth could I be missing??

  12. KimberlyRae
    Member
    Posted 2 years ago #

    Ok, I've taken a look at Gregs threaded comment numbering. He talks about wp_comments has to be replaced with a callback.....WHERE in your code is that?
    I don't see wp_comments anywhere .....

Topic Closed

This topic has been closed to new replies.

About this Topic