[英]Generating content based on tags in Umbraco
當我嘗試根據特定標簽生成內容節點列表時,Umbraco或xslt似乎給了我錯誤。
在宏中考慮以下代碼:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxml="urn:schemas-microsoft-com:xslt"
xmlns:tagsLib="urn:tagsLib"
xmlns:umbraco.library="urn:umbraco.library" xmlns:Exslt.ExsltCommon="urn:Exslt.ExsltCommon" xmlns:Exslt.ExsltDatesAndTimes="urn:Exslt.ExsltDatesAndTimes" xmlns:Exslt.ExsltMath="urn:Exslt.ExsltMath" xmlns:Exslt.ExsltRegularExpressions="urn:Exslt.ExsltRegularExpressions" xmlns:Exslt.ExsltStrings="urn:Exslt.ExsltStrings" xmlns:Exslt.ExsltSets="urn:Exslt.ExsltSets"
exclude-result-prefixes="msxml tagsLib umbraco.library Exslt.ExsltCommon Exslt.ExsltDatesAndTimes Exslt.ExsltMath Exslt.ExsltRegularExpressions Exslt.ExsltStrings Exslt.ExsltSets ">
<xsl:output method="xml" omit-xml-declaration="yes"/>
<xsl:param name="currentPage"/>
<xsl:variable name="location" select="$currentPage/othertag" />
<xsl:template match="/">
<div class="more-news">
<xsl:value-of select="$currentPage/location"/>
<h4>More news from <span class="capitalize"><xsl:value-of select="$location"/></span></h4>
<ul>
<xsl:for-each select="tagsLib:getEverythingWithTags('somalia')/root/node">
<li><a href="#"><xsl:value-of select="@nodeName"/></a></li>
<xsl:value-of select="@nodeUrl"/>
</xsl:for-each>
</ul>
</div>
</xsl:template>
</xsl:stylesheet>
我在這里試圖做的是找到在當前頁面上定義的帶有標簽(位置)的所有內容。 上面的設置可以很好地查找帶有位置標簽“ somalia”的所有頁面。
該行:
<xsl:for-each select="tagsLib:getEverythingWithTags('somalia')/root/node">
應該 (我認為)是:
<xsl:for-each select="tagsLib:getEverythingWithTags($location)/root/node">
但是保存這樣的代碼會給我以下錯誤:
umbraco.DataLayer.SqlHelperException: Umbraco Exception (DataLayer): SQL helper exception in ExecuteReader ---> System.Data.SqlClient.SqlException: Incorrect syntax near ')'.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior)
at Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteReader(String connectionString, CommandType commandType, String commandText, SqlParameter[] commandParameters)
at umbraco.DataLayer.SqlHelpers.SqlServer.SqlServerHelper.ExecuteReader(String commandText, SqlParameter[] parameters)
at umbraco.DataLayer.SqlHelper`1.ExecuteReader(String commandText, IParameter[] parameters)
--- End of inner exception stack trace ---
at umbraco.DataLayer.SqlHelper`1.ExecuteReader(String commandText, IParameter[] parameters)
at umbraco.cms.businesslogic.Tags.Tag.GetNodesWithTags(String tags)
at umbraco.editorControls.tags.library.getEverythingWithTags(String tags)
任何幫助和想法表示贊賞。
您是否已使用以下代碼檢查“ $ currentPage / othertag”的內容:
<xsl:value-of select="$currentPage/othertag" />
之后,您應該將此代碼行放入xslt而不是foreach循環中:
<xsl:value-of select="tagsLib:getEverythingWithTags($location)" />
並檢查標簽的內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.