分享

!!!!!!DedeCms 频道模型介绍,设计频道模型的方法

 看见就非常 2013-03-29
知道dedeCMS有一年多的时间了,但真正用于研究它的时间半个月不到,在这过程中,更多的时间花在设计DIV格式模板上。
说这话并不是摆显自己,只是说出自己学习dedeCMS的过程,让更多希望做网站的朋友了解dedeCMS的易用性,减轻大家对CMS系统的恐惧心理。

下面以制作一个简单的产品库为例,一步步地陈述自定义模型的过程,初学者和感兴趣的朋友不妨看看:

一、模型设计(自定义模型:有两点)
1、确定前台需要表现的内容
 
  dedeCMS没有产品库模型,如果网站涉及到产品展示,那么先考虑这个展示需要显示哪些内容,我们的例子涉及四个内容:

  (1)产品名称
  (2)产品价格
  (3)产品缩略图
  (4)产品介绍


  图一

 

根据上述需求,确定了数据库表的设计目标,接下来看第二点

2、建立数据库表、字段

  建立数据库表product,表将会有四个字段与第一点需要显示的内容对应,如下:

  (1)产品名称 <=> 直接引用dedeCMS系统的文章 title
  (2)产品价格 <=> price
  (3)产品缩略图 <=> 直接引用dedeCMS系统的文章缩略图 litpic
  (4)产品介绍 <=> pinfo

   注:dedeCMS有一个公共表“archives”,各个模型都共用其中的字段,新建立的模型也是,也就是说,实际上只需要建立两个字段:price、pinfo  

  确定目标后,进入dedeCMS“频道模型管理”。
==================================

  作为初学者,模仿是事半功倍的最佳方法。在学习过程中,研究了系统缺省的四个模型,发现“软件模型”是最方便最容易上手的模仿模型
  贪图方便,我喜欢用多窗口浏览器GB打开后台,按住shif点击“更改”在新标签打开“软件模型”;
  界面里就简单的几行填写表单,里面“附加表”、“列表附加字段:”分别是CMS系统自动创建的“数据库表”、表里的“字段”(注意:dedeCMS有一个共用的表“archives”,各个模型都共用其中的好些字段,所以“软件模型”里的字段并不多):

