php - ExpressionEngine:单项模板

标签 php codeigniter expressionengine

我创建了一个名为信用卡的 channel 。所以我创建了一个名为 credit-cards 的模板组,其索引循环遍历所有信用卡并输出它们。这方面工作正常,这是我在 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}

所以我的问题是这样的。假设我有一张名为 visa 信用卡的信用卡,为其生成的 url 是/credit-cards/visa-credit-card。当我点击这个链接时,我又得到了我的索引页面。我在我的组中创建了另一个名为 single.html 的模板文件,其中包含输出一张信用卡的代码。看起来像这样:

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

那么如何让它使用这个模板文件来代替单个条目呢?

最佳答案

这实际上是一个很容易解决的问题。您正在做的是代码的第 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 限制的结果,就像您一样已经指定。

关于php - ExpressionEngine:单项模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13014024/

相关文章:

javascript - DataTables JS 在 PHP 应用程序中无法正确排序日期

php - 数据库/PHP 设计 - 将其他实体实例的列表添加到另一个实体实例?

PHP (Codeigniter) 电子邮件帮助

php - mysql 语法错误,看不出什么问题

PHP第一次将字符串写入新行而不是文件末尾

php - 表达式引擎 - PHP - 无法运行函数

expressionengine - ExpressionEngine条目可以支持一对多关系吗?

php - 合并两个 mysql 字段并使用 php 更新第三个字段

php - 如何在 PHP 中的 ckeditor 中显示来自 mysql 的数据

expressionengine - 表达式引擎博客和 channel 之间的区别?