DEDECMS:启用随机模板时,特定栏目独立设置模板
需积分: 3 129 浏览量
更新于2024-08-04
收藏 2KB TXT 举报
DEDECMS是一个流行的开源内容管理系统,它允许用户根据需要调整模板显示方式。当启用随机模板功能时,用户可能会遇到一种情况:希望某些特定的栏目(如文章类型ID为1,2,3,5,12,13,14,15的文章)不参与随机模板选择,而是使用各自独立的预设模板。
首先,理解DEDECMS中的随机模板机制是关键。随机模板功能通过`dede/article_template_rand.php`脚本实现,该脚本使用了PHP的`mt_rand()`函数来随机选择一个配置好的模板数组`$cfg_tamplate_arr`中的模板。原始代码遍历整个数组并更新所有文章的模板字段,但通过修改循环条件,可以限定只有特定类型的ID才会应用随机模板:
```php
for($i=0;$i<10;$i++)
{
$temp=$cfg_tamplate_arr[mt_rand(0,$totalTmp)];
// 原始版本
// $dsql->ExecuteNoneQuery("Update`#@__addonarticle`settemplet='$temp'whereRIGHT(aid,1)='$i'");
// 修改后的版本,仅针对指定类型ID
$dsql->ExecuteNoneQuery("Update`#@__addonarticle`settemplet='$temp'wheretypeidin(1,2,3,5,12,13,14,15)andRIGHT(aid,1)='$i'");
}
```
在前端的模板选择部分,`/dede/templates/article_add.htm`中的`<select>`标签用于展示可选的模板列表。在原始代码中,`$rndsel`变量随机选择一个模板ID,并将其关联到相应的模板名称。当启用“指定栏目不参与随机”的功能时,需要在模板选择部分添加条件判断,例如:
```php
<select name='templet' id='templet' style='width:200px' size='1'>
<?php
$rndsel=mt_rand(1,count($cfg_tamplate_arr))-1;
// 原始版本,无条件选择
// foreach($cfg_tamplate_arr as $k => $v)
// 更新后的版本,针对非指定类型ID(如ID 4, 16, 19)
if($cid==4||$cid==16||$cid==19){
$tplt = $dsql->GetOne("Select * From `#@__arctype` where id='$cid'");
// 根据cid值动态获取模板,或者直接跳过随机选择
if ($tplt['templet'] !== '') {
echo "<option value='{$tplt['templet']}' selected>{$tplt['templet']}</option>";
} else {
// 如果是固定模板,则直接显示
$selectedTemplate = ...; // 获取该类型的具体模板名
echo "<option value='{$selectedTemplate}' selected>{$selectedTemplate}</option>";
}
} else {
// 对于其他参与随机的ID,执行原有随机选择逻辑
...
}
?>
</select>
```
这样,当用户选择“启用随机模板”且访问带有指定ID的文章时,这些文章将不会被随机分配模板,而是使用预先设置的独立模板。这个调整有助于保持网站布局的一致性和用户体验,同时仍保留了模板灵活性。
2019-07-09 上传
2023-08-29 上传
2023-09-09 上传
2023-09-17 上传
2023-06-07 上传
2023-05-26 上传
2023-12-09 上传
2023-04-12 上传
2024-06-29 上传
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
yyygy1019
- 粉丝: 0
- 资源: 2
最新资源
- 构建Cadence PSpice仿真模型库教程
- VMware 10.0安装指南:步骤详解与网络、文件共享解决方案
- 中国互联网20周年必读:影响行业的100本经典书籍
- SQL Server 2000 Analysis Services的经典MDX查询示例
- VC6.0 MFC操作Excel教程:亲测Win7下的应用与保存技巧
- 使用Python NetworkX处理网络图
- 科技驱动:计算机控制技术的革新与应用
- MF-1型机器人硬件与robobasic编程详解
- ADC性能指标解析:超越位数、SNR和谐波
- 通用示波器改造为逻辑分析仪:0-1字符显示与电路设计
- C++实现TCP控制台客户端
- SOA架构下ESB在卷烟厂的信息整合与决策支持
- 三维人脸识别:技术进展与应用解析
- 单张人脸图像的眼镜边框自动去除方法
- C语言绘制图形:余弦曲线与正弦函数示例
- Matlab 文件操作入门:fopen、fclose、fprintf、fscanf 等函数使用详解