2012-05-02 3 views
0

Umbraco, вернее, xslt, кажется, дает мне ошибки, когда я пытаюсь создать список узлов контента на основе определенного тега.Создание контента на основе тегов в Umbraco

Рассмотрим следующий код в Macro:

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

Любой помощь и мысли.

+0

Вы уверены, что $ location не пусто или пусто? – BeaverProj

ответ

0

Hav вы проверили содержание «$ CurrentPage/othertag» с этой строки кода:

<xsl:value-of select="$currentPage/othertag" /> 

После этого вы должны поместить этот код строку в XSLT вместо вашего цикла Еогеасп:

<xsl:value-of select="tagsLib:getEverythingWithTags($location)" /> 

и проверьте содержимое тегов.

Смежные вопросы