可移动类型MTEntryAsset Else语句不起作用

时间:2013-01-04 19:37:08

标签: if-statement movabletype mt

我正在尝试获取我的可移动类型博客的条目摘要,以显示图像,其标题在图像上以某种方式格式化(图像被标记,如果它将用于此目的),并显示标题另一种方式,如果没有图像。但是,我无法将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>

4 个答案:

答案 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:Elsemt:Ifmt:Unless一起使用。它没有被定义为封闭标签时的条件,例如mt:Entries,mt:Comments,mt:Categories没有结果。

Charlie建议的解决方案是我们如何编码支持SuperAssets系列插件的模板中缺少条目资产。

答案 3 :(得分:0)

你的解决方案不起作用的原因是因为你在那里使用的mt:Else标签不能用作'mt:entryassets'标签的否定。

Charlie概述的解决方案非常有效。

Dan的插件非常适合他给你的模板样本。你可能想知道的是Dan的插件更聪明,可以让你做更多的进化工作。