MAGNOLIA CMS - 使用 cmsu:simpleSearch 和 cmsu:searchResultSnippet 链接无法正确显示并且无法将日期转换为可读格式
Posted
技术标签:
【中文标题】MAGNOLIA CMS - 使用 cmsu:simpleSearch 和 cmsu:searchResultSnippet 链接无法正确显示并且无法将日期转换为可读格式【英文标题】:MAGNOLIA CMS - When using cmsu:simpleSearch and cmsu:searchResultSnippet links are not displayed properly and can't convert date into readable format 【发布时间】:2011-09-15 14:36:46 【问题描述】:使用 cmsu:simpleSearch 和 cmsu:searchResultSnippet 链接无法正确显示。
这是我的代码:
<c:if test="$!empty param.contentSearchPattern">
<h1>xx results for "$fn:escapeXml(param.contentSearchPattern)"</h1>
<ol>
<cmsu:simpleSearch query="$param.contentSearchPattern" var="results" startLevel="1" />
<c:if test="$empty results">
<p>No results</p>
</c:if>
<c:forEach var="node" items="$results">
<li>
<h2><a href="$pageContext.request.contextPath$node.handle.html">$node.title</a></h2>
<p class="pageResultUrl">drintranet-testdev$node.handle.html</p>
<p><cmsu:searchResultSnippet query="$param.contentSearchPattern" page="$node" chars="120"/></p>
</li>
</c:forEach>
</ol>
</c:if>
假设我有一个匹配搜索模式的页面,如果这只是文本,它将正确显示 sn-p。但是,如果与模式匹配的文本是链接,它将显示 sn-p,例如“”,不再链接。
我希望能够保持相同的格式。 IE。如果文本也是链接,则显示带有链接的文本。
另外,当使用 cmsu:simpleSearch 和 cmsu:searchResultSnippet 时,我想显示页面/文章的创建日期。
代码如下:
<c:if test="$!empty param.contentSearchPattern">
<h1>xx results for "$fn:escapeXml(param.contentSearchPattern)"</h1>
<ol>
<cmsu:simpleSearch query="$param.contentSearchPattern" var="results" startLevel="1" />
<c:if test="$empty results">
<p>No results</p>
</c:if>
<c:forEach var="node" items="$results">
<li>
<h2><a href="$pageContext.request.contextPath$node.handle.html">$node.title</a></h2>
<p class="pageResultUrl">drintranet-testdev$node.handle.html</p>
<p><cmsu:searchResultSnippet query="$fn:escapeXml(param.contentSearchPattern)" page="$node" chars="120"/></p>
<p>Creation Date: $node.metaData.creationDate</p>
</li>
</c:forEach>
</ol>
</c:if>
但它返回创建日期行:
创建日期: java.util.GregorianCalendar[time=1307354223649,areFieldsSet=true,areAllFieldsSet=true,lenient=false,zone=sun.util.calendar.ZoneInfo[id="GMT+01:00",offset=3600000,dstSavings=0, useDaylight=false,transitions=0,lastRule=null],firstDayOfWeek=2,minimalDaysInFirstWeek=4,ERA=1,YEAR=2011,MONTH=5,WEEK_OF_YEAR=23,WEEK_OF_MONTH=2,DAY_OF_MONTH=6,DAY_OF_YEAR=157,DAY_OF_WEEK =2,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=10,HOUR_OF_DAY=10,MINUTE=57,SECOND=3,MILLISECOND=649,ZONE_OFFSET=3600000,DST_OFFSET=0]
我正在尝试使用这种类型的代码将此日期转换为人类可读的格式:
<cms:ifNotEmpty nodeDataName="date">
<cms:out nodeDataName="date" datePattern="MM/dd/yyyy hh:mm a" var="eventDate"/>
</cms:ifNotEmpty>
但这不起作用,因为 pageDate 不是我假设的 nodeDataName,知道如何正确处理吗?
【问题讨论】:
【参考方案1】:改用<p>Creation Date: $node.metaData.creationDate.time</p>
,但我不知道这是否可行。 node.metaData.creationDate
是 java.util.Calendar 类型,而不是 java.util.Date
。
首先进行从日历到日期的转换。
【讨论】:
感谢您的回答。很抱歉无法检查您的答案,这个问题已经很老了,我现在正在做其他事情。 A.【参考方案2】:SearchResultSnippetTag 故意使 HTML 中性化,因为它不想让您处于显示前 120 个字符中的 标记而不显示 标记(可能也可能不显示)的位置位于前 120 个字符中)。为了让它以您想要的方式工作,您需要重写该类,跟踪在前 120 个字符中打开的所有标签,以便您可以确保相应的关闭标签也得到输出.
对于日期问题,根据维基上的this page,看起来您应该能够像这样使用
【讨论】:
以上是关于MAGNOLIA CMS - 使用 cmsu:simpleSearch 和 cmsu:searchResultSnippet 链接无法正确显示并且无法将日期转换为可读格式的主要内容,如果未能解决你的问题,请参考以下文章