仅在没有链接时才使用ColdFusion显示链接?
所以在我们网站上公布的功能显示使用下面的代码(部分)“更多”默认链接:仅在没有链接时才使用ColdFusion显示链接?
<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#后面显示“Read More”链接,以便在#teaser_text#内没有包含任何链接,这样我就可以手动添加链接如果需要,请移除自动生成的链接。
对cfif语句有任何想法可以做到这一点?
谢谢。
编辑:澄清,如果在teaser_text中找到任何链接,我想删除“阅读更多”。
这应该工作:
<cfif findnocase('http://', teaser_text) eq 0>
<a href="/announcements/?id=#id#" title="Read more...">Read more »</a>
</cfif>
如果要放置链接手动只是改变findnocase()函数的第一个参数[即HTP/HTTPS]或使用正则表达式来弄清楚,如果它是一个网址[通过:refindnocse()]
-Sean
除了示例链接不包含'http://',其中_external_链接可能会(并且很可能是外部链接应该排除阅读更多的内容),所以这会以两种方式失败。 :/ –
蒂莫西可以将他想要的任何东西作为第一个参数,因为他手动输入链接,他应该能够维护它。 - 不知道你的意思是排除“阅读更多” - 但是,我同意可能搜索“href =”将是维护内部手动链接的更好选择。 –
像这样的东西应该做你想做的
<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>
为什么你将超级链接中的所有传情文本都包裹在一起,并在cfif/cfelse的两侧放置了相同的文本? :/ –
要只显示,如果没有超链接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的)。
如果在teaser_text中找到_any_链接,或者只有在存在与/ announcements /?id =#id#'的链接时才删除链接,是否要删除更多链接? –
顺便说一句,如果您原始代码中的cfif/cfloop之间没有任何内容(并且“”和“”之后没有任何内容,则根本不需要cfif - 对于零行查询,cfloop只会跳过。您也可以将cfloop和cfoutput合并为' –
更新以澄清 - 如果在teaser_text中找到任何网址,我想移除“阅读更多” – Timothy