Ответы в темах

Просмотр 15 ответов — с 31 по 45 (всего 64)
  • Автор awayka

    (@awayka)

    Вот теперь более правильный вывод (была проблема со ссылками):

    <?php if ( is_page('index') || is_front_page('')) : ?>
    <?php $lastposts = get_posts('numberposts=3&suppress_filters=0');
            $datef = 'Y/m/j';
    	foreach($lastposts as $lastpost) :
    	$post_title = stripslashes($lastpost->post_title);
    	$lastpost_date = mysql2date($datef, $lastpost->post_date);
    	$permalink = get_permalink($lastpost->ID);
    	$title = '<a href="' . $permalink . '" rel="bookmark" title="' . htmlspecialchars($post_title, ENT_COMPAT) . '">' . htmlspecialchars($post_title) . '</a>';
    	$post_excerpt = stripslashes($lastpost->post_excerpt);
    	echo "$lastpost_date $title <br /> $post_excerpt <br /><br />";
    	endforeach;
    ?>
    <?php endif; ?>

    Автор awayka

    (@awayka)

    Решила проблему следующим образом:
    Не стала использовать плагин Recent Posts, а просто на странице page.php ввела следующий код:

    <?php if ( is_page('index') || is_front_page('')) : ?>
    <?php $lastposts = get_posts('numberposts=3&suppress_filters=0');
            $datef = 'Y/m/j';
    	foreach($lastposts as $lastpost) :
    	$lastpost_date = mysql2date($datef, $lastpost->post_date);
    	$title = '<a href="'.get_page_link($post->post_ID).'">'.$lastpost->post_title.'</a>';
    	$post_excerpt = stripslashes($lastpost->post_excerpt);
    	echo "$lastpost_date $title <br /> $post_excerpt <br /><br />";
    	endforeach;
    ?>
    <?php endif; ?>

    suppress_filters=0 — делает возможным вывод новостей только на выбранном языке.

    Все! Проблема решена (с датой). Измененный код плагина recent-posts.php (вдруг кому пригодится):

    <?php
    function mdv_recent_posts($no_posts = 5, $post_date = '<li>', $after = '</li>', $hide_pass_post = true, $skip_posts = 0, $show_excerpts = true, $include_pages = false) {
        global $wpdb;
            $datef = 'Y/m/j';
    	$time_difference = get_option('gmt_offset');
    	$now = gmdate("Y-m-d H:i:s",time());
        $request = "SELECT ID, post_date, post_title, post_excerpt FROM $wpdb->posts WHERE post_status = 'publish' ";
    	if($hide_pass_post) $request .= "AND post_password ='' ";
    	if($include_pages) $request .= "AND (post_type='post' OR post_type='page') ";
    	else $request .= "AND post_type='post' ";
    	$request .= "AND post_date_gmt < '$now' ORDER BY post_date DESC LIMIT $skip_posts, $no_posts";
        $posts = $wpdb->get_results($request);
    	$output = '';
        if($posts) {
    		foreach ($posts as $post) {
    			$post_title = stripslashes($post->post_title);
    			$permalink = get_permalink($post->ID);
    			$post_date = mysql2date($datef, $post->post_date);
    			$output .= $post_date .' ' . '<a href="' . $permalink . '" rel="bookmark" title="Permanent Link: ' . htmlspecialchars($post_title, ENT_COMPAT) . '">' . htmlspecialchars($post_title) . '</a>';
    			if($show_excerpts) {
    				$post_excerpt = stripslashes($post->post_excerpt);
    				$output.= '<br />' . $post_excerpt;
    			}
    			$output .= $after ;
    		}
    	} else {
    		$output .= $before . "None found" . $after;
    	}
        echo $output;
    }
    ?>

    Дату теперь выводит в формате, задающемся строкой
    $datef = 'Y/m/j';
    И код вызова плагина на главной странице:

    <?php if ( is_page('index') || is_front_page('')) : ?>
    <div class="archive">
    <?php mdv_recent_posts(3, ' ', '<br /><br />', true, 0, true, false); ?>
    </div>
    <?php endif; ?>

    в данном случае is_front_page — нужно было для мультиязычного сайта.

    Практически добилась своего. Дату и время теперь выводит для каждого поста свою. Добавила несколько строк в код плагина recent-posts.php

    Единственное, что не устраивает, так это формат вывода: 2010-02-16 08:43:10 — я хотела бы без времени. Да и время здесь неправильное, хотя в админке стоит UTC+3.
    Код плагина с добавленными/измененными строками:

    <?php
    ffunction mdv_recent_posts($no_posts = 5, $post_date = '<li>', $after = '</li>', $hide_pass_post = true, $skip_posts = 0, $show_excerpts = true, $include_pages = false) {
        global $wpdb;
    	$time_difference = get_option('gmt_offset');
    	$now = gmdate("Y-m-d H:i:s",time());
        $request = "SELECT ID, post_date_gmt, post_title, post_excerpt FROM $wpdb->posts WHERE post_status = 'publish' ";
    	if($hide_pass_post) $request .= "AND post_password ='' ";
    	if($include_pages) $request .= "AND (post_type='post' OR post_type='page') ";
    	else $request .= "AND post_type='post' ";
    	$request .= "AND post_date_gmt < '$now' ORDER BY post_date DESC LIMIT $skip_posts, $no_posts";
        $posts = $wpdb->get_results($request);
    	$output = '';
        if($posts) {
    		foreach ($posts as $post) {
    			$post_title = stripslashes($post->post_title);
    			$permalink = get_permalink($post->ID);
    			$post_date = stripslashes($post->post_date_gmt);
    			$output .= $post_date .' ' . '<a href="' . $permalink . '" rel="bookmark" title="Permanent Link: ' . htmlspecialchars($post_title, ENT_COMPAT) . '">' . htmlspecialchars($post_title) . '</a>';
    			if($show_excerpts) {
    				$post_excerpt = stripslashes($post->post_excerpt);
    				$output.= '<br />' . $post_excerpt;
    			}
    			$output .= $after ;
    		}
    	} else {
    		$output .= $before . "None found" . $after;
    	}
        echo $output;
    }
    ?>

    Кажется мой вопрос про дату ускользнул от внимания:
    Проблема с выводом даты поста. Выводит для всех одинаковую (а они разные), да еще и не правильную (ни у одного поста нет такой даты). Как правильно вызывать дату?
    <?php mdv_recent_posts(3, the_date( $format, $before, ' ', $echo ), '<br />', true, '0', true, false); ?>
    В данном случае, он выводит дату для страницы, на которой вызываются посты.

    Окей, спасибо за ответ. Попробую поразбираться.
    А что насчет даты?

    Проблема с выводом даты поста. Выводит для всех одинаковую (а они разные), да еще и не правильную (ни у одного поста нет такой даты). Как правильно вызывать дату?
    <?php mdv_recent_posts(3, the_date( $format, $before, ' ', $echo ), '<br />', true, '0', true, false); ?>

    И есть какие-то подсказки по поводу того, как разграничить выбор постов (записей)? Т.е. если выбран язык русский — только записи на русском выводить и .т.п?

    Поиском я пользовалась еще как, прежде чем задавать вопрос.
    Слово «recent» мне не приходило в голову.
    Мне еще нужно, чтобы не только заголовки выводил, но и анонс…

    Но если выводить через вышеупомянутый main-functions.php, то отображает дату и заголовок новости. Комментарии не предлагает писать.

    <?php if ( is_page('index') ) : ?>
    <?php
         require_once('main-functions.php');
         echo '<div class="last_post">';
             maxsite_last_post_cat();
         echo '</div>';
     ?>
    <?php endif; ?>

    Есть еще другая проблема (и в том и в другом случае): так как сайт мультиязычный (поддерживается через WPML 1.7.0) выводит он новости и на том, и на другом языках.

    Вообщем, добилась этого следующим путем:
    Это добавила не на страницу index.php, а на page.php

    <?php if ( is_page('index') ) : ?>
    <ul><div class="post">
        <?php $myposts = get_posts('numberposts=3'); foreach($myposts as $post) : ?>
        <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
        <?php endforeach; ?> </div>
    </ul>
    <?php endif; ?>

    Единственная проблема осталась, что комментарии к одной из записей предлагает писать… (На Главной)

    1. Я хоть и «по образованию» программист, но в php не разбиралась раньше.
    2. По-моему, здесь форум не для того, чтобы обсуждать людей.
    3. Вопрос мой может и странен, но Ваше решение не помогло. И спросила я не просто, чтобы мне ответили — я уже перепробовала не один метод вставки этих самых постов. Потому и спросила — чтобы уж ответили «профессионалы» и наверняка!

    В данный момент index.php выглядит так (без добавление в него строк с вызовом main-functions.php — это сработало только в сайдбаре):
    Куда здесь добавить и какие строки?:

    <?php get_header(); ?>
    <?php $options = get_option('pb_options'); ?>
      <div id="middle-contents" class="clearfix">
    
       <div id="left-col">
    
    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    
        <div class="post">
         <h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2>
         <ul class="post-info">
          <li><?php the_time(__('F jS, Y', 'piano-black')) ?></li>
          <?php if ($options['author']) : ?><li><?php _e('By ','piano-black'); ?><?php the_author_posts_link(); ?></li><?php endif; ?>
          <li class="write-comment"><a href="<?php the_permalink() ?>#comments"><?php _e('Write comment','piano-black'); ?></a></li>
          <?php edit_post_link(__('[ EDIT ]', 'piano-black'), '<li class="post-edit">', '</li>' ); ?>
         </ul>
         <div class="post-content">
           <?php the_content(__('Read more', 'piano-black')); ?>
           <?php wp_link_pages(); ?>
    
         </div>
    
        </div>
        <div class="post-meta">
         <ul class="clearfix">
          <?php if($options['post_meta_type'] == 'category') { ?>
          <li class="post-category"><?php the_category(' . '); ?></li>
          <?php } else { ?>
          <?php the_tags('<li class="post-tag">', ' . ', '</li>'); ?>
          <?php } ?>
          <li class="post-comment"><?php comments_popup_link(__('Write comment', 'piano-black'), __('1 comment', 'piano-black'), __('% comments', 'piano-black')); ?></li>
         </ul>
        </div>
    
    <?php endwhile; ?>
    <?php if (function_exists('wp_pagenavi')) { wp_pagenavi(); } else { include('navigation.php'); } ?>
    
    <a href="#pngfix-right" id="back-top" class="clear"><?php _e('Return top','piano-black'); ?></a>
    
    <?php else: ?>
        <div class="common-navi-wrapper">
          <p><?php _e("Sorry, but you are looking for something that isn't here.","piano-black"); ?></p>
        </div>
    <?php endif; ?>
    
       </div><!-- #left-col end -->
    
       <?php get_sidebar(); ?>
    
      </div><!-- #middle-contents end -->
    
    <?php get_footer(); ?>

    Создала у себя файл main-functions.php
    Добавила в index.php нужный код (приведенный по ссылке)
    Нигде ничего не отображается =(

    Можно и на обычном, просто надо разделять права доступа (роли). Можно стандартными средствами, можно с помощью плагинов Role Scoper или User Access Manager.

    В том-то и дело, что у меня проблема с «нестандартными ЧПУ»

Просмотр 15 ответов — с 31 по 45 (всего 64)