Перейти к содержимому



Косяк с comments.php + functions.php. Нужна помощь!

#1 MakLeR

MakLeR
  • Пользователь
  • 20 сообщений
  • Репутация: 0
0

Отправлено 31 Май 2013 - 10:54

В общем, сейчас верстаю свою тему для блога с нуля. Но вот на днях заметил несколько косяков, связанных с комментариями. Самостоятельно решить не получается.

Итак, комментарии к посту выводятся с помощью <?php comments_template(); ?>

Косяк 1. На страницах постов, у которых 1 и более комментариев, заголовок списка и список комментариев, и форма выводятся нормально. А вот когда у поста нет комментариев, естественно, выводится только форма, но не выводится заголовок комментариев с их количеством, типа "к данному посту уже 1 коммент. и т.д."

Косяк 2. Стоит мне только залогиниться на блоге админом и перейти на страницу с постом, тут появляется другой косяк: заголовок списка и список комментариев выводится, но нет формы комментариев, чтобы оставить отзыв. Вижу только чекбокс с подпиской на комменты и кнопку "добавить комментарий".

Предоставляю содержимое файла comments.php

<div id="comments">
<?php // Do not delete these lines
if (!empty($_SERVER['SCRIPT_FILENAME']) && 'comments.php' == basename($_SERVER['SCRIPT_FILENAME']))
die ('Нет смысла загружать этот файл напрямую. Да.');
if ( post_password_required() ) { ?>
  <p class="nocomments">Эта страница - защищена паролем. Введите пароль, чтобы прочитать комментарии</p>
<?php
return;
}
// add a microid to all the comments
function comment_add_microid($classes) {
$c_email=get_comment_author_email();
$c_url=get_comment_author_url();
if (!empty($c_email) && !empty($c_url)) {
  $microid = 'microid-mailto+http:sha1:' . sha1(sha1('mailto:'.$c_email).sha1($c_url));
  $classes[] = $microid;
}
return $classes;
}
add_filter('comment_class','comment_add_microid');
// show the comments
if ( have_comments() ) : ?>
<h4><span class="green">Отзывов к посту <?php the_title('"', '"'); ?> <?php comments_number('пока нет', 'уже: 1', 'уже: %'); ?></span></h4>

<ol class="commentlist" id="singlecomments">
<?php wp_list_comments('callback=custom_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.
else :
  // comments are closed
endif;
endif;
if ('open' == $post-> comment_status) :
// show the form
?>

<div id="respond">
	<h4><?php comment_form_title('Ваш комментарий:', 'Вы отвечаете на отзыв %s'); ?><?php cancel_comment_reply_link('Отмена') ?></h4>
  
	<?php if ( get_option('comment_registration') && !$user_ID ) : ?>
  
	<p><a href="<?php echo wp_login_url(get_permalink()); ?>" title="Войдите">Войдите</a>, чтобы написать отзыв.</p>
  
	<?php else : ?>
  
	<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
  
	<?php if ( $user_ID ) : ?>
  
		<div class="alignleft">Добро пожаловать, <a href="<?php echo get_option('siteurl'); ?>/wp-admin/profile.php"><?php echo $user_identity; ?></a></div>
		<div class="alignright"><a href="<?php echo wp_logout_url(get_permalink()); ?>" title="">Выйти &raquo;</a></div>
  
	<?php else : ?>
  
		<textarea name="comment" id="comment" cols="30" rows="7" tabindex="1"></textarea>
  
	<table>
		<tr>
			<td><div class="comment-input author-field"><input type="text" name="author" id="author" placeholder="Ваше имя" value="<?php echo $comment_author; ?>" tabindex="2"/></div></td>
			<td><div class="comment-input email-field"><input type="text" name="email" id="email" placeholder="Ваша почта" value="<?php echo $comment_author_email; ?>" tabindex="3" /></div></td>
			<td><div class="comment-input url-field"><input type="text" name="url" id="url" placeholder="Сайт" value="<?php echo $comment_author_url; ?>" tabindex="4" /></div></td>
		</tr>
	</table>
<?php endif; ?>
<div class="comment-submit clearfix">
	<div class="pull-left">
	<?php comment_id_fields(); ?>
	<input type="hidden" name="redirect_to" value="<?php echo htmlspecialchars($_SERVER["REQUEST_URI"]); ?>" />
	<?php show_subscription_checkbox(); ?>
	</div>
<div class="pull-right">
<button name="submit" type="submit" id="submit" tabindex="5">Добавить</button>
	<input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" />  
</div>
</div>
<?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 ?>

</div><!-- End comments -->

А так же содержимое файла functions.php, отвечающее за комментарии:

/* свой формат комментариев. Its own format comments */
   function custom_comment($comment, $args, $depth) {
   $GLOBALS['comment'] = $comment; ?>
  <li <?php comment_class(); ?> id="li-comment-<?php comment_ID( ); ?>">

	<div id="comment-<?php comment_ID( ); ?>" class="single_comment">
		<?php echo get_avatar( $comment, 48 ); ?>
	  
  <div class="comment-wrapper">
		<div class="commentmetadata">
			 <?php comment_ID( ); ?>. <span class="comment-author"><?php comment_author_link() ?></span> пишет <?php comment_date('d.m.Y') ?> в <?php comment_time() ?>
			 <?php if (function_exists('comment_subscription_status')) { if (comment_subscription_status()) { echo '(подписан на отзывы)'; } } ?> <?php edit_comment_link('Редактировать','| ',''); ?>
		</div>

		<?php if ($comment->comment_approved == '0') : ?>
		<span class="moderation">Ваш отзыв ожидает модерации.</span>
		<?php endif; ?>

		<div class="comment-entry">
		   <?php comment_text() ?>
		</div>
	
		<?php echo comment_reply_link(array('before' => '<div class="reply">', 'after' => '</div>', 'reply_text' => 'Ответить', 'depth' => $depth, 'max_depth' => $args['max_depth'] ));  ?>
  </div>
	</div>
<?php }
?>
<?php
add_filter( 'comments_template', 'legacy_comments' );
function legacy_comments( $file ) {
if ( !function_exists('wp_list_comments') )
  $file = TEMPLATEPATH . '/legacy.comments.php';
return $file;
}
?>

Сорри за большое количество кода ;-)

