正在加载文档...
iCMS:route 路由标签
``` ### 实用示例 #### 网站导航 ```html ``` #### 文章分享链接 ```html ```iCMS 路由标签技术文档
路由标签 (route)
路由标签用于在模板中生成URL链接,支持多种URL生成方式和参数设置。
?️ 以下说明只是路由标签的使用举例,不是真实链接
iCMS:route 标签
支持参数
参数名 | 类型 | 默认值 | 说明 |
---|---|---|---|
url | 字符串 | - | 链接地址,可以是路由名称或URL |
as | 布尔值 | false | 是否返回URL而不直接输出 |
布尔值 | true | 是否输出URL | |
query | 数组 | - | 附加到URL的查询参数 |
host | 布尔值 | false | 是否添加域名前缀 |
set | 布尔值 | false | 是否设置全局路由变量 |
self | 字符串 | - | 使用当前页面URL |
返回值
如果设置了as=true,则返回生成的URL;否则直接输出URL并返回URL字符串。
使用示例
<!-- 基本用法 -->
<a href="<!--{iCMS:route url='article/view/1'}-->">查看文章</a>
<!-- 使用as参数返回URL -->
<!--{iCMS:route url='article/list' as='true'}-->
<a href="<!--{$route}-->">文章列表</a>
<!-- 添加查询参数 -->
<a href="<!--{iCMS:route url='article/list' query=['cid'=>1,'page'=>2]}-->">分类文章</a>
<!-- 添加域名前缀 -->
<a href="<!--{iCMS:route url='article/view/1' host='true'}-->">完整链接</a>
<!-- 使用当前页面URL -->
<a href="<!--{iCMS:route url='self' query=['page'=>$page+1]}-->">下一页</a>
常见应用场景
1. 文章链接生成
<!--{foreach key="key" value="article" from="$article_list"}-->
<div class="article-item">
<h3>
<a href="<!--{iCMS:route url='article/view/$article.id'}-->">
<!--{$article.title}-->
</a>
</h3>
<div class="meta">
<span class="category">
<a href="<!--{iCMS:route url='category/$article.cid'}-->">
<!--{$article.category.name}-->
</a>
</span>
<span class="author">
<a href="<!--{iCMS:route url='user/home/$article.userid'}-->">
<!--{$article.user.nickname}-->
</a>
</span>
</div>
</div>
<!--{/foreach}-->
2. 分页链接生成
<div class="pagination">
<!--{if $page > 1}-->
<a href="<!--{iCMS:route url='self' query=['page'=>1]}-->" class="first">首页</a>
<a href="<!--{iCMS:route url='self' query=['page'=>$page-1]}-->" class="prev">上一页</a>
<!--{/if}-->
<!--{for $i=1 to $total_page}-->
<!--{if $i == $page}-->
<span class="current"><!--{$i}--></span>
<!--{else}-->
<a href="<!--{iCMS:route url='self' query=['page'=>$i]}-->"><!--{$i}--></a>
<!--{/if}-->
<!--{/for}-->
<!--{if $page < $total_page}-->
<a href="<!--{iCMS:route url='self' query=['page'=>$page+1]}-->" class="next">下一页</a>
<a href="<!--{iCMS:route url='self' query=['page'=>$total_page]}-->" class="last">末页</a>
<!--{/if}-->
</div>
3. 搜索表单链接
<form action="<!--{iCMS:route url='search' as='true'}-->" method="get">
<input type="text" name="keywords" placeholder="请输入关键词">
<select name="type">
<option value="article">文章</option>
<option value="tag">标签</option>
<option value="user">用户</option>
</select>
<button type="submit">搜索</button>
</form>
4. 设置全局路由变量
<!-- 设置全局路由变量 -->
<!--{iCMS:route url='article/list' query=['cid'=>1] set='true'}-->
<!-- 在其他地方使用 -->
<div class="breadcrumb">
<a href="/">首页</a> >
<a href="<!--{$Route.url}-->"><!--{$category.name}--></a>
</div>
注意事项
- URL参数:url参数为必填项,如果为空将输出"javascript:;"
- 路由解析:非完整URL会通过Route::routing()方法解析为实际URL
- 查询参数:可以通过query参数添加查询字符串
- 域名前缀:设置host=true可以添加网站域名前缀,生成完整URL
- 当前页面:设置url='self'可以使用当前页面URL
高级用法
条件URL生成
<!--{if $condition}-->
<a href="<!--{iCMS:route url='path/to/url1'}-->">链接1</a>
<!--{else}-->
<a href="<!--{iCMS:route url='path/to/url2'}-->">链接2</a>
<!--{/if}-->
动态路由参数
<!--{assign var="article_id" value="123"}-->
<!--{assign var="category_id" value="5"}-->
<a href="<!--{iCMS:route url='article/view/$article_id/c$category_id'}-->">
查看文章
</a>
多参数URL生成
<a href="<!--{iCMS:route
url='article/list'
query=[
'cid' => $category.id,
'tag' => $tag.id,
'page' => $page,
'orderby' => 'hot'
]
}-->">热门文章</a>
在JavaScript中使用
<script>
function goToArticle(id) {
var url = "<!--{iCMS:route url='article/view' as='true'}-->";
window.location.href = url + "/" + id;
}
function searchByTag(tag) {
var baseUrl = "<!--{iCMS:route url='search' as='true'}-->";
window.location.href = baseUrl + "?keywords=" + encodeURIComponent(tag) + "&type=tag";
}
</script>
实用示例
网站导航
<nav class="main-nav">
<ul>
<li><a href="<!--{iCMS:route url=''}-->">首页</a></li>
<li><a href="<!--{iCMS:route url='article/list'}-->">文章</a></li>
<li><a href="<!--{iCMS:route url='category/index'}-->">分类</a></li>
<li><a href="<!--{iCMS:route url='tag/index'}-->">标签</a></li>
<li><a href="<!--{iCMS:route url='user/index'}-->">用户</a></li>
<li><a href="<!--{iCMS:route url='about'}-->">关于我们</a></li>
</ul>
</nav>
文章分享链接
<div class="share-links">
<span>分享到:</span>
<!--{iCMS:route url='article/view/$article.id' host='true' as='true'}-->
<a href="https://service.weibo.com/share/share.php?url=<!--{$route|urlencode}-->&title=<!--{$article.title|urlencode}-->" target="_blank" class="weibo">微博</a>
<a href="https://connect.qq.com/widget/shareqq/index.html?url=<!--{$route|urlencode}-->&title=<!--{$article.title|urlencode}-->" target="_blank" class="qq">QQ</a>
<a href="https://www.facebook.com/sharer/sharer.php?u=<!--{$route|urlencode}-->" target="_blank" class="facebook">Facebook</a>
<a href="https://twitter.com/intent/tweet?url=<!--{$route|urlencode}-->&text=<!--{$article.title|urlencode}-->" target="_blank" class="twitter">Twitter</a>
</div>