5

クレジットカードというチャンネルを作成しました。そこで、すべてのクレジットカードをループして出力するインデックスを持つクレジットカードと呼ばれるテンプレートグループを作成しました。この側面は正常に機能します。credit-cards.groupフォルダー内のindex.htmlファイルのコードは次のとおりです。

         {exp:channel:categories category_group="1" style="linear" dynamic="no"}
                    <div class="card-list tab" id="{category_url_title}">
                        <h2 class="category-title">{category_name} Credit Cards</h2>
                        <div class="cards">
                            {exp:channel:entries channel="credit_cards" category="{category_id}" dynamic="no"}
                                <article>
                                    <h4><a href="{url_title_path='credit-cards'}">{title}</a><span class="web-exclusive">MBNA Website Exclusive</span></h4>
                                    <ul>
                                        <li class="col-img">
                                            <a href="{url_title_path='credit-cards'}"><img width="116" height="84" alt="MBNA Platinum Credit Card" src="../lib-ui/img/cards/core/core_116x84/mbna_platinum_card_116x84.png"></a>
                                        </li>
                                        <li class="col-bt">{balance_transfer_rate}</li>
                                        <li class="col-purchases">{purchases_rate}</li>
                                        <li class="col-features">{key_features}</li>
                                        <li class="col-apply">
                                            <a rel="blank" class="btn btn-success" href="{apply_url}">
                                                Apply Now<span class="hide"> for the {title}</span>
                                            </a>
                                            <a class="cta" href="{url_title_path='credit-cards'}">
                                                Learn more<span class="hide"> about the {title}</span>
                                            </a>
                                            <label class="mbna-credit-card checkbox" for="compare_1">
                                                <span tabindex="0">
                                                    <input type="checkbox" value="mbna-credit-card" id="compare_1">
                                                </span>
                                                <span class="hide"> Add the {title} to </span>Compare
                                            </label>
                                        </li>
                                    </ul>
                                    <p class="rep-ex">{representative_example}</p>
                                </article>  
                            {/exp:channel:entries} 
                        </div>
                    </div>
                {/exp:channel:categories}

だから私の質問はこれです。ビザクレジットカードと呼ばれるクレジットカードを持っているとしましょう。そのために生成されているURLは/credit-cards/visa-credit-cardです。このリンクをクリックすると、インデックスページが再び表示されます。グループ内にsingle.htmlという別のテンプレートファイルを作成しました。このファイルには、1枚のクレジットカードを出力するコードが含まれています。これは次のようになります。

<h1>Credit Card Page</h1>
{exp:channel:entries channel="credit_cards" limit="1"}
{if no_results}
{redirect="404"}
{/if}

では、単一のエントリの代わりにこのテンプレートファイルを使用するにはどうすればよいですか?

4

5 に答える 5

10

これは実際、問題を解決するのは非常に簡単です。あなたが行っていることは、コードの5行目には、エントリ情報を制限する必要があるかどうかを判断する方法がないということです。を使用dynamic='no'すると、「EE、これを制限するエントリを特定するためにここのURLを使用する必要はありません」と言いました。

私の提案は次のコードです:

