DEDECMS:启用随机模板时,特定栏目独立设置模板
需积分: 3 56 浏览量
更新于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的文章时,这些文章将不会被随机分配模板,而是使用预先设置的独立模板。这个调整有助于保持网站布局的一致性和用户体验,同时仍保留了模板灵活性。
2023-05-26 上传
2022-11-02 上传
2023-07-24 上传
2022-08-03 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
yyygy1019
- 粉丝: 0
- 资源: 2