您好,欢迎来到95分类目录!站长微信:vip3632094
当前位置:95分类目录 » 站长资讯 » 35dir专区 » 文章详细 订阅RssFeed

95DIR网站目录系统 - 模板标签使用说明文档

来源:本站原创 浏览:3次 时间:2025-07-29
简介:【系统概述】 35dir系统采用Smarty模板引擎,提供强大的模板标签功能。本文档详细介绍所有可用的模板标签、 函数和变量,帮助开发者快速掌握模板开发技巧。 【模板引擎配置】 - 模板引擎:Smarty 3.x/4.x(支持版本升级) - 标签分隔符:{# 和 #}(可在 source/include/smarty.php 中修改) - 模板目录:themes/default/(
═══════════════════════════════════════════════════════════════════════════════
35DIR网站目录系统 - 模板标签使用说明文档
Version 2.0 - 详细完整版
═══════════════════════════════════════════════════════════════════════════════

【系统概述】
35dir系统采用Smarty模板引擎,提供强大的模板标签功能。本文档详细介绍所有可用的模板标签、
函数和变量,帮助开发者快速掌握模板开发技巧。

【模板引擎配置】
- 模板引擎:Smarty 3.x/4.x(支持版本升级)
- 标签分隔符:{# 和 #}(可在 source/include/smarty.php 中修改)
- 模板目录:themes/default/(前台)、themes/system/(后台)
- 编译目录:data/compile/
- 缓存目录:data/cache/
- 升级方法:覆盖 source/extend/smarty 目录即可

【标签语法规则】
1. 变量输出:{#$变量名#}
2. 函数调用:{#函数名(参数1, 参数2)#}
3. 循环语句:{#foreach from=数组 item=项目#}...{#/foreach#}
4. 条件语句:{#if 条件#}...{#else#}...{#/if#}
5. 注释语法:{#* 这是注释 *#}

═══════════════════════════════════════════════════════════════════════════════
一、网站通用标签
═══════════════════════════════════════════════════════════════════════════════

【基础站点信息】
{#$site_root#}        ─── 网站根目录路径(如:http://www.example.com/)
{#$site_name#}        ─── 网站名称(后台设置的站点名称)
{#$site_title#}       ─── 网站标题(浏览器标题栏显示)
{#$site_url#}         ─── 网站完整URL地址
{#$site_keywords#}    ─── 网站关键词(SEO用途)
{#$site_description#} ─── 网站描述信息(SEO用途)
{#$site_copyright#}   ─── 网站版权信息(支持HTML代码)
{#$site_rss#}         ─── RSS订阅链接
{#$site_path#}        ─── 当前位置导航(面包屑导航)

【系统配置信息】
{#$cfg#}              ─── 完整的系统配置数组(包含所有后台设置)
{#$cfg.参数名#}       ─── 获取特定配置参数
{#$script_time#}      ─── 页面执行时间和查询统计
{#$login_status#}     ─── 用户登录状态信息

【使用示例】
{#$site_title#}



{#$site_copyright#}

═══════════════════════════════════════════════════════════════════════════════
二、网站函数标签
═══════════════════════════════════════════════════════════════════════════════

【1. 分类列表函数 - get_categories()】
函数原型:get_categories($cate_id = 0, $top_num = 0, $is_best = false)

参数说明:
- $cate_id:分类ID,默认0表示获取根分类,指定ID获取该分类下的子分类
- $top_num:显示数量,默认0表示显示全部,指定数字限制显示条数
- $is_best:是否只显示推荐分类,true显示推荐,false显示全部

返回字段:
- $cate_id:分类ID
- $cate_name:分类名称
- $cate_mod:分类模块(如webdir)
- $cate_childcount:子分类数量
- $cate_postcount:分类下网站数量
- $cate_link:分类链接地址

使用示例:


    {#foreach from=get_categories(0, 10, false) item=cate#}


  • {#$cate.cate_name#}

    ({#$cate.cate_postcount#})

  • {#/foreach#}




{#foreach from=get_categories(0, 8, true) item=hot#}
{#$hot.cate_name#}
{#/foreach#}


【2. 网站列表函数 - get_websites()】
函数原型:get_websites($cate_id = 0, $top_num = 10, $is_pay = false, $is_best = false, $field = 'ctime', $order = 'desc')

参数说明:
- $cate_id:分类ID,0表示全部分类
- $top_num:显示数量,默认10条
- $is_pay:是否只显示付费网站
- $is_best:是否只显示推荐网站
- $field:排序字段(ctime-收录时间, views-浏览次数, instat-点入次数, outstat-点出次数)
- $order:排序方式(desc-降序, asc-升序)

返回字段:
- $web_id:网站ID
- $web_name:网站名称
- $web_url:网站URL
- $web_furl:格式化的URL
- $web_pic:网站缩略图
- $web_intro:网站简介
- $web_ai_intro:AI生成的简介
- $web_tags:网站标签数组
- $web_ctime:收录时间
- $web_utime:更新时间
- $web_views:浏览次数
- $web_grank:Google PageRank
- $web_brank:百度权重
- $web_srank:搜狗权重
- $web_arank:Alexa排名
- $web_link:网站详情页链接
- $cate_name:所属分类名称

使用示例:


{#foreach from=get_websites(0, 12, false, false, 'ctime', 'desc') item=site#}


{#$site.web_name#}


{#$site.web_name#}


{#$site.web_intro#}



{#$site.cate_name#}
浏览:{#$site.web_views#}
{#$site.web_utime#}



{#/foreach#}




{#foreach from=get_websites(0, 8, false, true, 'views', 'desc') item=rec#}

{#$rec.web_name#}
{#$rec.web_name#}

{#/foreach#}


【3. 友情链接函数 - get_links()】
函数原型:get_links()

返回字段:
- $link_id:链接ID
- $link_name:链接名称
- $link_url:链接地址
- $link_logo:链接LOGO地址

使用示例:


【4. 数据归档函数 - get_archives()】
函数原型:get_archives()

返回格式:二维数组,年份->月份->网站数量

使用示例:

数据归档


{#foreach from=get_archives() key=year item=months#}

{#$year#}年




{#/foreach#}


【5. 广告代码函数 - get_adcode()】
函数原型:get_adcode($ad_id)

参数说明:
- $ad_id:广告位ID(后台广告管理中设置)

使用示例:


{#get_adcode(1)#}







{#get_adcode(3)#}


【6. 自定义标签 - $label】
用法:{#$label.标签名称#}

说明:调用后台自定义标签管理中添加的标签内容

使用示例:


{#$label.google_analytics#}







{#$label.contact_info#}


【7. 站点统计 - $stat】
用法:{#$stat.统计项#}

可用统计项:
- category:分类总数
- website:网站总数(已审核)
- article:文章总数
- apply:待审核网站数
- vip:VIP网站数
- recommend:推荐网站数
- blacklist:黑名单网站数
- rejected:审核不通过网站数
- user:用户总数
- adver:广告总数
- link:友情链接总数
- feedback:反馈总数
- label:自定义标签总数
- page:单页总数

使用示例:


{#$stat.category#}
个分类


{#$stat.website#}
个网站


{#$stat.user#}
位用户





本站共收录 {#$stat.website#} 个网站,分布在 {#$stat.category#} 个分类中


其中推荐网站 {#$stat.recommend#} 个,VIP网站 {#$stat.vip#}


注册用户 {#$stat.user#} 位,待审核网站 {#$stat.apply#}




═══════════════════════════════════════════════════════════════════════════════
三、页面专用标签
═══════════════════════════════════════════════════════════════════════════════

【列表页通用标签】
适用页面:directory.html, update.html, archives.html, search.html

{#$weblist#}          ─── 网站列表数组(包含分页后的网站数据)
{#$showpage#}         ─── 分页导航HTML代码

使用示例:

{#foreach from=$weblist item=item name=list_website#}



{#$item.web_name#}


{#$item.web_intro#}



{#$item.web_url#}
{#$item.web_utime#}




PageRank:
{#$item.web_prank#}/10


AlexaRank:
{#$item.web_arank#}


人气指数:
{#$item.web_views#}


收录时间:
{#$item.web_utime#}



{#foreachelse#}
该目录下暂无内容!

{#/foreach#}





【首页专用标签 - index.html】
首页可以使用所有通用标签和函数标签,无特殊限制。

【分类页专用标签 - directory.html】
{#$category_name#}    ─── 当前分类名称
{#$child_category#}   ─── 当前分类下的子分类数组

子分类字段:
- $cate_id:分类ID
- $cate_name:分类名称
- $cate_postcount:分类下网站数量
- $cate_link:分类链接

使用示例:

{#$category_name#}



当前分类:{#$category_name#}





子分类





【更新页专用标签 - update.html】
{#$days#}             ─── 当前选择的时间周期
{#$timescope#}        ─── 时间范围选择数组

时间范围字段:
- $time_id:时间周期ID
- $time_text:时间周期名称(如:24小时内、3天内、1周内)
- $time_link:时间周期链接

使用示例:

最近更新



    {#foreach from=$timescope item=time key=k#}

    {#if $days == $time.time_id#}
    {#$time.time_text#}
    {#else#}
    {#$time.time_text#}
    {#/if#}

    {#/foreach#}



【搜索页专用标签 - search.html】
{#$search_word#}      ─── 搜索关键词
{#$search_type#}      ─── 搜索类型(website-网站搜索, tags-标签搜索)
{#$total_found#}      ─── 搜索结果总数

使用示例:


搜索结果


关键词:{#$search_word#},找到 {#$total_found#} 个相关网站







【网站详情页专用标签 - website.html】
{#$website#}          ─── 当前网站的详细信息数组

网站详情字段:
- $web_id:网站ID
- $web_name:网站名称
- $web_url:网站URL
- $web_pic:网站缩略图
- $web_intro:网站简介
- $web_ai_intro:AI生成简介
- $web_tags:网站标签数组
- $web_ctime:收录时间
- $web_views:浏览次数
- $web_grank:Google PageRank
- $web_brank:百度权重
- $web_srank:搜狗权重
- $web_arank:Alexa排名
- $cate_name:所属分类

使用示例:





网站简介


{#$website.web_intro#}


{#if $website.web_ai_intro#}

AI智能简介


{#$website.web_ai_intro#}



{#/if#}


{#if $website.web_tags#}

相关标签



{#foreach from=$website.web_tags item=tag#}
{#$tag.tag_name#}
{#/foreach#}


{#/if#}


网站数据




Google PR
{#$website.web_grank#}/10


百度权重
{#$website.web_brank#}


搜狗权重
{#$website.web_srank#}


Alexa排名
{#$website.web_arank#}






═══════════════════════════════════════════════════════════════════════════════
四、Smarty内置标签
═══════════════════════════════════════════════════════════════════════════════

【循环控制】
{#foreach from=数组 item=项目 key=键名 name=循环名#}

{#if $smarty.foreach.循环名.first#}第一项{#/if#}
{#if $smarty.foreach.循环名.last#}最后一项{#/if#}
{#$smarty.foreach.循环名.iteration#}
{#$smarty.foreach.循环名.index#}     
{#foreachelse#}

{#/foreach#}

【条件判断】
{#if 条件#}

{#elseif 其他条件#}

{#else#}

{#/if#}

【变量修饰符】
{#$变量|修饰符#}
{#$变量|修饰符:参数#}

常用修饰符:
- truncate:长度 - 截取字符串
- date_format:格式 - 格式化日期
- escape - HTML转义
- nl2br - 换行转

- strip_tags - 去除HTML标签
- upper - 转大写
- lower - 转小写
- capitalize - 首字母大写

使用示例:
{#$web_intro|truncate:100:"..."|escape#}
{#$web_ctime|date_format:"%Y-%m-%d %H:%M"#}
{#$web_name|upper#}

【包含文件】
{#include file="文件名.html"#}
{#include file="header.html" title="页面标题"#}

【赋值操作】
{#assign var="变量名" value="值"#}
{#assign var="current_time" value=$smarty.now#}

═══════════════════════════════════════════════════════════════════════════════
五、高级应用技巧
═══════════════════════════════════════════════════════════════════════════════

【1. 条件显示内容】

{#foreach from=get_websites(0, 10) item=site#}

{#$site.web_name#}


{#if $site.web_isbest#}推荐{#/if#}
{#if $site.web_ispay#}VIP{#/if#}

{#/foreach#}

【2. 多条件筛选】

{#assign var="tech_sites" value=get_websites(1, 8, false, true)#}
{#if $tech_sites#}

技术推荐


{#foreach from=$tech_sites item=site#}
{#$site.web_name#}
{#/foreach#}

{#/if#}

【3. 数据统计显示】

{#foreach from=get_categories(0, 0, false) item=cate#}
{#if $cate.cate_postcount > 0#}

{#$cate.cate_name#}
{#$cate.cate_postcount#}




{#/if#}
{#/foreach#}

【4. 响应式布局】


{#assign var="site_count" value=12#}
{#* 移动端显示6个,桌面端显示12个 *#}
{#foreach from=get_websites(0, $site_count) item=site name=grid#}

{#if $smarty.foreach.grid.iteration % 3 == 0#}

{#/if#}
{#if $smarty.foreach.grid.iteration % 4 == 0#}

{#/if#}
{#if $smarty.foreach.grid.iteration % 6 == 0#}

{#/if#}
{#/foreach#}


【5. SEO优化】

{#if $category_name#}
{#assign var="page_title" value="`$category_name` - `$site_name`"#}
{#assign var="page_desc" value="`$category_name`分类下的优质网站推荐,包含`$stat.website`个精选网站"#}
{#else#}
{#assign var="page_title" value=$site_title#}
{#assign var="page_desc" value=$site_description#}
{#/if#}

{#$page_title#}



{#if $website#}

{#/if#}

【6. 缓存控制】

{#* 最新网站列表,缓存5分钟 *#}
{#assign var="cache_id" value="latest_sites_`$smarty.now|date_format:'%Y%m%d%H%i'`"#}


{#assign var="hot_cache" value="hot_sites_`$smarty.now|date_format:'%Y%m%d%H'`"#}

【7. 多语言支持】

{#assign var="lang" value=$smarty.get.lang|default:'zh'#}
{#if $lang == 'en'#}
{#assign var="site_title_lang" value=$cfg.site_title_en#}
{#else#}
{#assign var="site_title_lang" value=$cfg.site_title#}
{#/if#}

【8. 错误处理】

{#assign var="latest_sites" value=get_websites(0, 10)#}
{#if $latest_sites && count($latest_sites) > 0#}

{#foreach from=$latest_sites item=site#}

{#/foreach#}

{#else#}

暂无最新网站,请稍后再来查看。



{#/if#}

═══════════════════════════════════════════════════════════════════════════════
六、性能优化建议
═══════════════════════════════════════════════════════════════════════════════

【1. 合理使用缓存】
- 启用Smarty模板缓存:在 source/include/smarty.php 中设置
- 对于数据变化不频繁的页面,设置较长的缓存时间
- 使用 cache_id 区分不同的缓存版本

【2. 减少数据库查询】
- 在一个页面中,尽量减少函数调用次数
- 使用 assign 将函数结果赋值给变量,避免重复调用
- 合理设置函数参数,只获取需要的数据

示例:
{#assign var="hot_sites" value=get_websites(0, 8, false, true)#}
{#assign var="new_sites" value=get_websites(0, 10, false, false, 'ctime')#}

【3. 图片优化】
- 使用适当的图片尺寸
- 为图片添加 alt 属性
- 考虑使用懒加载

【4. 代码优化】
- 避免在循环中进行复杂计算
- 使用条件判断减少不必要的HTML输出
- 合理使用 strip 去除多余空白

═══════════════════════════════════════════════════════════════════════════════
七、常见问题解答
═══════════════════════════════════════════════════════════════════════════════

【Q1:如何修改模板标签分隔符?】
A:编辑 source/include/smarty.php 文件,修改以下两行:
$smarty->left_delimiter = "{#";
$smarty->right_delimiter = "#}";

【Q2:模板缓存如何清理?】
A:删除 data/cache/ 目录下的缓存文件,或在后台系统管理中清理缓存。

【Q3:如何在模板中调用自定义PHP函数?】
A:需要在相应的模块文件中定义函数,然后通过 $smarty->assign() 将结果传递给模板。

【Q4:为什么某些标签不显示内容?】
A:检查以下几点:
1. 标签语法是否正确
2. 数据是否存在
3. 权限设置是否正确
4. 缓存是否需要清理

【Q5:如何实现分页功能?】
A:使用 $weblist 和 $showpage 标签,系统会自动处理分页逻辑。

【Q6:如何自定义404页面?】
A:在模板目录中创建 404.html 文件,使用相应的模板标签。

═══════════════════════════════════════════════════════════════════════════════
八、版本更新说明
═══════════════════════════════════════════════════════════════════════════════

【Version 2.0 更新内容】
1. 新增AI智能简介字段 web_ai_intro
2. 增强网站违规检测功能
3. 优化搜索功能,支持标签搜索
4. 新增多种排序方式
5. 改进缓存机制
6. 增强SEO功能

【兼容性说明】
- 向下兼容旧版本模板
- 新增字段在旧模板中不会报错
- 建议升级模板以使用新功能

═══════════════════════════════════════════════════════════════════════════════
结语
═══════════════════════════════════════════════════════════════════════════════

本文档详细介绍了35DIR系统的所有模板标签和使用方法。在实际开发中,建议:

1. 先熟悉基础标签的使用
2. 根据页面需求选择合适的函数
3. 注意性能优化和缓存策略
4. 保持代码的可读性和维护性
5. 定期更新和备份模板文件

如有疑问,请参考Smarty官方文档或联系技术支持。

文档编写:95DIR开发团队
最后更新:2025年
版权所有:保留所有权利

  • 标签: 95DIR
  • © 版权声明

    推荐站点

    • Retro GamesRetro Games

      在线免费畅玩红白机(FC)、超任(SFC)、世嘉(MD)、Neo Geo、GB、GBA、N64、PS1/PSX和街机等模拟器怀旧复古游戏! 免费享受最佳复古游戏合集,无需下载。 Retro Games - Play Classic Retro Games , Emulator Games Online for Free.

      retrogamesnexus.com
    • 希仁之拥的博客希仁之拥的博客

      独立开发者 & 开源爱好者。喜欢猫猫狗狗、花花草草,热衷于创造酷酷的东西。 —— 希仁之拥 © blog.keepchen.com

      blog.keepchen.com
    • QR Online.ioQR Online.io

      Free online QR code generator supporting URL, text, contact info, WiFi and more. Customize colors, add logos, high-quality output.

      www.qronline.io
    • Temp Mail 365Temp Mail 365

      Temp Mail 365 provides instant temporary email addresses to protect your privacy and avoid spam. No registration required, 5-60 minute validity.

      temp-mail-365.com
    • 优站库优站库

      一个集网站推荐、内容推荐于一体的宝藏之地。我们精心搜罗各类常用网站,构建起全面的网站目录。无论是学习提升所需的在线课程平台,还是休闲娱乐的影视音乐网站,亦或是商务办公的效率工具站点,都能在我们的分类大全中快速找到。同时,我们也是一个充满活力的建站交流社区。站长们在此分享经验、探讨技术,共同提升网站建设水平。作为网址导航,我们为你清晰分类,节省寻找优质网站的时间和精力。在这里,你无需再为找不到合适的网站而烦恼,只需轻轻一点,就能开启精彩的网络之旅。

      www.uzkoo.com