{if segment_2 == ""}
    {exp:channel:categories category_group="1" style="linear" dynamic="no"}
        <div class="card-list tab" id="{category_url_title}">
            <h2 class="category-title">{category_name} Credit Cards</h2>
            <div class="cards">
                {exp:channel:entries channel="credit_cards" category="{category_id}" dynamic="no" disable="category_fields|member_data|pagination|trackbacks"}
                    <article>
                        <h4><a href="{url_title_path='credit-cards'}">{title}</a><span class="web-exclusive">MBNA Website Exclusive</span></h4>
                        <ul>
                            <li class="col-img">
                                <a href="{url_title_path='credit-cards'}"><img width="116" height="84" alt="MBNA Platinum Credit Card" src="../lib-ui/img/cards/core/core_116x84/mbna_platinum_card_116x84.png"></a>
                            </li>
                            <li class="col-bt">{balance_transfer_rate}</li>
                            <li class="col-purchases">{purchases_rate}</li>
                            <li class="col-features">{key_features}</li>
                            <li class="col-apply">
                                <a rel="blank" class="btn btn-success" href="{apply_url}">
                                    Apply Now<span class="hide"> for the {title}</span>
                                </a>
                                <a class="cta" href="{url_title_path='credit-cards'}">
                                    Learn more<span class="hide"> about the {title}</span>
                                </a>
                                <label class="mbna-credit-card checkbox" for="compare_1">
                                    <span tabindex="0">
                                        <input type="checkbox" value="mbna-credit-card" id="compare_1">
                                    </span>
                                    <span class="hide"> Add the {title} to </span>Compare
                                </label>
                            </li>
                        </ul>
                        <p class="rep-ex">{representative_example}</p>
                    </article>  
                {/exp:channel:entries} 
            </div>
        </div>
    {/exp:channel:categories}
{/if}
{if segment_2}
    {exp:channel:entries channel="credit_cards" limit="1" disable="category_fields|member_data|pagination|trackbacks"}
        <article>
            <h4><a href="{url_title_path='credit-cards'}">{title}</a><span class="web-exclusive">MBNA Website Exclusive</span></h4>
            <ul>
                <li class="col-img">
                    <a href="{url_title_path='credit-cards'}"><img width="116" height="84" alt="MBNA Platinum Credit Card" src="../lib-ui/img/cards/core/core_116x84/mbna_platinum_card_116x84.png"></a>
                </li>
                <li class="col-bt">{balance_transfer_rate}</li>
                <li class="col-purchases">{purchases_rate}</li>
                <li class="col-features">{key_features}</li>
                <li class="col-apply">
                    <a rel="blank" class="btn btn-success" href="{apply_url}">
                        Apply Now<span class="hide"> for the {title}</span>
                    </a>
                    <a class="cta" href="{url_title_path='credit-cards'}">
                        Learn more<span class="hide"> about the {title}</span>
                    </a>
                    <label class="mbna-credit-card checkbox" for="compare_1">
                        <span tabindex="0">
                            <input type="checkbox" value="mbna-credit-card" id="compare_1">
                        </span>
                        <span class="hide"> Add the {title} to </span>Compare
                    </label>
                </li>
            </ul>
            <p class="rep-ex">{representative_example}</p>
        </article>  
    {/exp:channel:entries} 
{/if}

タグを削除したため、これは100%正確ではありませんexp:channel:categoriesが、指定した短縮URLに基​​づいて制限される結果が得られるはずです。

于 2012-10-22T15:24:25.640 に答える
6

では、単一のエントリの代わりにこのテンプレートファイルを使用するにはどうすればよいですか?

それ以外の:

{url_title_path='credit-cards'}

使用する

{title_permalink="credit-cards/single"}
于 2012-10-23T15:01:22.397 に答える
5

VISAクレジットカードのカテゴリエントリにテンプレート「credit-cards/single」を使用する主な方法は2つあります。

最初のオプション

'credit-cards/index'テンプレートには次のものがあります。

{if segment_2 != ""}
    {embed="credit-cards/single" entry_id="{entry_id}"}
{/if}

'credit-cards/single'テンプレートには次のものがあります。

<h1>Credit Card Page</h1>
{exp:channel:entries channel="credit_cards" limit="1" entry_id="{embed:entry_id}"}
{if no_results}
  {redirect="404"}
{/if}
... your code ...
{/exp:channel:entries}

 

2番目のオプション

'credit-cards/single'の名前を'credit-cards/ company'(またはよりSEOに関連するもの)に変更し、デフォルトのEEの方法で使用します。

'credit-cards/index'テンプレートは同じままです。

'credit-cards/company'テンプレートには次のものがあります。

<h1>Credit Card Page</h1>
{exp:channel:entries channel="credit_cards" limit="1" entry_id="{entry_id}"}
{if no_results}
  {redirect="404"}
{/if}
... your code ...
{/exp:channel:entries}

この2番目のオプションでは、URLはsite.com/credit-cards/company/visa-credit-cardになります。

それがお役に立てば幸いです。何か誤解したことがあれば教えてください。

于 2012-10-23T10:48:37.250 に答える
2

インデックステンプレートには、おそらく次のようなものが必要です。

{if segment_2 != ""}
  {exp:channel:entries channel="credit_cards"}
    [single entry code...]
  {/exp:channel:entries}
{if:else}
  {exp:channel:categories category_group="1" style="linear" dynamic="no"}
    [your code for all credit cards]
  {/exp:channel:entries}      
{/if}

何が起こっているのかというと、URLはテンプレートグループ/credit-cards/visa-credit-cardのインデックステンプレートを読み込んでいますが、最後のURLタイトルは、ExpressionEngineにテンプレートを単一のエントリページとして扱うように指示しています。credit-cardsvisa-credit-card

ただし、タグに含まdynamic="no"れているのexp:channel:entriesは、EEがそのページにすべてのクレジットカードを表示している理由です。dynamic = "off"に関するこの無料のビデオは、それをよりよく説明するかもしれません。

于 2012-10-22T15:27:45.483 に答える
0

すべての素晴らしい提案をありがとう。最後に、使用するテンプレートを指定できるページモジュールを使用しました。

于 2012-10-29T09:11:00.360 に答える