• Hi

    I’m trying to get alternating comment styles working on my blog. You can see an example of a post here:

    https://www.urbaneblinds.co.uk/blinds-blog/?p=3#comment-3

    The problem seems to be that the class ‘alt’ is not being output into the code for some reason. Here’s what I’ve got in comments.php:

    <?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"><?php _e("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) : ?>
     <a name="comments"></a><h2><?php comments_number('No Responses','One Response','% Responses' );?></h2>
    
    <ol class="commentlist">
    <?php foreach ($comments as $comment) : ?>
    <li <?php echo $oddcomment; ?>id="comment-<?php comment_ID() ?>">
    <cite>
    <span class="author"><?php comment_author_link() ?></span><br /><span class="time"><?php comment_time() ?></span> on <a href="#comment-<?php comment_ID() ?>" title=""><?php comment_date('F jS, Y') ?></a> <?php edit_comment_link('edit','&nbsp;&nbsp;',''); ?>
    </cite>
    <div class="commenttext"><?php comment_text() ?></div>
    <?php if ($comment->comment_approved == '0') : ?>
    Your comment is awaiting moderation.
    <?php endif; ?>
    </li>
    <?php
    /* Changes every other comment to a different class */
    $oddcomment = ( empty( $oddcomment ) ) ? 'class="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 for this post.</p>
    
     <?php endif; ?>
    <?php endif; ?>
    
    <?php if ('open' == $post-> comment_status) : ?>
    
    <a name="respond"></a><h3>Leave a Comment</h3>
    <form action="<?php echo get_settings('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
    
    <p><input type="text" name="author" id="author" class="styled" value="<?php echo $comment_author; ?>" size="22" tabindex="1" />
    <input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" />
    <input type="hidden" name="redirect_to" value="<?php echo htmlspecialchars($_SERVER["REQUEST_URI"]); ?>" />
    <label for="author"><small>Name</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)</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>
    
    <!--<p><small><strong>XHTML:</strong> 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>
    
    <?php if ('none' != get_settings("comment_moderation")) { ?>
     <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="Submit Comment" /></p>
    
    </form>
    
    <?php // if you delete this the sky will fall on your head
    endif; ?>

    Any ideas what I’m doing wrong?

    Thanks! ??

Viewing 4 replies - 1 through 4 (of 4 total)
  • Thread Starter ninjastory

    (@ninjastory)

    Any ideas guys? Thanks.

    [Apologies for the bump]

    $oddcomment = "alt"; should be $oddcomment = "alt";

    In situations like this, it’s best to compare a working example, i.e., the default theme.

    lol @scribblerguy… I don’t see a difference in what you posted.

    anyway…. here’s the culprit:

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

    should be:

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

    see the difference? the alt was being used, it just wasn’t specified as a class.

    Thanks, Ivovic. I was too fast on the “copy” trigger. Here is what I meant:

    /* This variable is for alternating comment background */
      $oddcomment = "alt";

    If one is following the default theme’s method, then it should be $oddcomment = ‘class=”alt” ‘;. And, when the$oddcomment` variable is switched, here:

    /* Changes every other comment to a different class */
    $oddcomment = ( empty( $oddcomment ) ) ? 'class="alt" ' : '';

    Then, the 'class="alt" ' needs to match what one originally set as the $oddcomment variable.

    Based on the OP’s settings, the alternating classes would work, just only on the third, fifth, etc., comment entries.

Viewing 4 replies - 1 through 4 (of 4 total)
  • The topic ‘Trouble getting alternating comment styles to work’ is closed to new replies.