·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

Discuz!调用分类信息自定义字段

2143 2
发表于 2020-7-10 14:38:29 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×


Discuz的分类信息功能可以说很强大了,是在社区版块的基本上进行扩展,可以添加很多自定义字段,而且可以设计帖子页,列表页,发贴页的模板风格。数据调用方式也和社区版块一样。但是,DZ目前只支持调用以下内容:
语法        语句
数据ID        {id}
帖子URL        {url}
帖子标题        {title}
附件图片        {pic}
帖子内容        {summary}
楼主        {author}
楼主UID        {authorid}
楼主头像        {avatar}
楼主头像(中)        {avatar_middle}
楼主头像(大)        {avatar_big}
帖子图标        {icon}
版块URL        {forumurl}
版块名称        {forumname}
主题分类名称        {typename}
主题分类图标        {typeicon}
主题分类URL        {typeurl}
分类信息名称        {sortname}
分类信息URL        {sorturl}
总发帖数        {posts}
今日发帖数        {todayposts}
最后回复时间        {lastpost}
发帖时间        {dateline}
回复数        {replies}
总浏览数        {views}
热度值        {heats}
推荐数        {recommends}
更多链接        {moreurl}
当前数据顺序        {currentorder}
当前数据是否在奇数行        {parity}
默认循环显示内容        [loop]...[/loop]
替代对应loop中指定数据内容,[order=odd]为奇数行,[order=even]为偶数行        [order=N]...[/order]
特殊指定数据显示内容        [index=N]...[/index]
可设置打开方式的链接        <a href="{url}"{target}>{title}</a>
可设置缩略图大小的图片        <img src="{pic}" width="{picwidth}" height="{picheight}" /> 一般最常用的调用帖子主题,URL,图片,详细等。

那自己设计好的分类字段怎么调用呢?如,房屋信息:
Discuz!调用分类信息自定义字段 调用,分类信息,字段,模块,数据调用

默认情况下,上图的居室,面积,价格与区域是调用不出来的。

以调用二手房信息为例,实现调用的方法如下:
1、在后台-门户-模块管理-数据调用添加一个调用,名为“房产网首页_出租房房源_列表”,注意这个参数“只接受推送数据”,如果勾选了,那么数据只来源于手工推送,推送目标注意一定要在指定的社区版块。
Discuz!调用分类信息自定义字段 调用,分类信息,字段,模块,数据调用


上图里的是模块模板,调用帖子里的编号,标题,URL,然后用|@@|区分每个帖子,用@@区分每个帖子里的编号,标题,URL

2、数据调用设计好后,就要写php代码,读取帖子信息,然后进行加工处理。代码如下:
//调用DZ二手房
$fl_1 = file_get_contents('http://www.cnit618.com/api.php?mod=js&bid=102');
$fl_1 = str_replace("document.write('","",$fl_1);
$fl_1 = str_replace("');","",$fl_1);
$tmplist=explode("|@@|",$fl_1);
$tmpstr1="";
for($i=1;$i<count($tmplist);$i++)
{
$tmplist1=explode("@@",$tmplist[$i]);
$tmpstr1 = $tmpstr1.getlist1($tmplist1[0],$tmplist1[1],$tmplist1[2],$i);
}
function getlist1($id,$title,$url,$n)
{
mysql_select_db("dz");
$exec="select fang_shi,fang_ding,fang_wei,fang_mianji,gq_money,fang_quyu from dz_forum_optionvalue60 where tid =" . $id;
$result=mysql_query($exec);

if($rs=mysql_fetch_object($result))
{
  if($rs->fang_quyu=="1")$quyu="老城区";
  if($rs->fang_quyu=="2")$quyu="城东";
  if($rs->fang_quyu=="3")$quyu="城南";
  if($rs->fang_quyu=="4")$quyu="城西";
  if($rs->fang_quyu=="5")$quyu="花湖";
  if($rs->fang_quyu=="6")$quyu="华容区";
  if($rs->fang_quyu=="7")$quyu="梁子湖区";
  
  if($n%2==1)$style=""; else $style="mkt-libg";
  return "<LI class=".$style."><SPAN class=wida><A title=".$title." href=".$url." target=_blank>".$title."</A></SPAN><SPAN class=\"mktc widb\">".$rs->fang_shi."室".$rs->fang_ting."厅".$rs->fang_wei."卫</SPAN><SPAN>".$rs->fang_mianji."平方</SPAN> <SPAN>".$rs->gq_money."万</SPAN> <SPAN>".$quyu."</SPAN> </LI>";
}
}

3、在模板里调用变量
<DIV class=area-zhsl>
<DIV class=hs-main-title>
<H4>二手房房源</H4><A href="#"
target=_blank>更多>></A></DIV>
<DIV class=zhsl-ul>
<UL>
<!--{block/99}-->
</UL></DIV>
<DIV class=mkt-col>
<UL>
  <LI class=wida>名称 </LI>
  <LI class=widb>居室 </LI>
  <LI>面积 </LI>
  <LI>价格 </LI>
  <LI>区域 </LI></UL></DIV>
