zoukankan      html  css  js  c++  java
  • dedecms基础整理,

    需求3: 在添加某个商品的时候,我们希望多一个信息,就是付费方式,还希望多一个邮资信息,我们又该怎样处理?

    引出修改内容模型的问题

    每个模型的字段管理的所有信息 都属于附加表。

    步骤:

    1. 点击 核心->内容模型管理->商品修改->字段管理->添加新字段.

    说明: 当你操作完毕后,就会在对应的 附件表中增加了一个对应的字段.

    需求4: 请各位同学看看,这里我们有一个问题,就是当你点击武侠,爱情,电器的时候,会找不到对应的页面,这是为什么呢?这个就是直接点击 更新栏目HTML

    说明: 我们设计网站前台的时候,可以参考这样一个思路: 网站分三级目录    首页面->栏目页->内容页

    思考题:1. 栏目(类别)是保存在哪个表中的. 2. 一篇文章,一个商品它们最终是存放在数据库中的哪些表中?

    答: 栏目(类别)是保存在哪个表中的. dede_arctype

    一篇文章,一个商品它们最终是存放在数据库中的哪些表中?

    内容是分别放在两张表 ,一张是他的主表,该主表是通用 dede_archives , 附件表 dede_addonXXX.

    u  在DEDE中增加内容的基本步骤是怎样?

    (1)    找模型,如果有的话,你可以使用,但是你也可以自定义一些字段,你也全新的创建一个模型,比如: 我现在要搞一个电影网站.

    增加一个模型的步骤是:

    1. 点击核心->内容模型管理->增加新模型 , 进入页面后,自己看看就知道怎样添加了

    说明: 当你增加一个模型后,就会在数据库中增加一个对应的 附件表 dede_addonXXX

    (2)    添加一个栏目,根据你的实际情况来定, 刷新一把才看到

    (3)    增加内容 ,根据实际情况输入即可

    u  说明一下DEDE 的目录结构

    dedecms/a 目录 用于存放生成的静态页面

    dedecms/data 目录 用于存放临时文件和缓存文件

    dedecms/images 目录 用于存放dede自己的图片

    dedecms/include 目录 核心类库(标签库,操作图像的类,操作数据库的类)

    dedecms/install  目录,安装信息

    dedecms/dede 目录,存放后台管理程序

    dedecms/member 目录,存放会员管理程序

    dedecms/plus  目录,存放插件程序,和将来你开发的程序模块

    dedecms/templates 目录,存放dede前台的所有模板文件

    dedecms/uploads 目录,存放你上传的图片、视频。。

    u  如何去掉广告 

    思路: 因为dede 创建 静态页面的机制,通过模板文件,去创建对应的 静态页面,因此我们思路是,修改这个对应的模板文件.

    dede的标签问题:

    1. 如何去查阅标签手册

    后台->模板->默认模板管理->点一个修改

    可以看到参考标签

    u  如何去掉列表表的广告

    知识点: 如何去找某个栏目的列表页

    后台->网站栏目管理->找到对应的栏目->更新->高级选项->

    到 dede/templates/default /下去找到 对应的模板文件,进行修改即可,然后重新更新栏目HTML

    ☞ 每个栏目属于一个模型,那么他们对应的栏目列表模板是同一个,修改后,就同时收到影响.

    u  dede标签的讲解

    1. dede 的标签是在 模板中使用
    2. 我们可以建立自己的模板文件,来学习各个标签的使用

    u  具体的标签使用

    1. 单标签

    用法

    {dede:标签名 属性=“值” .../}

    举例说明:

    {dede:include filename=”head.htm”/}

    2.       双标签

    用法

    {dede:标签名 属性=””....}内容{/dede:标签名}

    {dede:标签名 属性=””....}内容{/dede}

    举例说明:

    channel标签的用法.

     

    ---chanel标签的用法---

    <!--channel标签类似 select * from dede_arctype  where ishidden<>1 limit 0,8-->

    {dede:channel  type='top'  row='8'}

    [field:typename/]

    {/dede:channel}

    知识点: 如何去查看channel标签的源码. /dedecms/include/taglib/channel.lib.php

    die();//在源码里面  打印变量

    2.       双标签

    用法

    {dede:标签名 属性=””....}内容{/dede:标签名}

    {dede:标签名 属性=””....}内容{/dede}

    举例说明:

    channel标签的用法.

     

    ---chanel标签的用法---

    <!--channel标签类似 select * from dede_arctype  where ishidden<>1 limit 0,8-->

    {dede:channel  type='top'  row='8'}

    [field:typename/]

    {/dede:channel}

     

    知识点: 如何去查看channel标签的源码. /dedecms/include/taglib/channel.lib.php

    die();

     

    3.字段标签的用法

    举例

    <!--channel标签类似 SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath From `#@__arctype` WHERE reid=0 And ishidden<>1 order by sortrank asc limit 0, 8 -->

    {dede:channel  type='top'  row='8'}

    <!--field:typename就是说,把查询的字段typename信息放在这个位置  -->

    [field:id/]=[field:typename/]

    {/dede:channel}

    需求: 如果,我们希望把取出的某个字段数据,进行处理,在输入,怎么办?

    具体: 对取出typename值,进行md5加密

    具体使用如下:

    {dede:channel  type='top'  row='8'}

    <!--field:typename就是说,把查询的字段typename信息放在这个位置  -->

    [field:id/]=[field:typename/]==

    <!--如何对取出的字段值,使用php函数 @me就是表示取出的值-->

    [field:typename function='md5(@me)'/]

    {/dede:channel}

    4.怎样把取出的值进行PHP运行

    [field:字段名 runphp=”yes”]

    这里可以写一些简单的php码(这里的php码一般是比较简单,如果复杂则可以写一个自定义函数来处理.)

    [/field:字段名]

    5.如何自定义函数

    首先在  /include/extend.fuc.php 中添加自己的函数

    /*

           我们自定义的函数

    */

    function abc($val){

           return $val."hello,world";

    }

    看看怎么使用

    <!--如何在dede中自定义函数,把typename值拼接 hello,world并返回-->

    -----------------------

    [field:typename function="abc(@me)"/]

    注意: dede的标签是不可以嵌套使用,否则出问题.

    6.dede标签如何调用全局的变量值

    用法是

    {dede:global.全局变量名/}

    思想: 很多的项目,为了开发的方便,把一些常用的变量,做成全局,然后使用使用比较方便. , dede的有一个非常重要的文件. include/common.inc.php文件,中有很多全局值.

    举例:

    ---取出全局变量值

    {dede:global.cfg_soft_lang/}

    因为dede的标签是不可以嵌套,所以,如果你要在dede标签中,取出全局变量,则应当这样取

    [field:global.全局变量名/]  等价于 [field:global name=’全局变量名’/]

    举例

    [field:global.cfg_soft_lang/] 

    u  实战阶段-a67手机电影网的开发.

    前提: 网站的前台静态页面,已经开发好了.

    1 把dede首页面换成 a67网站首页面.

    步骤:

    1. 首先把 templates/defualt 备份一份
    2. 把templates/defualt 清空
    3. 把a67 的首页.html 和 images css js 整体拷贝到 templates/default下,
    4. 首页.html 换成 index.htm
    5. 打开 index.htm 进行网页编码,css,js引入,images图片路径修

    <meta http-equiv="Content-Type" content="text/html; charset={dede:global.cfg_soft_lang/}" />

    <link href="{dede:global.cfg_templets_skin/}/css/style.css" type="text/css"  rel="stylesheet"/>

    <link href="{dede:global.cfg_templets_skin/}/css/index.css" type="text/css"  rel="stylesheet"/>

    <script language="javascript" src="{dede:global.cfg_templets_skin/}/js/global.js"></script>

    <SCRIPT src="{dede:global.cfg_templets_skin/}/js/jquery-1.4.2.min.js" type=text/javascript></SCRIPT>

    <SCRIPT src="{dede:global.cfg_templets_skin/}/js/lanrentuku.js" type=text/javascript></SCRIPT>

    把 “images/ 替换成 "{dede:global.cfg_templets_skin/}/images/

      6. 更新首页面,浏览即可看到最新的a67 首页.

    2. 将dede首页面栏目换成a67电影网的首页面栏目

    1. 创建电影这个内容模型
    2. 创建我们的栏目(我的电影、我的电视剧)
    3. 使用dede 标签,在 index.htm 模板中,把我们需要的栏目内容取出

      {dede:channel}..{/dede:channel}   //获取栏目列表标签

                  具体的代码是

                  <ul>

                                <li><a href="http://www.a67.com/" target="_self">首页</a></li>

                                {dede:channel type="top" row="8"}

                                <li><a href="http://www.a67.com/movie/" title="手机电影" target="_self">

                                [field:typename /]

                                </a></li>

                                {/dede:channel}

                                <li><a href="http://www.a67.com/zhuanti/" target="_blank">专题</a></li>

                         </ul>

    3.a67网的栏目列表页面

    图示:

    步骤:

    1. 请先把不必要的栏目先删除.
    2. 看看你的电影的模型对应的列表模板文件叫什么名字,然后在 templates/defualt 目录下创建一个空的  list_movie.htm 名字.(根据你创建的栏目后的高级选型里面,有个对应生产的栏目htm)
    3. 更新栏目HTML
    4. 更改首页面的栏目的超链接,让它指向直接的列表静态页

    这里请大家在 首页面模板中 href 这样写

    <!-- select 列表 from dede_arctype ...-->

                            {dede:channel type="top" row="8"}

                                <!--大家注意typelink并不是dede_arctype表的字段,他是在程序计算得到-->

                                <li><a href="[field:typelink/]" title="手机电影" target="_self">

                                [field:typename /]

                                </a></li>

                         {/dede:channel}

      5. 把a67的栏目列表模板文件拷贝到 templates/default 名字,是list_movie.htm

    然后做 网站编码,资源引入(css/js), 图片的路径的替换,这个和首页面是一样.

      6. 把栏目的导航,的首页面改成我们的本地.

    u  把首页面的今日更新的数据,从我们自己的dede取出,并显示  

    步骤

    1. 首先自己在后台添加一些数据(电影、电视剧)
    2. 在首页面的模板文件中,使用标签{dede:arclist} 来取出文档
    3. 具体代码是在 index.htm中写的.
    {dede:arclist limit='0,10' typeid='5' channelid='18' addfields='language,area,type'}
    <dl class="w128">
    <dt><a href="/movie/55733.html" title="[field:title/]">
    <img alt="[field:title/]" src="[field:litpic/]" onerror="this.src='/views/images/nophoto.jpg'" class="loading">
    <span class="bg">[field:area/]</span>
    <span class="time">[field:type/]</span>
    </a></dt>
    <dd>
    <p class="p1"><a href="/movie/55733.html" title="[field:title/]">[field:title/]</a></p>
    <p class="p2"></p>
    </dd>
    </dl>
    {/dede:arclist}

    u  a67网的首页面的今天更新滚动内容的自定义

    特殊的需求,就是,我们希望在取出栏目记录 或者是 内容记录(电影,电视剧), 是更加灵活.--->{dede:sql}

    举例: 使用 {dede:sql语句来完成上述功能}

    基本用法:

    {dede:sql sql=''}
    [field:title/]
    {/dede}

                <!--分析:title是从主表取出的,litpic是从主表取出的,  arcrank是从主表取出的,area是从附加表取出的,type也是附加表-->
                {dede:sql sql="select t1.title,t1.litpic,t1.arcrank,t2.area,t2.type from dede_archives t1,dede_addonmovie t2 where t1.typeid =5 and t2.aid=t1.id and t1.arcrank=0 order by t1.click desc"}
                    <dl class="w128">
                      <dt><a href="/movie/55733.html"  title="[field:title/]">
                          <img alt="[field:title/]" src="[field:litpic/]" onerror="this.src='/views/images/nophoto.jpg'" class="loading">
                          <span class="bg">[field:area/]</span>
                          <span class="time">[field:type/]</span>
                      </a></dt>
                      <dd>
                          <p class="p1"><a href="/movie/55733.html"  title="[field:title/]">[field:title/]</a></p>
                          <p class="p2"></p>
                      </dd>
                  </dl>
                {/dede:sql}

    u  a67网的首页的添加我的电视剧,并完成各个栏目对应的列表页

    请大家完成,当我们点击我的电视剧时,就显示电视剧内容,点击电影就显示电影的内容.

    步骤如下:

    1. 找到对应的栏目列表模板文件 list_movie.html .做修改

    其它的问题

    如何 安装自己希望的顺序来显示我们的栏目.

    思路:

    {dede:channel} 如果可以接受我们传递的某个数据,然后,我们再在 channel.lib.classs 文件中进行处理好?

    {dede:channel orderby=”id”}

    处理方法是,可以再channel.lib.class 中进行二次处理

    die(var_dump($ctag));

    目的是去取出id

    object(DedeTag)#21 (8) { ["IsReplace"]=> bool(false) ["TagName"]=> string(7) "channel" ["InnerText"]=> string(211) " [field:typename/] " ["StartPos"]=> int(2845) ["EndPos"]=> int(3117) ["CAttribute"]=> object(DedeAttribute)#20 (2) { ["Count"]=> int(3) ["Items"]=> array(4) { ["tagname"]=> string(7) "channel" ["type"]=> string(3) "top" ["row"]=> string(1) "8" ["orderby"]=> string(2) "id" } } ["TagValue"]=> string(0) "" ["TagID"]=> int(6) }

    die(var_dump($ctag -> CAttribute));

    object(DedeAttribute)#20 (2) { ["Count"]=> int(2) ["Items"]=> array(3) { ["type"]=> string(3) "top" ["row"]=> string(1) "8" ["orderby"]=> string(2) "id" } }

    相对于

      class DedeAttribute {
        var $Count; //int
        var $Items; //array
      }
    
      $ctag->CAttribute 就是  DedeAttribute类的一个对象实例
      $ctag->CAttribute ->Items['orderby']

    var_dump($ctag -> CAttribute -> Items["orderby"]);

    string(2) "id"

    在arclist 加一个 自定义属性

    ①我们在前台页面写入自定义属性  hspwhere=" addf.language='国语'"

    ②打印下sql语句,echo $query;

    SELECT arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,tp.namerule2,tp.ispart, tp.moresite,tp.siteurl,tp.sitepath ,addf.language,addf.area FROM `#@__archives` arc left join `#@__arctype` tp on arc.typeid=tp.id LEFT JOIN `dede_addonmovie` addf ON addf.aid = arc.id WHERE arc.id in(10,8) ORDER BY arc.sortrank desc

    我们不难发现,dede_addonmovie` addf ,给这个表起了个别名,

    ③仔细观察表的时候,我们又发现底层有一个能获取表参数的函数

    $ctag->GetAtt('hspwhere')

    输出打印一下   addf.language='国语'   输出了字段和值 

    ④让拿到的内容加入到筛选的函数里面去

        $hspwhere=$ctag->GetAtt('hspwhere');
        // echo $hspwhere;
        if(!empty($hspwhere)){
            $orwheres[] = $hspwhere;
        }

    u  a67网的主页面和栏目列表的今日更新,点击后进入内容页面

    思路:

    找到内容页的模板文件.

    后台->核心->栏目列表->点击某个栏目->高级选项

    发现 电影和电视剧用的文章模板是 article_movie.htm

    步骤:

    1. 把 前端提供的 电影内容.htm  拷贝到 article_movie.htm
    2. 对模板做 网页编码,资源引入,图片的路径进行修改
    3. 重新生成内容页
    4. 修改了首页面模板文件 index.htm
    5. 对article_movie.htm进行处理,取出对应的数据.

    这里有一个新的知识点,如何在内容页中取出对应记录(电影、电视剧)的字段信息.

    方法是 {dede:field.字段名 /} 说明这个字段,可以是主表的字段,也可以是附加表字段

    具体的代码如下  article_movies.htm

    面包屑导航标签:

    使用的方法:

    {dede:field.position/}{dede:field.title/}

    u  a67网的内容页面增加统计浏览量的功能

    首先,我们看看dede自己怎么做的!!!

    <li><em>浏览量:</em><script src="{dede:field name='phpurl'/}/count.php?view=yes&aid={dede:field name='id'/}&mid={dede:field name='mid'/}" type='text/javascript' language="javascript"></script></li>

    如何写自己的程序(插件),去操作dede 的后台数据库的表->

    ☞ isset和  empty的区别是什么

    empty 判断一个变量是否为“空”,isset 判断一个变量是否已经设置。

    $name=0;

    $name='';

    $name=null;

    $name="0";

    $name;

    if(empty($name)){

           echo "ok"; //上面五种写法empty($name)都是 true

    }

    isset 函数是用于检测这个变量是否设置过,在下面两种情况下会认为

    isset 为假

    ①$id; 没有给任何值

    ②或者就是根本没有定义.

    因此我们建议在 判断某个表单是否提交有数据(可能是0 '' ),使用

    isset来判断

    if(isset($_GET/$_POST['变量']){

    echo $_GET['变量']

    }else{ echo '没有传递数据'}

  • 相关阅读:
    POJ 1469 COURSES 二分图最大匹配
    POJ 1325 Machine Schedule 二分图最大匹配
    USACO Humble Numbers DP?
    SGU 194 Reactor Cooling 带容量上下限制的网络流
    POJ 3084 Panic Room 求最小割
    ZOJ 2587 Unique Attack 判断最小割是否唯一
    Poj 1815 Friendship 枚举+求最小割
    POJ 3308 Paratroopers 最小点权覆盖 求最小割
    1227. Rally Championship
    Etaoin Shrdlu
  • 原文地址:https://www.cnblogs.com/laomi233/p/9664317.html
Copyright © 2011-2022 走看看