因此,我们网站上的公告功能默认使用以下代码显示“阅读更多”链接(部分):
<cfif announcement.recordCount gt 0>
<cfloop query="announcement">
<cfoutput>
<td colspan="2"><span class="left">#teaser_text# <a href="/announcements/?id=#id#" title="Read more...">Read more »</a>
</cfoutput>
</cfloop>
(注意,之前有一个cfquery语句,我在代码中为了简洁而将其排除在外)
我在这里尝试做的是在#teaser_text#之后显示“阅读更多”链接,如果#teaser_text#中没有包含链接,那么我可以根据需要手动添加链接并删除自动生成链接。
有关cfif语句的任何想法会这样做吗?
感谢。
编辑:为了澄清,如果在teaser_text中找到任何链接,我想删除“阅读更多”。
答案 0 :(得分:5)
如果在teaser_text中找不到超链接,则仅显示更多链接,此检查可能足够好:
<cfif NOT refindNoCase('<a\s[^>]*?\bhref\s*=',teaser_text) >
<a href="/announcements/?id=#id#" title="Read more...">Read more »</a>
</cfif>
如果你想检查网址,而不是超链接,你需要更加花哨。
您还需要记住,这是将teaser_text视为文本(而不是HTML),因此注释掉链接不会阻止它被发现(如果这很重要,您需要调查HTML DOM解析器;并且没有任何CF,因此您需要查看Java解析器。
答案 1 :(得分:0)
这应该有效:
<cfif findnocase('http://', teaser_text) eq 0>
<a href="/announcements/?id=#id#" title="Read more...">Read more »</a>
</cfif>
如果您手动放置链接,只需更改findnocase()函数的第一个参数[即htp / https]或使用正则表达式来确定它是否是网址[via:refindnocse()]
-Sean
答案 2 :(得分:0)
这样的事情应该做你想做的事情
<cfif announcement.recordCount gt 0>
<cfloop query="announcement">
<cfif findnocase("href",anouncement.teaser_text) >
<a href="/announcements/?id=#announcement.id#"> #anouncement.teaser_text# </a>
<cfelse>
<a href="/announcements/?id=#announcement.id#" > #anouncement.teaser_text# Read more </a>
</cfif>
</cfloop>
</cfif>