我正在尝试获取我的可移动类型博客的条目摘要,以显示图像,其标题在图像上以某种方式格式化(图像被标记,如果它将用于此目的),并显示标题另一种方式,如果没有图像。但是,我无法将else语句与MTEntryAsset一起使用。如果没有EntryAssets用“image”类型标记“主页”,它什么都不做。
<mt:entryassets tag="homepage" type="image" limit="1">
<div class="image_entrie_header"><img src="<mt:assetthumbnailurl>"></div>
<h3 class="blog_entry_headingimg"><a href="<mtentrypermalink>"><mt:entryTitle></a></h3>
<mt:else>
<h3 class="blog_entry_heading"><a href="<mtentrypermalink>"><mt:entryTitle></a></h3>
</mt:entryassets>
答案 0 :(得分:3)
我不相信EntryAssets标记支持<mt:Else>
,但你可以通过一点Movable Type逻辑实现这一点。
使用一些简单的标签,您可以执行以下操作:
<mt:If tag="EntryCategory">
<p>Filed under <$mt:EntryCategory$></p>
<mt:Else>
<p>Uncategorized</p>
</mt:If>
但是,由于您的块标记EntryAssets是一个复杂的标记,需要多个template tag modifiers,其中一个也称为tag
,这不起作用。我们可以使用Movable Type variables来伪装它:
<$mt:Var name="asset_found" value="0"$>
<mt:EntryAssets tag="homepage" type="image" limit="1">
<$mt:Var name="asset_found" value="1"$>
Your code here
</mt:EntryAssets>
<mt:Unless name="asset_found">
Show this if none found
</mt:Unless>
注意我们将变量asset_found
设置为0
的第一行并非Movable Type严格要求,但如果您在同一个地方使用此块,则最好重置该变量模板。
答案 1 :(得分:2)
查理的解决方案很好;但是让我提出一个替代方案:Extra Tags plugin有一个名为EntryHasAssets的标签。这个标签对Charlie解决方案的好处是模板更精简,也许更容易阅读。
<mt:EntryHasAssets>
<mt:entryassets tag="homepage" type="image" limit="1">
<div class="image_entrie_header"><img src="<mt:assetthumbnailurl>"></div>
<h3 class="blog_entry_headingimg"><a href="<mtentrypermalink>"><mt:entryTitle></a></h3>
</mt:entryassets>
<mt:Else>
<h3 class="blog_entry_heading"><a href="<mtentrypermalink>"><mt:entryTitle></a></h3>
</mt:EntryHasAssets>
我没有进行任何性能测试:我不知道Charlie的原生解决方案是否比这个插件的标签更快或更慢。添加插件会增加开销,但对于像ExtraTags这样写得很好的小插件来说它是最小的。我可能只是使用原生解决方案,除非我在这个插件中也使用了另一个标签,只是为了保持干净。
答案 2 :(得分:0)
mt:Else与mt:If和mt:Unless一起使用。它没有被定义为封闭标签时的条件,例如mt:Entries,mt:Comments,mt:Categories没有结果。
Charlie建议的解决方案是我们如何编码支持SuperAssets系列插件的模板中缺少条目资产。
答案 3 :(得分:0)
你的解决方案不起作用的原因是因为你在那里使用的mt:Else标签不能用作'mt:entryassets'标签的否定。
Charlie概述的解决方案非常有效。
Dan的插件非常适合他给你的模板样本。你可能想知道的是Dan的插件更聪明,可以让你做更多的进化工作。