PHP Loop - настройка страницы архива временной шкалы - PullRequest
0 голосов
/ 17 мая 2011

Страница архива astheria.com превосходна, но есть вопрос относительно цикла PHP, использованного для ее создания.

Автор сайта разместил код: СозданиеСтраница архива стиля временной шкалы

Есть часть, о которой мне неясно.Если во временном графике будет промежуток более года (например, публикации за 2007 год, затем ничего за 2008 и 2009 годы, а затем возобновление в 2010 году), похоже, что этот код будет печатать годовые заголовки (с пустым <ol>).

Как я могу настроить это, чтобы пропустить эти пустые годы?

Ответы [ 2 ]

0 голосов
/ 18 мая 2011

Заменен этот блок кода:

  else if ( $prev_post_year != $post_year ) {
    /* Close off the OL */
    ?>
    </ol>
    <?php

    $working_year  =  $prev_post_year;

    /* Print year headings until we reach the post year */
    while ( $working_year > $post_year ) {
      $working_year--;
      ?>
      <h3 class="archive_year"><?php echo $working_year?></h3>
      <?php
    }

    /* Open a new ordered list */
    ?>
    <ol class="archives_list">
    <?php
  }

С этим для достижения желаемых результатов:

  else if ( $prev_post_year != $post_year ) {
    /* Close off the OL */
    ?>
    </ol>
    <h3 class="archive_year"><?php echo $post_year?></h3>
    <ol class="archives_list">
    <?php
  }
0 голосов
/ 17 мая 2011

Общая логика может быть простой (наполовину псевдокод):

$posts = fetchFromDatabase('SELECT * FROM `posts` ORDER BY `posted` DESC');

// $posts = array(
//     array('posted' => '2010-09-13 12:42:31', 'title' => ...)
//     array(...)
// )

$currentYear = null;
foreach ($posts as $post) {
    $year = date('Y', strtotime($post['posted']));
    if ($year != $currentYear) {
        printf('<h2>%s</h2>', $year);
        $currentYear = $year;
    }

    echo $post['title'];
}

На словах:

  • Извлечение всех сообщений для отображения из базы данных, отсортированной по дате.
  • Отслеживайте "текущий год", который вы выводите.
  • После ввода нового года выведите его, обновите текущий год.

Таким образом выводятся только годы существующих постов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...