2

我正在尝试获取我的可移动类型博客的条目摘要,以在图像上显示标题以某种方式格式化的图像(如果将用于此目的,则标记图像),并以另一种方式显示标题,如果没有图像。但是,我无法让 else 语句正常与 MTEntryAsset 一起使用。如果没有使用“图像”类型标记为“主页”的 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>
4

4 回答 4

3

我不相信 EntryAssets 标签支持<mt:Else>,但你可以通过一点 Movable Type 逻辑来实现这一点。

使用一些简单的标签,您将能够执行以下操作:

<mt:If tag="EntryCategory">
  <p>Filed under <$mt:EntryCategory$></p>
<mt:Else>
  <p>Uncategorized</p>
</mt:If>

但是由于您的块标签 EntryAssets 是一个复杂的标签,带有多个模板标签修饰符,其中一个也称为tag,这将不起作用。我们可以使用这样的 Movable Type变量来伪造它:

<$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 严格要求的,但是如果你在同一个模板的多个地方使用这个块,最好重置变量。

于 2013-01-05T01:03:45.207 回答
2

查理的解决方案很好;但让我提出一个替代方案:Extra Tags 插件有一个名为 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 这样编写良好的小型插件来说,开销是最小的。我可能只会使用本机解决方案,除非我还在这个插件中使用了另一个标签,只是为了保持干净。

于 2013-01-05T14:10:04.020 回答
0

mt:Elsemt:Ifmt:Unless一起使用。未定义为封闭标记如 mt:Entries、mt:Comments、mt:Categories 没有结果时的条件。

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

于 2013-01-05T14:22:46.760 回答
0

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

查理上面概述的解决方案非常有效。

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

于 2013-02-14T20:50:57.790 回答