• Решено tima2010

    (@tima2010)


    Здравствуйте, есть блок в sidebar который выводит публикации
    вывожу таким способом:

    <?php query_posts('cat=3&showposts=5'); ?>
      <?php while (have_posts()) : the_post(); ?>
      <li><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></li>
    <?php endwhile;?>

    У каждого поста есть произвольное поле с именем: $data_end и значением дд.мм.гг (день месяц год)

    Появилась потребность прекращать выводить каждый из постов только в sidebar по истечению определенного периода.

    Подумал как это реализовать, думаю можно сравнивать $data_end ( который имеет вид: 22.05.10 ) с датой на сервере, и не показывать заголовок поста…
    только как это реализовать подскажите пожалуйста!
    Заранее спасибо!

Просмотр 8 ответов — с 1 по 8 (всего 8)
  • Нашел один из примеров но он убирает пост полностью а мне нужно убрать только заголовок в sidebar:

    Установка дата окончания поста.
    Этот прием поможет установить дату окончания публикации поста, если вам нужно отображать запись в течение ограниченного времени.
    В теме заменяем цикл вывода на следующий:
    < ?php
    if (have_posts()) :
         while (have_posts()) : the_post(); ?>
             $expirationtime = get_post_custom_values('expiration');
             if (is_array($expirationtime)) {
                 $expirestring = implode($expirationtime);
             }  
    
             $secondsbetween = strtotime($expirestring)-time();
             if ( $secondsbetween > 0 ) {
                 // For example...
                 the_title();
                 the_excerpt();
             }
         endwhile;
    endif;
    ?>
    
    При написании поста создается пользовательское поле с ключом expiration и временем в формате mm/dd/yyyy 00:00:00 в качестве значения. Пост перестанет отображаться после наступления указанной даты и времени.

    Решение написал сам, прошу только совета правильное оно или нет… или может его как улучшить?

    <?php
    $date_today_server = date("d.m.y");
    query_posts('cat=3&showposts=5');
    ?>
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    <?php $data_end_post = get_post_meta($post->ID, 'data_end', true); ?> 
    
    <?php
    if ($date_today_server <= $data_end_post)
    {
    ?>
    <li><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a> (<?php echo $data_end_post; ?>)</li>
    <?
    } else {
    echo "";
    }
    ?>
    <?php endwhile; endif; ?>
    Модератор Юрій

    (@yube)

    Что-то мне подсказывает, что php ни за что не угадает, что ‘12.05.10’ надо воспринимать как дату, сравнимую с другой датой по «календарным» правилам. Воспользуйтесь функцией mktime() или хотя бы поменяйте местами число и год.

    А зачем ему об этом знать?
    он просто сверяет значение переменных.
    Берет дату на сервере и сверяет ее с произвольным полем которое выглядит так: дд.мм.гг
    с сервера мы ведь тоже в таком виде получаем дату дд.мм.гг
    вот и решение…

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

    (@yube)

    Замечательно. Не вижу смысла спорить. Удачи.

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    При сравнении текстовых строк 12.05.10 окажется больше, чем 01.06.10.

    Сергей, да это неучел, извините, не подскажите как справится с данной проблемой?

    Atrax

    (@atrax)

    Ethical engineer

    Научиться слушать то, что вам говорят…

    Воспользуйтесь функцией mktime() или хотя бы поменяйте местами число и год.

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