ExpressionEngine pagination - один шаблон, несколько каналов - PullRequest
0 голосов
/ 28 ноября 2011

Я создал блог, используя несколько шаблонов в ExpressionEngine 2, но я борюсь с тем, как реализовать разбиение на страницы в представлении main / list.Я могу, очевидно, уменьшить ограничение на вход и применить атрибут paginate к тегу канала, но он не работает должным образом.Он просто выводит ссылки на страницы, но каждая ссылка просто идет на отдельную страницу с только самой новой записью.

Мне кажется, что я упускаю что-то очевидное, но я действительно не уверен.Я был бы признателен, если бы у кого-то были какие-либо предложения / предложения относительно того, как правильно реализовать вещи.

{exp:channel:entries channel="notes_entry|notes_link|notes_photo|notes_quote|notes_video" limit="20" orderby="date"}
  {if channel_short_name == 'notes_link'}
  <div class="link">
      <h2><a href="{notes-link-URL}">{title}</a></h2>
      {notes-link-description}
      <span class="date">Posted on {entry_date format="%F %j, %Y"}&nbsp;&nbsp;|&nbsp;&nbsp;<a href="{title_permalink="notes"}">Permalink</a></span>
  </div>
  {if:elseif channel_short_name == 'notes_quote'}
  <div class="quote">
      <h2><a href="{notes-quote-URL}">{title}</a></h2>
      <blockquote>{notes-quote}</blockquote>
      <span class="source"><a href="{notes-quote-URL}">{notes-quote-source}</a></span>
      {notes-quote-description}
      <span class="date">Posted on {entry_date format="%F %j, %Y"}&nbsp;&nbsp;|&nbsp;&nbsp;<a href="{title_permalink="notes"}">Permalink</a></span>
  </div>
  {if:elseif channel_short_name == 'notes_entry'}
  <div class="entry">
      <h2><a href="{title_permalink="notes"}">{title}</a></h2>
      <span class="author">Written by {author}</span>
      <p>{notes-entry-summary} <span><a href="{title_permalink="notes"}">Read&nbsp;More&hellip;</a></span></p>
      <span class="date">Posted on {entry_date format="%F %j, %Y"}&nbsp;&nbsp;|&nbsp;&nbsp;<a href="{title_permalink="notes"}">Permalink</a></span>
  </div>
  {if:elseif channel_short_name == 'notes_photo'}
  <div class="photo">
      <h2><a href="{title_permalink="notes"}">{title}</a></h2>
      <img src="{notes-photo-upload}" alt="" />
      {notes-photo-description}
      <span class="date">Posted on {entry_date format="%F %j, %Y"}&nbsp;&nbsp;|&nbsp;&nbsp;<a href="{title_permalink="notes"}">Permalink</a></span>
  </div>
  {if:elseif channel_short_name == 'notes_video'}
  <div class="video">
      <h2><a href="{notes-video-url}">{title}</a></h2>
      <div class="video-container">
          <!-- start of embed code -->
          {notes-video-embed}
          <!-- end of embed code -->
      </div>
      {notes-video-description}
      <span class="date">Posted on {entry_date format="%F %j, %Y"}&nbsp;&nbsp;|&nbsp;&nbsp;<a href="{title_permalink="notes"}">Permalink</a></span>
  </div>
  {/if}
{/exp:channel:entries}

1 Ответ

2 голосов
/ 07 декабря 2011

Вот упрощенный пример разбиения на страницы нескольких записей канала с использованием темы Agile Records:

{exp:channel:entries channel="about|news" dynamic="on" limit="5" paginate="bottom"}
    <p>
        {if channel_short_name == "about"}
            <!-- Link to the About Section Entries -->
            <a href="{url_title_path=about/staff/index}">{title}</a>
        {if:else}
            <!-- Link to the News Section Entries -->
            <a href="{permalink=news/comments/index}">{title}</a>
        {/if}
    </p>

    {paginate}
        <p>Page {current_page} of {total_pages} pages {pagination_links}</p>
    {/paginate}
{/exp:channel:entries}

Вывод пары тегов paginate приводит к следующей разметке:

<p>
    Page 1 of 5 pages
    <strong>1</strong>
    <a href="http://example.com/template_group/template_name/P2">2</a>
    <a href="http://example.com/template_group/template_name/P4">3</a>
    <a href="http://example.com/template_group/template_name/P2">&gt;</a>
    <a href="http://example.com/template_group/template_name/P8">Last &rsaquo;</a>
</p>

Что выглядит как следующий нестилированный HTML в браузере:

Творческое использование условного выражения {channel_short_name} позволяет этому единому блоку кода ссылаться на каждыйПравильный URL-адрес отдельной страницы соответствующего раздела:

<a href="http://example.com/about/staff/about_the_label">About the Label</a>
<a href="http://example.com/news/comments/1">Getting to Know ExpressionEngine</a>
...