如何在不使用多个通道的情况下在ExpressionEngine中嵌入数据块

时间:2012-03-12 21:29:13

标签: expressionengine channels

我使用过Drupal并且认为我在EE上做错了。我想在一些模板中创建许多嵌入式用户创建的条目块,但不希望为每个模板创建一个通道。在Drupal中,我可以创建一个特定于客户需求的块,但我对如何在EE中执行此操作感到困惑。 例如,我在主页上有三个不同的内容区域,顶部/中间和底部。客户不希望推出博客条目,他们希望在每个条目中放入特定内容。我看到的唯一方法是我需要创建三个不同的通道,并将其嵌入到每个块的顶部,更改通道到中间和底部。还有更好的方法吗?

{exp:channel:entries channel="top" disable="categories|member_data|pagination" limit="1"
sort="desc" dynamic="no" }

我会使用类别组和类别来执行此操作吗?这意味着,我会创建顶部,中间和底部类别来在我的“主页”频道中调出这些条目吗?

3 个答案:

答案 0 :(得分:0)

您找到的解决方案确实有效 - 但我发现最终它无法提供许多客户所需的灵活性。

我已经为许多网站使用了以下解决方案,客户对此感到满意。

1)将您的块数据定义为通道。例如,我经常有Sidbar广告,补充工具栏脚本和补充工具栏文字频道。

2)使用playa字段类型(或其他关系字段类型)创建从父条目(页面)到这些子内容类型的关系。

这通常在后端看起来像这样: playa relationships

3)您现在可以使用父条目来显示子内容。您当然需要使用以下内容将所有这些数据提取到模板中:

<div id="right-side">
{exp:playa:children}

    {if channel_short_name == 'sidebar_javascript'}
        {cf_sidebar_js}
    {/if}

    {if channel_short_name == 'sidebar_videos'}
        {exp:channel_videos:videos entry_id="{entry_id}" embed_width="300" embed_height="238"}
        <h4>{title}</h4>
        {video:embed_code}
        <p class="caption">{video:title}</p>
        {/exp:channel_videos:videos}

    {/if}

    {if channel_short_name == 'sidebar_ads'}

     {exp:adman:show group="{cf_sidebar_adman_block}" order="RANDOM" limit="{cf_sidebar_adman_block_number_of}"}
         <a href="{ad_url}" target="_blank">
            <img src="{ad_image}" alt="{ad_alt}" />
         </a>
     {/exp:adman:show}    
    {/if}

{/exp:playa:children}
</div>

答案 1 :(得分:0)

对于不到1小时的计费工作,您将获得数百个甚至数千小时的打包工作量。有人总是为代码买单,这次为什么不呢? :)

答案 2 :(得分:0)

我们通常会创建一个名为“一般内容”的频道,其中包含一个字段,可以使用任何类型的原生格式(主要不使用x或HTML),然后将其用于不适合的一次性位进入其他渠道。客户端很难在CP中找到这些条目进行编辑,因此我们制作前端“编辑”链接,在CP中打开正确的条目,并且仅对具有内容编辑权限的成员组可见。

如果您真的需要多个自定义字段供此用途,这只会变得毛茸茸。

我从未使用过低变量,但我觉得它在这里很有用。

虽然我同意海报上谈论附加组件的价值,但这是一个特殊需要,我从来没有遇到任何本地解决问题。除了附加组件的成本问题(IMO是值得的)之外,您还会增加安装的复杂性,添加的软件越多,排除错误和升级EE就越耗时。