仅当使用ColdFusion没有链接时才显示链接?

时间:2011-09-04 22:29:00

标签: coldfusion coldfusion-8

因此,我们网站上的公告功能默认使用以下代码显示“阅读更多”链接(部分):

<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 &raquo;</a>

</cfoutput>
</cfloop>

(注意,之前有一个cfquery语句,我在代码中为了简洁而将其排除在外)

我在这里尝试做的是在#teaser_text#之后显示“阅读更多”链接,如果#teaser_text#中没有包含链接,那么我可以根据需要手动添加链接并删除自动生成链接。

有关cfif语句的任何想法会这样做吗?

感谢。

编辑:为了澄清,如果在teaser_text中找到任何链接,我想删除“阅读更多”。

3 个答案:

答案 0 :(得分:5)

如果在teaser_text中找不到超链接,则仅显示更多链接,此检查可能足够好:

<cfif NOT refindNoCase('<a\s[^>]*?\bhref\s*=',teaser_text) >
    <a href="/announcements/?id=#id#" title="Read more...">Read more &raquo;</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 &raquo;</a>    
        </cfif>

如果您手动放置链接,只需更改find​​nocase()函数的第一个参数[即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>