getoptionlist 是什么?
getoptionlist 是织梦DedeCMS的一个核心PHP函数,它的主要作用是从系统的配置表中读取预定义的选项,并将其格式化为一个可供前端(如下拉菜单、单选框)使用的字符串。

(图片来源网络,侵删)
核心特点:
- 数据源:数据通常存储在
dede_sysconfig数据表中(表前缀可能不同,如#@_sysconfig)。 - 存储格式:在数据库中,这些选项通常以
选项1=值1,选项2=值2,选项3=值3这样的字符串形式存储在value字段中。 - 输出格式:函数会解析这个字符串,并生成一个标准的HTML
<option>标签字符串,可以直接嵌入到<select>标签中使用。
函数语法
function getoptionlist($egroup, $select = '', $optionstr = '')
参数详解:
-
$egroup(string, 必需):- 作用:指定要获取的选项组名称,这是在数据库中
egroup字段的值,用于区分不同的选项集合。 - 示例:
'arcatt'(文章属性),'adminchannel'(管理栏目权限),'mediatype'(媒体类型) 等。
- 作用:指定要获取的选项组名称,这是在数据库中
-
$select(string, 可选):- 作用:指定哪个选项项应该被默认选中,通常传入一个值,如果某个选项的值与
$select相等,那么该选项就会被加上selected="selected"属性。 - 示例:
'h'(头条),'c'(推荐)。
- 作用:指定哪个选项项应该被默认选中,通常传入一个值,如果某个选项的值与
-
$optionstr(string, 可选):- 作用:在生成的
<option>标签中添加额外的HTML属性,这个属性会被添加到每一个生成的<option>标签里。 - 示例:
'class="my-option"',这样每个选项都会有class="my-option"属性。
- 作用:在生成的
如何使用
在模板文件中使用
这是最常见的使用场景,通常用于后台的内容编辑表单中。
示例1:获取文章属性列表
在文章编辑模板(如 article_edit.htm)中,你可能需要一个下拉菜单来选择文章的属性(头条、推荐、跳转等)。
<select name="flag" id="flag">
<option value="">选择属性</option>
{dede:getoptionlist name='arcatt'}
</select>
代码解析:
name='arcatt':这里的name属性对应的就是getoptionlist函数的第一个参数$egroup,我们告诉织梦去获取egroup为arcatt的选项列表。- 织梦会自动解析数据库中
egroup='arcatt'的记录,并将其渲染成类似下面的HTML:<option value='h'>头条</option> <option value='c'>推荐</option> <option value='p'>图片</option> <option value='f'>幻灯</option> <option value='s'>滚动</option> <option value='j'>跳转</option> <option value='a'>特荐</option>
示例2:获取文章属性并设置默认选中
假设你想让“推荐”(值为 c)默认被选中。
<select name="flag" id="flag">
{dede:getoptionlist name='arcatt' select='c'}
</select>
渲染后的HTML将会是:
<select name="flag" id="flag">
<option value='h'>头条</option>
<option value='c' selected="selected">推荐</option>
<option value='p'>图片</option>
...
</select>
示例3:获取栏目类型并添加自定义CSS类
假设你给每个选项都添加一个CSS类,方便后续用JavaScript操作。
<select name="channeltype" id="channeltype">
{dede:getoptionlist name='channeltype' optionstr='class="channel-option"'}
</select>
渲染后的HTML将会是:
<select name="channeltype" id="channeltype">
<option value='1' class="channel-option">栏目</option>
<option value='2' class="channel-option">专题</option>
...
</select>
在PHP文件(标签源码)中使用
如果你想在自定义的PHP文件或标签中获取这个列表,你可以直接调用这个函数。
<?php
// 引入织梦核心文件
// require_once(dirname(__FILE__)."/../include/common.inc.php");
// 获取文章属性列表
$arcatt_list = getoptionlist('arcatt');
// 输出结果(通常用于生成下拉菜单)
echo "<select name='my_flag'>";
echo "<option value=''>请选择</option>";
echo $arcatt_list;
echo "</select>";
// 获取并设置默认值
$admin_channel_list = getoptionlist('adminchannel', '1'); // 默认选中值为 '1' 的选项
echo "<select name='my_channel'>".$admin_channel_list."</select>";
?>
常见 egroup 值列表
为了方便你使用,这里列出了一些在织梦系统中常见的 $egroup 值及其含义:
egroup 值 |
描述 | 常见选项 |
|---|---|---|
arcatt |
文章属性 | 头条, 推荐, 图片, 幻灯, 滚动, 跳转, 特荐 |
adminchannel |
管理栏目权限 | 栏目管理, 专题管理, 模板管理, 系统设置, 文档管理 |
mediatype |
媒体类型 | 图片, FLASH, 视频音频, 附件 |
moneyrank |
付费阅读级别 | 免费阅读, VIP会员1, VIP会员2 |
rank |
会员级别 | 普通会员, 高级会员, VIP会员 |
specnote |
专项专题 | 专题, 专题列表 |
commendrank |
推荐位 | 首页推荐, 频道推荐, 本地推荐 |
diyitem |
自定义字段类型 | 单行文本, 多行文本, 下拉框, 单选按钮, 复选框, 日期时间 |
addfields |
自定义字段列表 | (动态生成,根据模型不同而不同) |
如何自定义 getoptionlist?
如果你想创建自己的选项列表(为某个模型添加一个自定义的“来源”下拉菜单),可以按照以下步骤操作:
- 登录后台 -> 系统 -> 系统基本参数 -> 添加新变量。
- 填写变量信息:
- 变量名称:
my_source(只能使用英文、数字和下划线) - 变量类型:
选择框 - 所属组:
自定义(或者选择一个现有组) - 变量说明:
文章来源 - 参数值:
本站=local, 其他网站=other, 转载=reprint(这是关键,格式为显示值=实际值,用英文逗号分隔)
- 变量名称:
- 保存变量。
- 在模板中使用:
现在你就可以在你的模板中使用
{dede:getoptionlist name='my_source'}来调用这个自定义的来源列表了。
getoptionlist 是织梦CMS一个非常实用且灵活的函数,它极大地简化了开发中处理固定选项列表的工作,理解它的三个参数 (egroup, select, optionstr) 以及常见 egroup 的含义,就能在模板和PHP开发中游刃有余地使用它,无论是系统自带的选项,还是你自定义的选项,它都能完美处理。
