• Home
  • Movable Type
  • PowerCMS
  • PowerCMS のダイナミック検索(AltSearch)のぺージャーのページ番号表示を N 個までにするテンプレート

PowerCMS のダイナミック検索(AltSearch)のぺージャーのページ番号表示を N 個までにするテンプレート

PowerCMS のダイナミック検索機能は高速で記事もウェブページもまとめて検索できてとても便利です。

この検索結果のぺージャーのページ番号の表示を N 個までにするテンプレートをご紹介します。

下記のテンプレートを「検索結果」テンプレートに貼り付ければ動作するはずです。view_pages_limit のところが表示するページ番号の数です。ここは必ず奇数で設定してください。

<mt:Ignore>=== ページ送り ===</mt:Ignore>
<mt:SetVars>
  view_pages_limit =5
</mt:SetVars>
<mt:Var name="view_pages_limit" op="/" value="2" setvar="page_padding" />
<mt:Var name="page_padding" regex_replace="/\.[0-9]+$/","" setvar="page_padding" />
<mt:AltSearchMetadatas>
  <mt:AltSearchPageCounter setvar="page_number" />
  <mt:IfAltSearchMetaDatasHeader>
    <mt:AltSearchCurrent setvar="current_page" />
    <mt:SetVars>
      page_from =<mt:Var name="current_page" op="-" value="$page_padding" />
      page_to =<mt:Var name="current_page" op="+" value="$page_padding" />
      max_page =<mt:AltSearchPages />
    </mt:SetVars>
    <mt:If name="page_from" lt="1">
      <mt:SetVar name="page_from" value="1" />
      <mt:If name="view_pages_limit" lt="$max_page">
        <mt:SetVar name="page_to" value="$view_pages_limit" />
      <mt:Else>
        <mt:SetVar name="page_to" value="$max_page" />
      </mt:Else>
      </mt:If>
    </mt:If>
    <mt:If name="page_to" gt="$max_page">
      <mt:SetVar name="page_to" value="$max_page" />
      <mt:Var name="page_to" op="-" value="$view_pages_limit" setvar="__temp__" />
      <mt:Var name="__temp__" op="++" setvar="page_from" />
    </mt:If>
    <mt:If name="page_from" lt="1">
      <mt:SetVar name="page_from" value="1" />
    </mt:If>

    <mt:Ignore>=== 表示ここから ===</mt:Ignore>
    <ul class="pager">
      <mt:IfAltSearchResultPrev>
        <li class="prev"><a href="?query=<mt:Query key='query' escape='html'>&limit=<mt:Query key='limit' escape='html'>&offset=<mt:AltSearchPrev />&include_blogs=<mt:Var name='search_include_blogs' encode_url='1' />"></a></li>
      </mt:IfAltSearchResultPrev>
  </mt:IfAltSearchMetaDatasHeader>

  <mt:For var="i" from="$page_from" to="$page_to">
    <mt:If name="i" eq="$page_number">
      <mt:If name="current_page" eq="$page_number">
        <li class="current"><mt:Var name="page_number" /></li>
      <mt:Else>
        <li><a href="?query=<mt:Query key='query' escape='html'>&limit=<mt:Query key='limit' escape='html'>&offset=<mt:AltSearchResultOffset>&include_blogs=<mt:Var name='search_include_blogs' encode_url='1' />"><mt:Var name="page_number" /></a></li>
      </mt:If>
    </mt:If>
  </mt:For>

  <mt:IfAltSearchMetaDatasFooter>
    <mt:IfAltSearchResultNext>
      <li class="next"><a href="?query=<mt:Query key='query' escape='html'>&limit=<mt:Query key='limit' escape='html'>&offset=<mt:AltSearchNext />&include_blogs=<mt:Var name='search_include_blogs' encode_url='1' />"></a></li>
    </mt:IfAltSearchResultNext>
    </ul>
  </mt:IfAltSearchMetaDatasFooter>
</mt:AltSearchMetadatas>
<!-- /.pager -->
<mt:Ignore>=== END ページ送り ===</mt:Ignore>