• Можно ли разделить главную страницу на два блока, в верхней вывести последние комментарии, а в нижней последние записи из определенной категории? насколько трудоемкая процедура?

Просмотр 6 ответов — с 1 по 6 (всего 6)
  • Ерундовая процедура. В шаблоне главной сначала получаем комментарии вызовом функции get_comments() (подробности в Документации) и выводим их. Затем получаем записи, скажем, функцией get_posts() и выводим их во второй части шаблона. С оформлением возни гораздо больше, чем с ворпрессозависимой частью задачи.

    Спасибо! А можно поточнее? Оч плохо соображаю еще с вызовами функций

    Модератор Юрій

    (@yube)

    А можно поточнее?

    В смысле? дать готовый код?

    нет хочу разобраться. искал пример. нашел вот что

    function recent_comments($limit=10, $ex=45, $cat=0, $echo=1, $gravatar=''){
    	global $wpdb;
    	if($cat){
    		$IN = (strpos($cat,'-')===false)?"IN ($cat)":"NOT IN (".str_replace('-','',$cat).")";
    		$join = "LEFT JOIN $wpdb->term_relationships rel ON (p.ID = rel.object_id)
    		LEFT JOIN $wpdb->term_taxonomy tax ON (rel.term_taxonomy_id = tax.term_taxonomy_id)";
    		$and = "AND tax.taxonomy = 'category'
    		AND tax.term_id $IN";
    	}
    	$sql = "SELECT comment_ID, comment_post_ID, comment_content, post_title, guid, comment_author, comment_author_email
    	FROM $wpdb->comments com
    		LEFT JOIN $wpdb->posts p ON (com.comment_post_ID = p.ID) {$join}
    	WHERE comment_approved = '1'
    		AND comment_type = '' {$and}
    	ORDER BY comment_date DESC
    	LIMIT $limit"; 
    
    	$results = $wpdb->get_results($sql);
    
    	$out = '';
    	foreach ($results as $comment){
    		if($gravatar)
    			$grava = '<img src="http://www.gravatar.com/avatar/'. md5($comment->comment_author_email) .'?s=$gravatar&default=" alt="" width="'. $gravatar .'" height="'. $gravatar.'" />';
    		$comtext = strip_tags($comment->comment_content);
    		$leight = (int) iconv_strlen( $comtext, 'utf-8' );
    		if($leight > $ex) $comtext =  iconv_substr($comtext,0,$ex, 'UTF-8').' …';
    		$out .= "\n<li>$grava<b>".strip_tags($comment->comment_author). ": </b><a href='". get_comment_link($comment->comment_ID) ."' title='к записи: {$comment->post_title}'>{$comtext}</a></li>";
    	}
    
    	if ($echo) echo $out;
    	else return $out;
    }

    после сую

    <ul>
    		<?php recent_comments(10, 40); ?>
       </ul>

    в home.php для вывода в нужное место.
    Но! проблема в том, что размещая первый код в function.php появляется error.

    Модератор Юрій

    (@yube)

    Но! проблема в том, что размещая первый код в function.php появляется error.

    Видимо, неправильно размещаете. Скорее всего, портите синтаксис php.

    Код рабочий, я проверил. Насколько он правильный — это уже другой вопрос, меня совсем не интересующий.

    Да действительно. нарушал синтаксис. теперь все работает. У меня стоит WPDiscuz и подключен uLogin (авторизация ч/з соц сетей). неподскажите как вывести аватары?

Просмотр 6 ответов — с 1 по 6 (всего 6)
  • Тема «Разделить шаблон на два блока» закрыта для новых ответов.