织梦会员调用企业信息

99ANYc3cd6
预计阅读时长 23 分钟
位置: 首页 织梦建站 正文
  1. 获取企业会员信息:通过织梦的标签获取当前登录企业会员的资料。
  2. 调用企业发布的文章/产品信息:在获取到企业会员信息的基础上,进一步调用该企业发布的特定内容(如文章、产品等)。

下面我将分步详细讲解,并提供最常用和最实用的代码示例。

织梦会员调用企业信息
(图片来源网络,侵删)

第一步:理解核心标签

织梦提供了强大的标签系统来调用会员相关信息,核心标签是 {dede:arclist}{dede:sql},但针对会员信息,{dede:global}{dede:field} 结合会员登录判断会更常用。

  • {dede:global name='cfg_member'}...{/dede:global}: 用于判断会员是否登录,并获取一些全局会员变量。
  • {dede:field}: 用于在会员中心页面(如 company/index.php)中直接调用当前会员的信息字段。
  • {dede:sql}: 强大的SQL查询标签,可以灵活地从数据库中提取任何你想要的数据,包括企业信息。

第二步:调用当前登录企业会员的基本信息

这是最基础也是最常见的需求,通常在企业会员中心首页 (/member/company/index.php) 或其他需要展示企业资料的页面使用。

假设你想在页面上显示企业的“公司名称”、“公司简介”、“联系电话”和“公司Logo”。

代码示例:

织梦会员调用企业信息
(图片来源网络,侵删)
{dede:global name='cfg_member' runphp='yes'}
    if(@me != ''){
        // 会员已登录,获取当前会员的ID
        $mid = @me;
        // 查询会员信息表,获取企业资料
        $row = $GLOBALS['dsql']->GetOne("SELECT * FROM `dede_member_company` WHERE `mid` = $mid");
        // 如果查询到企业信息,则输出
        if(is_array($row)){
            @me = "
                <h2>" . $row['companyname'] . "</h2>
                <p><strong>公司简介:</strong>" . $row['introduce'] . "</p>
                <p><strong>联系电话:</strong>" . $row['tel'] . "</p>
                <img src='" . $row['logo'] . "' alt='公司Logo' />
            ";
        } else {
            @me = "<p>您还未完善企业信息!</p>";
        }
    } else {
        // 会员未登录
        @me = "<p>请先登录!</p>";
    }
{/dede:global}
{dede:global name='cfg_member' /}

代码解释:

  1. {dede:global name='cfg_member' runphp='yes'}: runphp='yes' 允许我们在标签内执行PHP代码。cfg_member 会返回当前登录会员的 mid (会员ID)。
  2. $mid = @me;: 获取会员ID。
  3. $GLOBALS['dsql']->GetOne(...): 使用织梦的全局数据库对象 dsql 执行一条SQL查询,从 dede_member_company 表中查找 mid 对应的记录。
  4. if(is_array($row)): 判断查询结果是否存在。
  5. @me = "...": 将拼接好的HTML字符串赋值给 @me,标签 {dede:global} 最终会输出这个值。
  6. dede_member_company 表字段:这个表是存储企业会员额外信息的核心表,常见字段包括:
    • companyname: 公司名称
    • introduce: 公司简介
    • tel: 联系电话
    • linkman: 联系人
    • address: 公司地址
    • logo: 公司Logo地址
    • business: 主营业务
    • 等等。

第三步:调用当前企业发布的文章或产品

在展示企业信息的同时,我们通常还需要展示该企业发布的动态、新闻或产品,这时,我们需要将企业会员ID作为筛选条件。

场景1:在会员中心调用该企业发布的文章

假设文章模型ID为1,并且文章表中有一个 mid 字段(默认就有,关联会员ID)。

使用 {dede:arclist} 标签 (推荐)

{dede:arclist} 是调用文章列表最常用的标签,它支持按 mid 筛选。

