使用织梦全局变量(最推荐、最标准)
这是织梦官方推荐的方式,利用了DedeCMS内置的全局变量 $cfg_ml,ml 是 memberlogin 的缩写。

(图片来源网络,侵删)
适用场景:在所有模板文件(.htm)中均可使用。
代码示例:
{if $cfg_ml->IsLogin()}
欢迎您,<strong>{$cfg_ml->M_UserName}</strong>!
<a href="{dede:global.cfg_memberurl/}/index.php">会员中心</a>
<a href="{dede:global.cfg_memberurl/}/logout.php">退出登录</a>
{else}
您尚未登录,<a href="{dede:global.cfg_memberurl/}/index.php">请登录</a> 或 <a href="{dede:global.cfg_memberurl/}/regnew.php">免费注册</a>
{/if}
代码详解:
-
{if $cfg_ml->IsLogin()}
(图片来源网络,侵删)- 这是一个判断条件,用于检查当前用户是否已登录。
$cfg_ml是织梦的会员登录对象。IsLogin()是该对象的一个方法,返回true(已登录)或false(未登录)。- 使用这个判断可以确保只有在用户登录后才会显示会员名和相关的链接,避免未登录用户看到错误信息。
-
{$cfg_ml->M_UserName}- 如果用户已登录,
$cfg_ml->M_UserName就会获取到当前登录会员的用户名。 - 你可以像普通变量一样在模板中直接使用它。
- 如果用户已登录,
-
{dede:global.cfg_memberurl/}- 这是一个全局标签,用于获取网站后台设置的“会员中心”目录地址,使用它比硬编码
/member/更安全,因为如果你的会员目录改了,模板代码无需修改。
- 这是一个全局标签,用于获取网站后台设置的“会员中心”目录地址,使用它比硬编码
在PHP文件中调用(适用于二次开发)
如果你是在一个PHP文件(index.php)中进行二次开发,而不是在模板文件中,你需要通过PHP代码来获取会员信息。
适用场景:在PHP文件中处理逻辑,然后传递给模板。

(图片来源网络,侵删)
代码示例:
<?php
require_once (dirname(__FILE__) . "/include/common.inc.php"); // 引入核心文件
require_once DEDEINC."/memberlogin.class.php"; // 引入会员登录类
$ml = new MemberLogin(); // 实例化会员登录类
if($ml->IsLogin()) {
// 已登录,获取用户名
$username = $ml->M_UserName;
// 可以将用户名赋值给一个变量,供模板使用
$username = '欢迎您,'.$username.'!';
// ... 其他逻辑 ...
} else {
// 未登录
$username = '您尚未登录,请先登录。';
}
// 将变量传递给模板,假设使用的是旧版的模板引擎
$dsql->SetVar('username', $username);
require_once(dirname(__FILE__) . "/templets/default/index.htm"); // 加载模板
?>
在对应的模板文件 index.htm 中,你可以直接使用:
{$username}
使用自定义函数(适用于特定场景)
如果你想在模板中通过一个更简洁的标签来调用,可以自定义一个函数。
适用场景:希望创建一个类似 {dede:arclist} 这样的自定义标签来调用会员名。
操作步骤:
-
创建自定义函数文件: 在
/include/extend.func.php文件中(如果这个文件不存在,你可以自己创建一个)添加以下PHP代码:/** * 获取当前登录会员的用户名 * @return string 会员名,如果未登录则返回空字符串 */ function GetMemberName() { global $cfg_ml; if ($cfg_ml && $cfg_ml->IsLogin()) { return $cfg_ml->M_UserName; } return ''; } -
在模板中使用: 在你的模板文件(
.htm)中,这样调用:{if GetMemberName() != ''} 欢迎,<strong>{GetMemberName()}</strong>! {else} 您尚未登录。 {/if}或者更简洁地:
当前登录会员:{GetMemberName()}
常见问题与注意事项
-
为什么我的代码不生效?
- 最常见的原因:缓存问题,织梦的模板默认有缓存,修改模板后,请务必登录后台点击 “生成” -> “更新主页HTML” 或者直接清空一下缓存,然后再刷新页面。
- 检查标签:确保代码拼写正确,特别是
$cfg_ml->M_UserName的大小写和下划线。 - 检查登录状态:确保你确实是以会员身份登录的,而不是管理员,可以尝试退出再登录一次。
-
如何获取会员的其他信息?
$cfg_ml对象里存储了会员的很多信息,M_ID:会员IDM_UniName:会员用户名(与M_UserName相同)M_MbType:会员类型M_Spacesta:空间状态- 你可以通过打印这个对象来查看所有可用属性(在PHP中用
print_r($cfg_ml);)。
| 方法 | 优点 | 缺点 | 推荐度 |
|---|---|---|---|
| 全局变量 | 官方标准、最简单、最直接、无需额外配置 | 无明显缺点 | ★★★★★ |
| PHP调用 | 灵活,适用于复杂逻辑 | 需要修改PHP文件,不适合普通模板编辑 | ★★★☆☆ |
| 自定义函数 | 标签化,可复用,使模板更整洁 | 需要额外创建函数文件 | ★★★★☆ |
对于绝大多数用户来说,直接使用方法一 就完全足够了,也是最稳定、最不容易出错的方式。
