If statement 可移动类型MTEntryAsset Else语句不工作

If statement 可移动类型MTEntryAsset Else语句不工作,if-statement,movabletype,mt,If Statement,Movabletype,Mt,我正在尝试获取我的移动类型博客的条目摘要,以便在图像上显示标题以某种方式格式化的图像(如果将用于此目的,则图像会被标记),如果没有图像,则以另一种方式显示标题。但是,我无法使else语句按其应有的方式与MTEntryAsset一起工作。如果没有标记为“homepage”且类型为“image”的EntryAssets,则它不会执行任何操作 <mt:entryassets tag="homepage" type="image" limit="1"> <div class

我正在尝试获取我的移动类型博客的条目摘要,以便在图像上显示标题以某种方式格式化的图像(如果将用于此目的,则图像会被标记),如果没有图像,则以另一种方式显示标题。但是,我无法使else语句按其应有的方式与MTEntryAsset一起工作。如果没有标记为“homepage”且类型为“image”的EntryAssets,则它不会执行任何操作

<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>

">

我不相信EntryAssets标签支持
,但您可以通过一点可移动类型逻辑来实现这一点

使用一些简单的标记,您可以执行以下操作:

<mt:If tag="EntryCategory">
  <p>Filed under <$mt:EntryCategory$></p>
<mt:Else>
  <p>Uncategorized</p>
</mt:If>
<$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>

请注意,Movable Type并不严格要求将变量
asset\u found
设置为
0
,但如果您在同一模板中的多个位置使用此块,则最好重置变量。

Charlie的解决方案很好;但让我来介绍另一种方法:它有一个名为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),这是最小的。我可能只会使用本机解决方案,除非我在这个插件中还使用了另一个标记,只是为了保持干净。

与and一起使用。它没有定义为封闭标记(如mt:Entries、mt:Comments、mt:Categories)时没有结果的条件


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

解决方案不起作用的原因是,您在模板中使用的mt:Else标记不能作为“mt:entryassets”标记的否定

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

Dan的插件与他给你的模板示例配合得非常好。您可能想知道的是,Dan的插件要聪明得多,可以让您做更多的进化工作