<h3>我发布的文章</h3>
<ul>
    {dede:arclist row='10' titlelen='30' orderby='pubdate' mid='~cfg_member~'}
        <li>
            <a href="[field:arcurl/]">[field:title/]</a>
            <span>[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
        </li>
    {/dede:arclist}
</ul>

代码解释:

  • mid='~cfg_member~': 这是关键!~cfg_member~ 是织梦的一个特殊用法,它会自动替换为当前登录会员的 mid,这样就能确保只调用当前企业自己的文章。
  • row='10': 显示10条记录,len='30'`: 标题长度限制为30个字符。
  • orderby='pubdate': 按发布时间排序。
  • [field:arcurl/]: 文章链接。
  • [field:title/]: 文章标题。
  • [field:pubdate/]: 发布时间,并用 function 进行格式化。

使用 {dede:sql} 标签 (更灵活)

{dede:arclist} 无法满足复杂需求(比如需要关联其他表),可以使用 {dede:sql}

<h3>我发布的文章 (SQL调用)</h3>
<ul>
    {dede:sql sql="SELECT a.id, a.title, a.pubdate FROM dede_archives a WHERE a.mid=~cfg_member~ AND a.arctypeid=1 ORDER BY a.pubdate DESC LIMIT 10"}
        <li>
            <a href='/plus/view.php?aid=[id]'>[title]</a>
            <span>[pubdate function="MyDate('Y-m-d', @me)"/]</span>
        </li>
    {/dede:sql}
</ul>

代码解释:

  • sql="...": 直接编写SQL语句。
  • a.mid=~cfg_member~: 同样,~cfg_member~ 会被替换为当前会员ID。
  • a.arctypeid=1: 可选,指定调用某个栏目ID下的文章。
  • [id][title]: 在 {dede:sql} 中,直接使用SQL查询出的字段名作为标签。

第四步:在网站前台(非会员中心)展示某个企业信息

有时,我们希望在网站的某个页面(如“优秀企业展示”)展示特定企业的信息,这时,我们需要通过某种方式(如URL参数)来指定要查看的企业。

步骤:

  1. 创建模板文件company_show.htm
  2. 创建页面:在后台“频道模型” -> “内容管理”中,创建一个“企业展示”页面,关联 company_show.htm 模板,并设置其文件名为 company.php
  3. 修改模板:在 company_show.htm 中,通过URL参数获取企业ID,然后调用信息。

company_show.htm 模板代码:

{dede:php}
    // 获取URL中的mid参数,company.php?mid=10
    $mid = isset($_GET['mid']) ? (int)$_GET['mid'] : 0;
    if($mid > 0){
        // 查询企业信息
        $row = $GLOBALS['dsql']->GetOne("SELECT * FROM `dede_member_company` WHERE `mid` = $mid");
        // 查询该企业发布的文章列表
        $arcList = $GLOBALS['dsql']->GetOne("SELECT * FROM `dede_archives` WHERE `mid` = $mid ORDER BY `pubdate` DESC");
        // 将查询到的数据赋值给环境变量,以便在模板中使用
        $GLOBALS['fields'] = $row;
    } else {
        $GLOBALS['fields'] = array('companyname' => '未知企业', 'introduce' => '未找到该企业信息。');
    }
{/dede:php}
<h1>企业名称:{dede:field.name/}</h1>
<p><strong>公司简介:</strong>{dede:field.introduce/}</p>
<p><strong>联系电话:</strong>{dede:field.tel/}</p>
<img src="{dede:field.logo/}" alt="{dede:field.name/}" style="max-width: 200px;">
<hr>
<h2>该企业发布的最新文章</h2>
<ul>
    {dede:arclist row='5' mid='~fields.mid~' titlelen='30'}
        <li>
            <a href="[field:arcurl/]">[field:title/]</a>
        </li>
    {/dede:arclist}
</ul>

代码解释:

  1. {dede:php}...{/dede:php}: 在模板中直接执行PHP代码。
  2. $mid = isset($_GET['mid']) ? (int)$_GET['mid'] : 0;: 安全地从URL获取 mid 参数。
  3. $GLOBALS['fields'] = $row;: 将查询到的企业信息存入一个全局变量 fields 中。
  4. {dede:field.name/}: 在模板中调用 fields 数组里的值,注意,这里不需要写 fields.,织梦会自动在全局变量中查找。
  5. {dede:arclist mid='~fields.mid~'}: 在调用文章列表时,我们使用 ~fields.mid~ 来获取刚才PHP查询到的企业ID,而不是当前登录会员的ID。

总结与注意事项

需求场景 核心标签/方法 关键点
在会员中心调用当前企业信息 {dede:global} + runphp='yes' 或直接在PHP页面用 $dsql 查询 dede_member_company 表,条件为 mid = 当前会员ID
在会员中心调用当前企业发布的文章 {dede:arclist} 使用 mid='~cfg_member~' 参数
在前台展示指定企业信息 {dede:php} + {dede:field} 通过URL传递 mid,在PHP中查询并赋值给模板变量
复杂查询(如关联多表) {dede:sql} 编写自定义SQL语句,注意数据表前缀(默认为 dede_

重要注意事项:

  1. 数据表前缀:如果你的数据库表前缀不是 dede_,请将所有代码中的 dede_ 替换为你自己的前缀。
  2. 字段名:请确保你的 dede_member_company 表中包含你所使用的字段名,否则会报错。
  3. 安全:在处理URL参数时,始终进行类型转换(如 (int)$_GET['mid'])或过滤,防止SQL注入。
  4. 权限:确保调用企业信息的页面逻辑正确,比如企业A不能看到企业B的未公开信息。

希望这份详细的指南能帮助你成功地在织梦CMS中调用企业信息!

-- 展开阅读全文 --
头像
C语言中double类型的范围具体是多少?
« 上一篇 03-13
C语言中switch语句究竟该怎么用?
下一篇 » 03-13

相关文章

取消
微信二维码
支付宝二维码

目录[+]