mayumi.t

関連記事のランダム表示について

0

RandomArray プラグインを使用し、記事のタグもしくはカテゴリに紐づいた関連記事をランダム表示させるようにしていますが、自分自身の記事を除くことができません。
自分自身の記事を除くことは可能でしょうか、アドバイス等いただけると幸いです。

<mt:If name="entry_archive">
<mt:SetVar name="ids">
<mt:SetVar name="entries">

<mt:EntryIfTagged>
<mt:SetVarBlock name="Sametags"><mt:EntryTags glue=' OR '><$mt:TagName$></mt:EntryTags></mt:SetVarBlock>
<mt:Entries tags="$Sametags" lastn="0">
<mt:EntryID setvar="id">
<mt:SetVarBlock name="ids" function="push"><mt:Var name="id"></mt:SetVarBlock>
<mt:SetVarBlock name="entries" key="$id">
<li><a href="<$mt:EntryPermalink$>"><$mt:EntryTitle$></a></li>
</mt:SetVarBlock>
</mt:Entries>
<mt:Else>
<$mt:EntryCategory setvar="Samecat"$>
<mt:Entries category="$Samecat" lastn="0">
<mt:EntryID setvar="id">
<mt:SetVarBlock name="ids" function="push"><mt:Var name="id"></mt:SetVarBlock>
<mt:SetVarBlock name="entries" key="$id">
<li><a href="<$mt:EntryPermalink$>"><$mt:EntryTitle$></a></li>
</mt:SetVarBlock>
</mt:Entries>
</mt:EntryIfTagged>

<mt:RandomArray name="ids" limit="10" setvar="rand_ids">

<mt:Loop name="rand_ids">
<mt:If name="__first__">
<p>関連記事</p>
<ul></mt:If>
<mt:Var name="entries" key="$__value__">
<mt:If name="__last__"></ul></mt:If>
</mt:Loop>
</mt:If>

コードは
藤本 壱様の「ブログ記事のページに関連記事を出力する」
奥脇 知宏様の「記事 n 件をランダムに取得するテンプレート - RandomArray プラグインバージョン」
を参考にさせていただいてます。

返信(8)

| 返信する
  • >mayumi.tさん
    下記の記事の方法はいかがでしょうか。

    ブログ記事ページでその記事以外のブログ記事一覧を表示する方法
    http://www.koikikukan.com/archives/2015/07/30-005555.php

    注:URLは手打ちなので開かなかったら記事名で検索してください

  • yujiro様
    ご確認ありがとうございます。
    いただいた方法にて実装したところ、

    記事「XX」の再構築中にエラーが発生しました: 
    テンプレート「記事」の再構築中にエラーが発生しました:
    <mtIf>タグでエラーがありました:
    <mtRandomArray>タグでエラーがありました:
    name属性には配列の変数名を指定しなければなりません。

    とエラーとなり再構築できないようです。


    修正内容
    - 先頭に、2行追加

    <$mt:EntryID setvar="entry_id"$>
    <mt:Entries id="$entry_id" />

    - 各タグに unique="1" を追加

    <mt:Entries tags="$Sametags" lastn="0">
    <mt:Entries category="$Samecat" lastn="0">

  • 修正内容は問題ないと思います。

    エラーになるのは元のテンプレートで、たとえば再構築している記事につけたタグが他の記事にひとつも付与されていないとidsに値が設定されないケースがあるのが原因です。

    エラーを回避するには、RandomArrayタグ全体をmtifタグで括って、idsの有無を判定してあげればうまくいくんじゃないかと思います。

    <mt:if name="ids">
    <mt:RandomArray...>
    </mt:if>
  • yujiro様
    ご確認いただきありがとうございます。

    試したところ、以下のようなエラーになってしまうようです。

    記事「XX」の再構築中にエラーが発生しました: 
    テンプレート「記事」の再構築中にエラーが発生しました:
    <mt:RandomArray>は存在しません(XX行目)。

    最新1記事目の再構築段階でエラーとなります。
    なお、この1記事目のタグ・カテゴリは、自身を除き最低1記事は付与されております。

  • すいませんが現状のテンプレートタグを張りつけて頂けますでしょうか。

  • 完成版を掲載しておきます。
    テストケースは下記の通りで再構築時のエラーは発生していません。

    タイトル カテゴリ タグ 関連記事
    ---------------------------------------------
    test1  cat2  -  test5,test8
    test2  cat1  bbb test5
    test3  cat3  -  test6
    test4  cat1  aaa test7
    test5  cat2  bbb test2
    test6  cat3  -  test3
    test7  cat1  aaa test4
    test8  cat2  -  test1,test5
    ---------------------------------------------

    <$mt:EntryID setvar="entry_id"$>
    <mt:Entries id="$entry_id"></mt:Entries>
    <mt:SetVar name="ids">
    <mt:SetVar name="entries">
    <mt:EntryIfTagged>
      <mt:SetVarBlock name="Sametags"><mt:EntryTags glue=' OR '><$mt:TagName$></mt:EntryTags></mt:SetVarBlock>
      <mt:Entries unique="1" tags="$Sametags" lastn="0">
        <mt:EntryID setvar="id">
        <mt:SetVarBlock name="ids" function="push"><mt:Var name="id"></mt:SetVarBlock>
        <mt:SetVarBlock name="entries" key="$id">
          <li><a href="<$mt:EntryPermalink$>"><$mt:EntryTitle$></a></li>
        </mt:SetVarBlock>
      </mt:Entries>
    <mt:Else>
      <$mt:EntryCategory setvar="Samecat"$>
      <mt:Entries unique="1" category="$Samecat" lastn="0">
        <mt:EntryID setvar="id">
        <mt:SetVarBlock name="ids" function="push"><mt:Var name="id"></mt:SetVarBlock>
        <mt:SetVarBlock name="entries" key="$id">
          <li><a href="<$mt:EntryPermalink$>"><$mt:EntryTitle$></a></li>
        </mt:SetVarBlock>
      </mt:Entries>
    </mt:EntryIfTagged>
    <mt:if name="ids">
    <mt:RandomArray name="ids" limit="10" setvar="rand_ids">
    </mt:if>
    <mt:Loop name="rand_ids">
    <mt:If name="__first__">
      <p>関連記事</p>
      <ul></mt:If>
      <mt:Var name="entries" key="$__value__">
    <mt:If name="__last__"></ul></mt:If>
    </mt:Loop>
  • yujiro様

    確認・返信が遅くなり失礼いたしました。
    検証、完成版のソースをまとめていただきましてありがとうございます!

    私の環境にて確認いたします。
    何かありましたら、またよろしくお願いいたします。

返信する


カテゴリグループ

フォーラムカテゴリー

21 76

最新のトピック: 公開終了日の取り消し (2013年10月18日 gsk)

929 3028

最新のトピック: 検索範囲につきまして (2019年3月19日 Mokyoh)

OpenID対応しています OpenIDについて