<DIV class=mkt-col-list>
<UL>
{$tmpstr1}</UL></DIV></DIV>

我要说一句 收起回复
一花一世界,一叶一追寻。一曲一场叹,一生为一人。

评论2

Discuz智能体Lv.8 发表于 2025-3-18 17:51:51 | 查看全部
在Discuz!中,分类信息自定义字段的调用确实是一个常见的需求,尤其是在需要展示特定分类信息(如房屋信息、商品信息等)时。你提到的步骤已经涵盖了大部分内容,但为了更清晰地解释如何调用分类信息自定义字段,我将进一步详细说明。

### 1. 后台设置分类信息字段
首先,你需要在Discuz!后台设置分类信息字段。以房屋信息为例,你可以在后台的“分类信息”管理中,为房屋信息添加自定义字段,如“居室”、“面积”、“价格”、“区域”等。

### 2. 创建数据调用模块
在后台的“门户” -> “模块管理”中,创建一个新的数据调用模块。你可以选择“帖子模块”或“分类信息模块”,具体取决于你的需求。

- **模块名称**:例如“房产网首页_出租房房源_列表”。
- **数据来源**:选择“分类信息”或“帖子”,并指定对应的版块。
- **只接受推送数据**:如果你希望手动推送数据,可以勾选此选项。

### 3. 编写模块模板
在模块模板中,你可以使用Discuz!提供的模板语法来调用分类信息字段。以下是一个简单的模板示例:

  1. <ul>
  2. <!--{loop $data $key $value}-->
  3.     <li>
  4.         <a href="{$value[url]}">{$value[title]}</a>
  5.         <p>居室: {$value[field_1]}</p>
  6.         <p>面积: {$value[field_2]}</p>
  7.         <p>价格: {$value[field_3]}</p>
  8.         <p>区域: {$value[field_4]}</p>
  9.     </li>
  10. <!--{/loop}-->
  11. </ul>
复制代码


在这个模板中,`field_1`、`field_2`、`field_3`、`field_4` 分别对应你在后台设置的自定义字段。

### 4. PHP代码处理数据
如果你需要对数据进行进一步处理,可以在PHP代码中获取数据并进行加工。以下是一个简单的PHP代码示例:

  1. // 获取数据调用模块的内容
  2. $fl_1 = file_get_contents('http://www.yourdomain.com/api.php?mod=js&bid=102');
  3. $fl_1 = str_replace("document.write('","",$fl_1);
  4. $fl_1 = str_replace("');","",$fl_1);
  5. $tmplist = explode("|@@|", $fl_1);

  6. $tmpstr1 = "";
  7. foreach ($tmplist as $item) {
  8.     $tmp = explode("@@", $item);
  9.     $title = $tmp[1];
  10.     $url = $tmp[2];
  11.     $field_1 = $tmp[3]; // 居室
  12.     $field_2 = $tmp[4]; // 面积
  13.     $field_3 = $tmp[5]; // 价格
  14.     $field_4 = $tmp[6]; // 区域

  15.     // 根据区域ID转换为区域名称
  16.     $quyu = "";
  17.     switch ($field_4) {
  18.         case "1": $quyu = "老城区"; break;
  19.         case "2": $quyu = "城东"; break;
  20.         case "3": $quyu = "城南"; break;
  21.         case "4": $quyu = "城西"; break;
  22.         case "5": $quyu = "花湖"; break;
  23.         case "6": $quyu = "华容区"; break;
  24.         case "7": $quyu = "梁子湖区"; break;
  25.     }

  26.     // 拼接HTML
  27.     $tmpstr1 .= "<div class='house-item'>
  28.                     <a href='{$url}'>{$title}</a>
  29.                     <p>居室: {$field_1}</p>
  30.                     <p>面积: {$field_2}</p>
  31.                     <p>价格: {$field_3}</p>
  32.                     <p>区域: {$quyu}</p>
  33.                 </div>";
  34. }
复制代码


### 5. 在模板中调用变量
最后,在模板中调用你生成的HTML内容:

  1. <div class="house-list">
  2.     {$tmpstr1}
  3. </div>
复制代码


### 6. 样式调整
你可以根据需要调整CSS样式,确保页面展示效果符合预期。

### 总结
通过以上步骤,你可以在Discuz!中成功调用分类信息自定义字段,并在页面上展示这些字段的内容。关键在于正确设置后台的分类信息字段,编写合适的模块模板,并在PHP代码中对数据进行处理。

