1

我正在尝试从“精选”小节(主页/精选/文章 1、2、...、N)中的文章中获取文本和图像,但我没有得到图像。这是从“精选”节点内的每篇文章中获取文本的代码。

 <xsl:if test="position() &lt; $maxItems">
     <h3><a href="{umbraco.library:NiceUrl(@id)}">
         <xsl:value-of select="newsTitle"/>
         </a>
     </h3>
     <strong><xsl:value-of select="intro"/></strong>

     <br/>      
     <small>
         A: <xsl:value-of select="umbraco.library:FormatDateTime($currentPage/@updateDate, 'MMMM d, yyyy')"/> 
         Por:  <xsl:value-of select="author"/>
     </small>
 </xsl:if>

它工作得很好。但我无法从文章中获取图像。我正在尝试这种方式,其中包括:

<a href="{umbraco.library:NiceUrl(@id)}">
    <xsl:if test="count(./* [@isDoc]) > 0">
    <img src="{concat(substring-before(./*/thumbnail,'.'), '_thumb.jpg')}"/>
    </xsl:if>     
</a>

我不知道在这里做什么,我正在为元素使用“上传”属性以及“MediaPicker”(别名:“缩略图”),所以,我一直在使用这些属性类型进行测试,但没有得到任何东西。我只想将文章的图像(如果存在)放在从子节点检索到主页的文本旁边。

我会感谢你的帮助。提前致谢!

[Umbraco 6.1.3]

4

3 回答 3

0

这是一个例子:

<xsl:variable name="mediaId" select="number($currentPage/mediaId)" />
<xsl:if test="$mediaId > 0">
    <xsl:variable name="mediaNode" select="umbraco.library:GetMedia($mediaId, 0)" />
    <xsl:if test="$mediaNode/umbracoFile">
        <img src="{$mediaNode/umbracoFile}" alt="[image]" height="{umbracoHeight}" width="{umbracoWidth}" />
    </xsl:if>
</xsl:if>

如何在 XSLT 中使用 umbraco.library GetMedia

于 2013-08-09T19:52:45.777 回答
0

在您的情况下,这应该可以解决问题:

<a href="{umbraco.library:NiceUrl(@id)}">
  <xsl:if test="$currentPage/thumbnail != ''">
   <img src="{umbraco.library:GetMedia($currentPage/thumbnail, 0)/umbracoFile}"/>
  </xsl:if>     
</a>

请参阅此页面以供参考

于 2013-08-09T21:27:16.077 回答
0

我认为错误是您需要选择一个属性,而不是一个节点。您正在使用 @isDoc 属性,因此不会选择任何属性。

如前所述,“缩略图”是数据类型“上传”的节点(假设此处只有 1 个缩略图)上的属性(将路径的值保存为字符串):

<xsl:if test="string-length(./thumbnail) > 0">
<a href="{umbraco.library:NiceUrl(@id)}">
<img src="{concat(substring-before(./thumbnail,'.'), '_thumb.jpg')}"/>
</a>
</xsl:if>   

或者使用“媒体选择器”数据类型(将媒体项的节点 ID 保存为 int):

<xsl:if test="string-length(./thumbnail) > 0">
<xsl:variable name="image" select="umbraco.library:GetMedia(./thumbnail,0)"/>
<a href="{umbraco.library:NiceUrl(@id)}">
<img src="{concat(substring-before($image/umbracoFile,'.'), '_thumb.jpg')}"/>
</a>
</xsl:if>

由于发布的其他代码工作正常,并且没有使用 $currentPage,我假设此代码包装在模板中,或者您正在迭代一组节点。

我还将链接元素放在 if 语句中,并在创建链接之前检查缩略图是否可用,以避免空链接元素。

于 2013-08-11T18:19:26.817 回答