您找到的解决方案确实有效 - 但我发现它最终无法提供许多客户所需的灵活性。
我已经为许多网站使用了以下解决方案,客户对此很满意。
1)将您的块数据定义为通道。例如,我经常有一个侧边栏广告、侧边栏脚本和侧边栏文本通道。
2) 使用 playa 字段类型(或其他关系字段类型)创建从父条目(页面)到这些子内容类型的关系。
这通常在后端看起来像这样:
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>