Помогите разобраться с этими косяками...

 

 

  • 0

#2 isvetlichniy

isvetlichniy
  • Пользователь
  • 619 сообщений
  • Репутация: 93

Отправлено 31 Май 2013 - 12:07

В общем, сейчас верстаю свою тему для блога с нуля.


какая версия WP?
  • 0

#3 MakLeR

MakLeR
    Topic Starter
  • Пользователь
  • 20 сообщений
  • Репутация: 0

Отправлено 31 Май 2013 - 12:28

3.5.1


  • 0

#4 isvetlichniy

isvetlichniy
  • Пользователь
  • 619 сообщений
  • Репутация: 93

Отправлено 31 Май 2013 - 12:50

я не знаю , как ты делаешь тему с нуля, но я обычно делаю так.
для версии 3.5.1 полностью копирую тему twentytwelve (тема тем хорошо, что по сути только основная разметка сделана и все), переименовываю папку со скопированной темой ну и начинаю править под свой шаблон
никаких косяков не возникает никогда. я так уже сделал не один десяток сайтов
  • 0

#5 MakLeR

MakLeR
    Topic Starter
  • Пользователь
  • 20 сообщений
  • Репутация: 0

Отправлено 31 Май 2013 - 13:54

Делаю так: верстаю html-шаблон, а потом начиняю его функциями WP, разбиваю по файлам код.
Тоже думал так сделать, как ты, но не охото было разбираться в коде и удалять ненужные части...
  • 0

#6 isvetlichniy

isvetlichniy
  • Пользователь
  • 619 сообщений
  • Репутация: 93

Отправлено 31 Май 2013 - 14:10

Делаю так: верстаю html-шаблон, а потом начиняю его функциями WP, разбиваю по файлам код.

как по мне, это намного дольше будет, это первое.
а второе, начнутся вот такие косяки как ты говоришь.
поверь моему опыту.
хотя хозяин - барин
  • 0

#7 MakLeR

MakLeR
    Topic Starter
  • Пользователь
  • 20 сообщений
  • Репутация: 0

Отправлено 31 Май 2013 - 14:18

У меня еще попутный вопрос (еще один косяк объявился): при уменьшении масштаба страницы в браузере у меня съезжают блоки со своих мест, как-будто они не умещаются в родительский блок. Из-за чего может быть? Впервые сталкиваюсь с таким...
  • 0

#8 isvetlichniy

isvetlichniy
  • Пользователь
  • 619 сообщений
  • Репутация: 93

Отправлено 31 Май 2013 - 17:10

при уменьшении масштаба страницы в браузере у меня съезжают блоки со своих мест,


ну это резиновая верстка. задай фиксированную ширину для родительского блока
  • 0

#9 MakLeR

MakLeR
    Topic Starter
  • Пользователь
  • 20 сообщений
  • Репутация: 0

Отправлено 31 Май 2013 - 21:10

блоку задана ширина и выравнивание по центру.


  • 0

#10 isvetlichniy

isvetlichniy
  • Пользователь
  • 619 сообщений
  • Репутация: 93

Отправлено 31 Май 2013 - 21:42

может ты сайт покажешь? а то гадаем сидим...
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru