2

同じ名前のカテゴリからブログ記事を取得するために、ページのパラメータとして {{ page:slug }} を使用しようとしました。例えば:

  • ページ名 = 私について
  • スラッグ = 私について

次に、関連付けられた記事を含むブログに同じ名前とスラッグ名でカテゴリを作成します。ページレイアウトで、次のように作成できると思ったのですが、うまくいかないようです。なぜだか知っている人はいますか?

{{ blog:posts order-by="created_on" dir="asc" category="{{ page:slug }}" }}
<section class="title">
    <h4>
    {{ title }}
    </h4>
</section>
<section class="item">
    <p>{{ intro }}</p>
    <p><a href="{{ url }}">Read more..</a></p>
</section>
{{ /blog:posts }}

解決済み

別の開発者に面と向かって尋ねることで答えを見つけました。これはテンプレート言語であるため、機能をサポートしていません。事前に作成された変数を読み取るだけです。したがって、pages/plugins.php に別のメソッドを作成して、この問題を解決する必要があります。

4

3 に答える 3

3

タグを文字列に埋め込んでみる必要はありません。タグを属性に直接渡すだけです。

{{ blog:posts order-by="created_on" dir="asc" category="{{ page:slug }}" }}

する必要があります:

{{ blog:posts order-by="created_on" dir="asc" category=page:slug }}

思ったより簡単?

于 2012-10-02T16:04:34.067 に答える
1

これは、PHPを使用して解決した方法です。以下の編集は、{{ blog:posts }} タグのページ パラメータが設定されているかどうかを確認します。その場合、最後のセグメントを取得し、それをデータベース クエリのカテゴリ フィルターとして使用して、それらの投稿のみを取得します。

system/cms/modules/blog/plugin.phpで「posts」関数を探し、パラメーターを追加します。

$page   = $this->attribute('page');

次に、次のステートメントを使用してパラメーターが設定されているかどうかを確認し、「where」ステートメントを追加します。

if($page) //check if page is set
{
  $segment = end($this->uri->segment_array()); //get the last segment from the url
  $this->db->where('blog_categories.slug', $segment); //use the segment as filter
}

これで、カテゴリがページ名を参照するブログ投稿を含むページを作成できます。例: www.website.com/pagename/subpagename/subsubpagename/awesome 次に、これをページレイアウトとして使用すると、' を持つブログ投稿のリストが読み込まれます。素晴らしい' カテゴリ:

<h3>{{ page:title }}</h3>
{{ blog:posts order-by="created_on" dir="asc" page="true" }}


    <h4>{{ title }}</h4>

    <p>
        {{ intro }}</p>
    <p>
        <a href="{{ url }}">Read more..</a></p>

{{ /blog:posts }} 
于 2012-09-24T00:21:49.217 に答える
0

タグを使用する代わりに、できるだけタグを避けるための簡単な解決策を見つけました。はい、これ。

タグを使用する代わりに、プラグインでビューを呼び出し、3 番目のパラメーターを TRUE として渡すと、ビューをロードする代わりに文字列が返され、PHP で行うようにビューで通常どおりループや条件付きチェックが行われます。そこでタグに会う必要はありません。その後、このビューを呼び出すプラグインで単一の変数を返し、ページのタグで変数を使用してビューのコンテンツを表示します。
ここに例があります

class Plugin_Home extends Plugin  
{  
    function test()  
    {
        $this->load->model('test/test_m');
        $data['test']   =   $this->test_m->index();
        return $this->load->view('test/test_view',$data , TRUE);
    }
}   

そしてページでは、このように呼び出すことができます

{{ Home:test }}

条件付けとループのためのタグを取り除きます

于 2013-02-23T11:59:09.730 に答える