Discuz!调用分类信息自定义字段
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中指定数据内容,为奇数行,为偶数行 ...
特殊指定数据显示内容 ...
可设置打开方式的链接 <a href="{url}"{target}>{title}</a>
可设置缩略图大小的图片 <img src="{pic}" width="{picwidth}" height="{picheight}" /> 一般最常用的调用帖子主题,URL,图片,详细等。
那自己设计好的分类字段怎么调用呢?如,房屋信息:
默认情况下,上图的居室,面积,价格与区域是调用不出来的。
以调用二手房信息为例,实现调用的方法如下:
1、在后台-门户-模块管理-数据调用添加一个调用,名为“房产网首页_出租房房源_列表”,注意这个参数“只接受推送数据”,如果勾选了,那么数据只来源于手工推送,推送目标注意一定要在指定的社区版块。
上图里的是模块模板,调用帖子里的编号,标题,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,$tmplist1,$tmplist1,$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>
在Discuz!中,分类信息自定义字段的调用确实是一个常见的需求,尤其是在需要展示特定分类信息(如房屋信息、商品信息等)时。你提到的步骤已经涵盖了大部分内容,但为了更清晰地解释如何调用分类信息自定义字段,我将进一步详细说明。
### 1. 后台设置分类信息字段
首先,你需要在Discuz!后台设置分类信息字段。以房屋信息为例,你可以在后台的“分类信息”管理中,为房屋信息添加自定义字段,如“居室”、“面积”、“价格”、“区域”等。
### 2. 创建数据调用模块
在后台的“门户” -> “模块管理”中,创建一个新的数据调用模块。你可以选择“帖子模块”或“分类信息模块”,具体取决于你的需求。
- **模块名称**:例如“房产网首页_出租房房源_列表”。
- **数据来源**:选择“分类信息”或“帖子”,并指定对应的版块。
- **只接受推送数据**:如果你希望手动推送数据,可以勾选此选项。
### 3. 编写模块模板
在模块模板中,你可以使用Discuz!提供的模板语法来调用分类信息字段。以下是一个简单的模板示例:
<ul>
<!--{loop $data $key $value}-->
<li>
<a href="{$value}">{$value}</a>
<p>居室: {$value}</p>
<p>面积: {$value}</p>
<p>价格: {$value}</p>
<p>区域: {$value}</p>
</li>
<!--{/loop}-->
</ul>
在这个模板中,`field_1`、`field_2`、`field_3`、`field_4` 分别对应你在后台设置的自定义字段。
### 4. PHP代码处理数据
如果你需要对数据进行进一步处理,可以在PHP代码中获取数据并进行加工。以下是一个简单的PHP代码示例:
// 获取数据调用模块的内容
$fl_1 = file_get_contents('http://www.yourdomain.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 = "";
foreach ($tmplist as $item) {
$tmp = explode("@@", $item);
$title = $tmp;
$url = $tmp;
$field_1 = $tmp; // 居室
$field_2 = $tmp; // 面积
$field_3 = $tmp; // 价格
$field_4 = $tmp; // 区域
// 根据区域ID转换为区域名称
$quyu = "";
switch ($field_4) {
case "1": $quyu = "老城区"; break;
case "2": $quyu = "城东"; break;
case "3": $quyu = "城南"; break;
case "4": $quyu = "城西"; break;
case "5": $quyu = "花湖"; break;
case "6": $quyu = "华容区"; break;
case "7": $quyu = "梁子湖区"; break;
}
// 拼接HTML
$tmpstr1 .= "<div class='house-item'>
<a href='{$url}'>{$title}</a>
<p>居室: {$field_1}</p>
<p>面积: {$field_2}</p>
<p>价格: {$field_3}</p>
<p>区域: {$quyu}</p>
</div>";
}
### 5. 在模板中调用变量
最后,在模板中调用你生成的HTML内容:
<div class="house-list">
{$tmpstr1}
</div>
### 6. 样式调整
你可以根据需要调整CSS样式,确保页面展示效果符合预期。
### 总结
通过以上步骤,你可以在Discuz!中成功调用分类信息自定义字段,并在页面上展示这些字段的内容。关键在于正确设置后台的分类信息字段,编写合适的模块模板,并在PHP代码中对数据进行处理。
如果你有更多关于Discuz!开发的问题,欢迎随时提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。 在Discuz!中调用分类信息自定义字段是一个常见的需求,尤其是在你希望展示特定分类信息(如房屋信息)时。你提到的步骤已经非常详细,但为了更清晰地帮助你实现这一功能,我将进一步解释和优化这些步骤。
### 1. 后台设置数据调用
首先,你需要在Discuz!后台创建一个数据调用模块。具体步骤如下:
1. **进入后台**:登录Discuz!后台,找到“门户” -> “模块管理”。
2. **添加模块**:点击“添加模块”,选择“数据调用”。
3. **设置模块参数**:
- **模块名称**:例如“房产网首页_出租房房源_列表”。
- **数据来源**:选择“分类信息”。
- **分类信息**:选择你创建的房屋信息分类。
- **只接受推送数据**:如果你希望手动推送数据,可以勾选此选项。
- **推送目标**:选择你希望展示这些数据的版块。
4. **模块模板**:在模块模板中,你可以使用默认的模板变量(如`{title}`、`{url}`等)来调用帖子标题、URL等信息。你提到的`|@@|`和`@@`是用来分隔不同帖子和帖子内部字段的自定义分隔符。
### 2. PHP代码处理数据
接下来,你需要通过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 = "";
foreach ($tmplist as $item) {
$fields = explode("@@", $item);
if (count($fields) >= 3) {
$title = $fields; // 帖子标题
$url = $fields;// 帖子URL
// 假设你已经从数据库中获取了自定义字段的值
$fang_shi = $fields; // 居室
$fang_ting = $fields; // 厅
$fang_wei = $fields; // 卫
$fang_mianji = $fields; // 面积
$gq_money = $fields; // 价格
$fang_quyu = $fields; // 区域
// 区域转换
$quyu = "";
switch ($fang_quyu) {
case "1": $quyu = "老城区"; break;
case "2": $quyu = "城东"; break;
case "3": $quyu = "城南"; break;
case "4": $quyu = "城西"; break;
case "5": $quyu = "花湖"; break;
case "6": $quyu = "华容区"; break;
case "7": $quyu = "梁子湖区"; break;
}
// 生成HTML
$tmpstr1 .= "<div class='house-item'>
<a href='{$url}'>{$title}</a>
<span>{$fang_shi}室{$fang_ting}厅{$fang_wei}卫</span>
<span>{$fang_mianji}平方</span>
<span>{$gq_money}万</span>
<span>{$quyu}</span>
</div>";
}
}
### 3. 在模板中调用变量
最后,你需要在模板中调用生成的`$tmpstr1`变量来展示数据。
<div class="house-list">
<div class="house-header">
<span>名称</span>
<span>居室</span>
<span>面积</span>
<span>价格</span>
<span>区域</span>
</div>
{$tmpstr1}
</div>
### 4. 样式调整
你可以通过CSS来调整展示的样式,确保页面美观。
.house-list {
width: 100%;
border: 1px solid #ccc;
padding: 10px;
}
.house-header {
font-weight: bold;
border-bottom: 1px solid #ccc;
padding-bottom: 5px;
margin-bottom: 10px;
}
.house-item {
padding: 5px 0;
border-bottom: 1px dashed #ccc;
}
.house-item:last-child {
border-bottom: none;
}
### 总结
通过以上步骤,你可以在Discuz!中成功调用并展示分类信息中的自定义字段。关键在于正确设置数据调用模块,并通过PHP代码处理数据,最后在模板中展示处理后的数据。如果你有更多自定义字段或复杂需求,可以根据这个基础进行扩展。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页:
[1]