我确信这个问题不值得成为它自己的话题,但我未能在论坛和 Stack Overflow 上找到令人满意的答案。
我有三个模板。我会尽量清楚和简单地说明我正在尝试做的事情。
页
{exp:channel:entries channel="page" dynamic="yes"}
{!-- 'pages_module' is a matrix field --}
{page_modules}
{!-- The field 'module' is returning the entry_id from SP Table Select --}
{embed="module/index" id="{module:value}"}
{/page_modules}
{/exp:channel:entries}
模块 - 索引
{exp:channel:entries channel="module" dynamic="no" entry_id="{embed:id}" site="main_site"}
{if module_type == "building"}
{embed="module/building" id="{building_id}"}
{/if}
{!-- Other module type checking here... --}
{!-- Note this following line --}
{entry_id} - {embed:id}
{/exp:channel:entries}
模块 - 建筑
{exp:channel:entries channel="building" dynamic="no" entry_id="{embed:id}" site="main_site"}
<h1>{title}</h1>
<p>{building_description}</p>
{/exp:channel:entries}
因此,基本上,在此设置中,您可以将“模块”附加到页面条目。在这种特殊情况下,我试图查看页面上是否设置了任何 {module_id}。如果是这样,将 {module_id} 传递给主模块模板,它将获取模块条目,比较 {module_type} 并将 {building_id} 发送到第三个模板。然后获取并显示建筑物信息。
在我写注释的模块模板中,{entry_id} 和 {embed:id} 不匹配。{entry_id} 等于动态获取的第一个页面条目的 ID。我认为这是因为它是嵌入式模板而不是片段,因此会产生三个嵌套的 {exp:channel:entries} 标签。但是话又说回来,我不能将 ID 传递给片段,可以吗?
另外值得注意的是,我正在使用 MSM,因为我有 8 个站点在上面运行,所以我希望“模块”是模块化的,并且都位于“主站点”下以便于维护。
如果我错了,我希望有人能澄清这一点和/或纠正我。