MAGNOLIA CMS - При использовании cmsu: simpleSearch и cmsu: searchResultSnippet ссылки отображаются некорректно и не могут преобразовать дату в читаемый формат - PullRequest
1 голос
/ 15 сентября 2011

При использовании 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>

Итак, допустим, у меня естьстраница, соответствующая шаблону поиска, будет правильно отображать фрагмент, если это только текст.Но если текст, соответствующий шаблону, является ссылкой, он отобразит фрагмент, такой как "", и больше не будет ссылаться.

Я бы хотел сохранить тот же формат.то есть.если текст также является ссылкой, отобразите текст со ссылкой.


Кроме того, при использовании 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[время = 1307354223649, areFieldsSet = верно, areAllFieldsSet = верно, мягок = ложная, зона = sun.util.calendar.ZoneInfo [ID = "GMT + 01: 00", смещение = 3600000, dstSavings = 0, useDaylight = ложные, переходы= 0, lastRule = NULL], firstDayOfWeek = 2, minimalDaysInFirstWeek = 4, ERA = 1, ГОД = 2011, МЕСЯЦ = 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 Полагаю, есть идеи, как сделать это правильно?

Ответы [ 2 ]

1 голос
/ 29 января 2013

Попробуйте вместо <p>Creation Date: ${node.metaData.creationDate.time}</p>, но я не знаю, сработает ли это.node.metaData.creationDate имеет тип java.util.Calendar, а не java.util.Date.Сначала выполните преобразование из календаря в дату.

0 голосов
/ 16 сентября 2011

SearchResultSnippetTag преднамеренно нейтрализует HTML-код, поскольку не хочет оставлять вас в положении отображения тега , который находится в первых 120 символах, без отображения тега (который может или не можетв первые 120 символов).Чтобы это работало так, как вам нужно, вам нужно переписать этот класс, отслеживая все теги, которые открываются в этих первых 120 символах, чтобы вы могли убедиться, что соответствующий закрывающий тег также будет выводиться.

Для даты выпуска, на этой странице в вики, похоже, что вы должны иметь возможность использоватьтег как это:

...