ラック
Home > CMS > 記事 > 2014年7月 > 前後の記事

前後の記事

カテゴリ: MODx

前回記事で「関連する記事」の出力はできました。さて、ブログといえば「前の記事」「後の記事」もよく見かけますよね。これはどうすれば良いのでしょうか…と思った次第。

編集の仕方次第でリソースIDは変わりますので、記事が連番になっているとは限りません(実際バラバラ)。メニューオーダーの記述によって、リソースツリー内での表示も必ずしも公開日時順で並んでいるわけではありません。つまり、一貫した規則性がないのですよねぇ…。

お、スニペットがあるのですね(情報がちょっと古いものもありますが…)。これでいけるかなぁ、と思い実験することに。

懸念材料は、このサイトの場合年月ごとに記事が格納されている件。コンテナを飛び越えてまで前の記事・次の記事は表示できないだろうなぁ、と。

とりあえずは試してみましょうか。

  1. まずはPrevJumpNextスニペットをダウンロード。
  2. 展開したらスニペットを作成→展開したフォルダの「assets\snippets\prevjumpnext」の下にあるprevjumpnext.snippet.phpの中身をまるっとコピペして名前を付けて保存。
  3. 続いて、MODxが動いているディレクトリの「manager/includes」の下に、「assets\snippets\prevjumpnext」下の「classes」というフォルダをまるっとアップロード。
    ※これをしないで作業したら、表示時にMODxから「manager/includes/classes/newchunkie.class.php が存在しないよ!」と怒られました。どうも場所もここ指定のようです(スニペットのソースを弄って違うディレクトリに指定を変えても良いのかもしれないのですが…)。
  4. 準備が整ったら、スニペットをコールするチャンクを作成。
    	
    <div id="pagenav">
    [!PrevjumpNext?
    &displayTotal=`0`
    &sortBy=`id` //idでソート
    &sortHow=`DESC` //降順
    &displayTitle=`0` //前後リソースのタイトルを表示しない
    &prevText=`《 前のページ`
    &nextText=`次のページ 》`
    &indexText=`アーカイブ`
    &separator=`` //区切り文字なし
    !]
    </div>
    	
    
    こんな感じ。スニペット名は「PrevjumpNext」にしてあります。で、これを保存。
  5. 個別エントリー用のテンプレートに、上記で作成したチャンクをコールするコードを書き込みます。
  6. 最後にcssで整形。
    	
    /*PagejumpNext用*/
    #pagenav {
    	margin: 10px 5px;
    	text-align: center;
    	position: relative;
    }
    #pagenav .prev {
    	position: absolute;
    	left: 20px;
    }
    #pagenav .index {
    	margin: 0 20px;
    }
    #pagenav .next {
    	position: absolute;
    	right: 10px;
    }
    	
    
    このサイトではこんな感じ。

以上で「前の記事へ」「後の記事へ」ができました。…で、やっぱり月を跨いで(=別のコンテナのサブリソースへリンクさせる)の前後は私の技術では難しそうです。はい。

あと、Let's enjoy MODxさんのPrevJumpNextのドキュメントにあった「indexDocumentID」が効かなさそう?なので、インデックスは大人しく親コンテナのリソースであるアーカイブ表示にして、indexTextもそれに合わせました(ただの検証不足かもしれません)。

タグ: スニペット, ブログ関係

 



関連する記事一覧