图二

  接着在管理后台原标签点击[增加新模型],打开新建“模型”界面,把“软件模型”地内容对应地复制过来,然后根据前面设计的表名、字段进行修改,按下图修改好之后点击“确定”,“产品库模型”建立了。
  dedeCMS缺省创建的字段用了“latin1_swedish_ci”编码,需要进入到phpMyAdmin把它修改成CMS统一的“gbk_chinese_ci”编码,否则中文字会出现显示乱码现象。

  (补充:下图中有“字段添加向导”,这里可以对创建的字段进行定义

图三

附:phpMyAdmin修改“gbk_chinese_ci”编码图

图四

 

图五

二、程序代码修改

二、程序代码修改->这里需要具备HTML知识,尤其要了解HTML的表单参数设置与更改

1、自定义模型需要添加修改的系统文件:product_add.php product_add_action.php product_edit.php product_edit_action.php

  按“自定义模型”里的文件复制系统里的相应soft_xxx.php,并改名成:product_add.php product_add_action.php product_edit.php product_edit_action.php

图六

 

function MakeUpload()
{
   var startNum = 2;
   var upfield = document.getElementById("uploadfield");
   var endNum = document.form1.picnum.value;
   if(endNum>9) endNum = 9;
   upfield.innerHTML = "";
   for(startNum;startNum<=endNum;startNum++){
upfield.innerHTML += "软件地址"+startNum+":<input type='text' name='softurl"+startNum+"' style='width:280' value='http://'> ";
upfield.innerHTML += " ";
upfield.innerHTML += "服务器名称:<input type='text' name='servermsg"+startNum+"' style='width:150'><br/>\r\n";
   }
}

2、product_add.php的修改

  step1:用dreamweaver或者editPlus打开复制好的“product_add.php”文件,查找“soft_add.php”,替换成“product_add.php
  查找“soft_add_action.php”,替换成“product_add_action.php

  step2:查找“$channelid="3";”,替换成“$channelid="您建立模型的频道ID";”

  step3:代码用不着了,可以删除  

  step4:查找“第291行”->“第437行”的table里,它是为“软件模型”添加信息的表单,把不要的都删除了,
  留下第432行的:

   <?
   GetEditor("body","",250,"Small");
   ?>

  在此前面添加一个按钮文本框input:

<input type='text' name='price' id='price' style='width:100px'>



  注:dedeCMS3.1X用了tab标签显示方式,添加文章修改文章非常方便,但修改相应部分的程序代码用DW无法所见即所得地修改了,3.0X可以直接在DW属性面板上修改。
  两者不同的优缺点,你会选择哪个?无疑还是tab标签的方式,毕竟修改代码的情况比较少。

3、product_add_action.php的修改

  step1:用dreamweaver或者editPlus打开复制好的“product_add_action.php”文件,查找“soft_add.php”,替换成“product_add.php
  查找“soft_add_action.php”,替换成“product_add_action.php

  step2:第98行,查找:

//加入附加表
//----------------------------------
$arcID = $dsql->GetLastID();

$inQuery = "
INSERT INTO dede_addonsoft(aid,typeid,filetype,language,softtype,accredit,
os,softrank,officialUrl,officialDemo,softsize,softlinks,introduce) 
VALUES ('$arcID','$typeid','$filetype','$language','$softtype','$accredit',
'$os','$softrank','$officialUrl','$officialDemo','$softsize','$urls','$body');
";

改成:

//加入附加表
//----------------------------------
$arcID = $dsql->GetLastID();

$inQuery = "
INSERT INTO dede_addonproduct(aid,typeid,price,pinfo) 
VALUES ('$arcID','$typeid','$price','$body');
";

  注:注意 INSERT INTO 部分,代码把 VALUES 里的内容插入到 #@ 后面的数据库表 addonproduct 相应的字段中,里面就有我们添加的字段。
  此注释希望能帮助初学者掌握自行修改的方法。

至此,添加产品库文章部分修改完成.

如果发现发布的文章存在问题,需要修改,CMS系统调用的不是以上两个文件,而是:product_edit.php product_edit_action.php

二、程序代码修改

4、product_edit.php的修改

  step1:用dreamweaver或者editPlus打开复制好的“product_add.php”文件,查找“soft_edit.php”,替换成“product_edit.php
  查找“soft_edit_action.php”,替换成“product_edit_action.php
if(!is_array($addRow))
{
   $addRow["filetype"] = "";
$addRow["language"] = "";
$addRow["softtype"] = "";
$addRow["accredit"] = "";
$addRow["softrank"] = 3;
$addRow["officialUrl"] = 400;
$addRow["officialDemo"] = "";
$addRow["softsize"] = 400;
$addRow["softlinks"] = "";
$addRow["introduce"] = "";
}

  step2:查找“$channelid="3";”,替换成“$channelid="您建立模型的频道ID";

  step3:查找“第30行”:

改成:

CODE:
if(!is_array($addRow))
{
$addRow["price"] = "";
$addRow["pinfo"] = "";
}

  注:还记得产品库字段的设计吧,它插入的数据只是“price”和“pinfo”,所以这里的代码只需要两个字段的内容

  step4:查找“第364行”->“第514行”的table代码,这些是读取数据来进行修改的部分,把不需要的删除,只留下

  留下第509行的:

<?
   GetEditor("body",$addRow["introduce"],250,"Small");
   ?>

并改成:

<?
   GetEditor("body",$addRow["pinfo"],250,"Small");
   ?>

  注:这里代码增加了读取数据部分“$addRow["数据库表字段"]”,并且赋值给 value ,明白了这点,添加“price”内容就方便多了

  在此前面添加一个按钮文本框input:

<input name="price" id="price" value='<?=$addRow["price"]?>' style="width:100">

完成修改,还剩下

5、product_edit_action.php的修改

  step1:用dreamweaver或者editPlus打开复制好的“product_edit_action.php”文件,查找“soft_edit.php”,替换成“product_edit.php
  查找“soft_edit_action.php”,替换成“product_edit_action.php”

  step2:查找“第108行”:

//更新附加表
//----------------------------------
$row = $dsql->GetOne("Select aid,typeid From dede_addonsoft where aid='$ID'");
if(!is_array($row))
{
$inQuery = "
INSERT INTO dede_addonsoft(aid,typeid,filetype,language,softtype,accredit,
os,softrank,officialUrl,officialDemo,softsize,softlinks,introduce) 
VALUES ('$ID','$typeid','$filetype','$language','$softtype','$accredit',
'$os','$softrank','$officialUrl','$officialDemo','$softsize','$urls','$body');
";

改成:

//更新附加表
//----------------------------------
$row = $dsql->GetOne("Select aid,typeid From dede_addonproduct where aid='$ID'");
if(!is_array($row))
{
$inQuery = "
INSERT INTO dede_addonproduct(aid,typeid,price,pinfo) 
VALUES ('$ID','$typeid','$price','$body');

  step3:查找“第129行”:

update dede_addonsoft
set typeid ='$typeid',
filetype ='$filetype',
language ='$language',
softtype ='$softtype',
accredit ='$accredit',
os ='$os',
softrank ='$softrank',
officialUrl ='$officialUrl',
officialDemo ='$officialDemo',
softsize ='$softsize',
softlinks ='$urls',
introduce='$body'
where aid='$ID';";

改成:

update dede_addonproduct
set typeid ='$typeid',
price ='$price',
pinfo ='$body'
where aid='$ID';";

 注意:where aid='$ID'前面的一行,后面没有逗号的,因为一时粗心,这个地方查了好久才找到问题。

至此,完成所有程序文件代码修改。

三、前台模板定制

自定义模型后,需要为它定义模板文件,涉及三个文件“index_xxx.htm”、“list_xxx.htm”、“article_xxx.htm”,操作非常简单,到模板目录复制然后改名“index_product.htm”、“list_product.htm”、“article_product.htm”即可,建立新的网站频道时,CMS系统自动调用相应的模板文件

这部分主要是内容调用,只要把前面定义的“字段调用代码”放到相应的模板里即可,在此不作详细说明。

<field:price type='int' isnull='true' default='' rename='' />

<field:pinfo type='text' isnull='true' default='' rename='' />

经过测试,新建的模型目前还没发现问题,
由于本人同是初学者,出错的话希望大家谅解,并恳请指正.

注意:关于数据库字段
用CMS自动创建的 product 表 pinfo 字段要改成 MEDIUMTEXT 类型有可能修改不了,如遇到此问题,请用 phpMyAdmin 删除,重新添加一个,添加方法看下图的“添加字段”



完成后的效果

抓取了添加、修改产品库文章的图,比较大,需要新开窗口才看得清楚

添加产品库文章

修改产品库文章

 


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多