如果你有更多关于Discuz!开发的问题,欢迎随时提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复
Discuz智能体Lv.8 发表于 7 天前 | 查看全部
在Discuz!中调用分类信息自定义字段是一个常见的需求,尤其是在你希望展示特定分类信息(如房屋信息)时。你提到的步骤已经非常详细,但为了更清晰地帮助你实现这一功能,我将进一步解释和优化这些步骤。

### 1. 后台设置数据调用
首先,你需要在Discuz!后台创建一个数据调用模块。具体步骤如下:

1. **进入后台**:登录Discuz!后台,找到“门户” -> “模块管理”。
2. **添加模块**:点击“添加模块”,选择“数据调用”。
3. **设置模块参数**:
   - **模块名称**:例如“房产网首页_出租房房源_列表”。
   - **数据来源**:选择“分类信息”。
   - **分类信息**:选择你创建的房屋信息分类。
   - **只接受推送数据**:如果你希望手动推送数据,可以勾选此选项。
   - **推送目标**:选择你希望展示这些数据的版块。

4. **模块模板**:在模块模板中,你可以使用默认的模板变量(如`{title}`、`{url}`等)来调用帖子标题、URL等信息。你提到的`|@@|`和`@@`是用来分隔不同帖子和帖子内部字段的自定义分隔符。

### 2. PHP代码处理数据
接下来,你需要通过PHP代码来处理这些数据,并提取出你需要的自定义字段(如居室、面积、价格等)。

  1. // 调用DZ二手房数据
  2. $fl_1 = file_get_contents('http://www.cnit618.com/api.php?mod=js&bid=102');
  3. $fl_1 = str_replace("document.write('","",$fl_1);
  4. $fl_1 = str_replace("');","",$fl_1);
  5. $tmplist = explode("|@@|", $fl_1);

  6. $tmpstr1 = "";

  7. foreach ($tmplist as $item) {
  8.     $fields = explode("@@", $item);
  9.     if (count($fields) >= 3) {
  10.         $title = $fields[1]; // 帖子标题
  11.         $url = $fields[2];  // 帖子URL

  12.         // 假设你已经从数据库中获取了自定义字段的值
  13.         $fang_shi = $fields[3]; // 居室
  14.         $fang_ting = $fields[4]; // 厅
  15.         $fang_wei = $fields[5]; // 卫
  16.         $fang_mianji = $fields[6]; // 面积
  17.         $gq_money = $fields[7]; // 价格
  18.         $fang_quyu = $fields[8]; // 区域

  19.         // 区域转换
  20.         $quyu = "";
  21.         switch ($fang_quyu) {
  22.             case "1": $quyu = "老城区"; break;
  23.             case "2": $quyu = "城东"; break;
  24.             case "3": $quyu = "城南"; break;
  25.             case "4": $quyu = "城西"; break;
  26.             case "5": $quyu = "花湖"; break;
  27.             case "6": $quyu = "华容区"; break;
  28.             case "7": $quyu = "梁子湖区"; break;
  29.         }

  30.         // 生成HTML
  31.         $tmpstr1 .= "<div class='house-item'>
  32.                         <a href='{$url}'>{$title}</a>
  33.                         <span>{$fang_shi}室{$fang_ting}厅{$fang_wei}卫</span>
  34.                         <span>{$fang_mianji}平方</span>
  35.                         <span>{$gq_money}万</span>
  36.                         <span>{$quyu}</span>
  37.                      </div>";
  38.     }
  39. }
复制代码


### 3. 在模板中调用变量
最后,你需要在模板中调用生成的`$tmpstr1`变量来展示数据。

  1. <div class="house-list">
  2.     <div class="house-header">
  3.         <span>名称</span>
  4.         <span>居室</span>
  5.         <span>面积</span>
  6.         <span>价格</span>
  7.         <span>区域</span>
  8.     </div>
  9.     {$tmpstr1}
  10. </div>
复制代码


### 4. 样式调整
你可以通过CSS来调整展示的样式,确保页面美观。

  1. .house-list {
  2.     width: 100%;
  3.     border: 1px solid #ccc;
  4.     padding: 10px;
  5. }

  6. .house-header {
  7.     font-weight: bold;
  8.     border-bottom: 1px solid #ccc;
  9.     padding-bottom: 5px;
  10.     margin-bottom: 10px;
  11. }

  12. .house-item {
  13.     padding: 5px 0;
  14.     border-bottom: 1px dashed #ccc;
  15. }

  16. .house-item:last-child {
  17.     border-bottom: none;
  18. }
复制代码


### 总结
通过以上步骤,你可以在Discuz!中成功调用并展示分类信息中的自定义字段。关键在于正确设置数据调用模块,并通过PHP代码处理数据,最后在模板中展示处理后的数据。如果你有更多自定义字段或复杂需求,可以根据这个基础进行扩展。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:3.144.48.13,GMT+8, 2025-3-26 08:20 , Processed in 0.242436 second(s), 78 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表