dede的应用

gbk和utf-8版本选择
gbk是国家编码,所有的内容编码,包括中文,英文,英文字符都占两个字节。
utf-8是国际编码,中文三个字节,英文1个字节
现阶段,网站都用gbk编码, 一方面节省本地/网络主机空间, 另一方面, 很多插件都使用的是gbk编码

在熟悉了tp,yii, bs, extjs等来看dede就比较容易了。

所谓的cms的安装?
安装方式, 是指通过cms的所有文件,通常是index.html/php, 去执行一些操作, 如: 创建一些目录, 复制一些文件而已, 将框架搭建起来而已.
tp的安装方式, 是以索引文件, 运行一次index.php就自动在站点根目录下创建一些目录和文件了.
而dede适合初级人员,所以采用的是可视化的方式, (其实就是用可视化的方式获取配置内容)来进行设置.

要从文件结构去理解dede. 不管是文件/目录/命名和大小写,没有硬性的规定,只要在你的项目中,你自己规定一套命名规则就好了.
比如名字取单词的前三个字符, 就不管这三个字符的含义如何,如: but_next, but_back其中的but就是button不是but.
比如后台uploads/中的文件夹全都是小写,即使是文件夹, 名称也没有首字母大写.甚至某些目录还以单字母来命名. 如a/ , m/

dede的模板标签, 分封闭标签, 和非封闭标签. 然后, 同样的, 有标签属性.

单引号和双引号, 谁包围谁? 通常用单引号来包围 双引号, 因为可以 减少, 避免 双引号 的变量解析问题

header('Location: install/index.php');

  1. 没有特殊原因, 程序中的(包括php和前端的)引号都用单引号
  2. 通常, header后的参数是一个字符串
  3. Location: 表示定位到/跳转到某个页面文件
  4. 区别dirname和basename. dirname是php自身提供的一个函数, 而basename也是php自身提供的一个函数.

dirname和basename都是 php 语言本身所提供的基本函数。
dirname是获取文件所在的目录, 是真实的完整路径, 如: c:\wamp\www, 而basename是最后的文件名,如index.php
那么,__FILE__是php提供的内置“常量”, 就是全部了, 如:c:\wamp\www\index.php
注意dirname本身后面, 没有目录分隔符“/或", 所以后面要连接其他路径的时候, 要加上斜杠/

虽然在windows中,不区分header('location/Location:...)中的location是否首字母大写。
但是, 还是会严格区分 foo.htm 和 foo.html 文件不是同一个 文件, 是不同的。会报错: the requested url: ./...htm was not found on this server.

注意php中的最常用的写法:
isset(\(row['foo']); 本身是一个逻辑判断语句,判断数组中是否设置了某个字段或变量. 返回true false。 bar = isset(\)row['foo']) ? 'yes': 'no'
if( isset($_GET['upcache']) || !file_exists('index.html'))

栏目和频道的区别?
栏目ID是一个栏目的ID,在这个系统中是指该栏目下再无子栏目的情况,也就是顶级栏目,如果这个栏目下还有其他子栏目,比如这样的形式 A栏目->B栏目->内容,那么A栏目就是一个频道栏目了,属于父级栏目,它的ID就是频道ID,B栏目就是一个栏目
频道是不可以分页的,就跟首页一样,也不可以发布文档;栏目是可以分页的,可以发布文档

使用cms或框架开发, 可以加快开发进程和速度.没有必要,实际工作中也难以从0开始写起. 最重要的是, 要关注业务和逻辑本身. 而不是框架本身,只要平时将框架弄懂就行了.如同要写一篇文章, 没有必要从头开始写一个编辑器吧...

Elegance is the only beaty that never fades.
the child was lured(诱骗) into a car and managed to escape.
variety is the spice of life

templets 就等于templates, 跟templates是一样的, 也是模板的意思

uploads中的核心文件夹, php文件功能模块所在的目录, data, dede, include里面, 这是整个框架的支持, 其他只是某个单独的模块.
member: 会员模块
plus就是plugins: 插件 , 如表单, 留言板, 评论等模块. 关于plus参考: http://www.xiuzhanwang.com/dedecms_aq/675.html
dede: 是实现后台管理功能的, 而基础性的框架的东西, 在data和include目录中
include: include是DEDECMS的系统文件夹,里面放的是DEDECMS系统下的一些系统功能函数文件和功能定义与说明以及参数的文件,不要删除,这个文件夹很重要。在DEDECMS的好多功能要调用这个文件夹下面的文件
M: m模块是手机移动(movable, mobile)的模块

lurd?

plus中的文档无法使用dede标签?

回到自定义标签列表,点击JS调用可以得到JS调用代码<script src='/plus/mytag_js.php?aid=2' language='javascript'></script>
这个JS代码就相当于普通文档中的{dede:include filename="head.htm"/}

robots.txt的解析:
robot['r2u b2t], 第一个o发 2u音

dede中的php文件, 包含的内容

  1. php不是 纯粹的 函数式语言( 整个文件中, 只能包含函数,所有的代码必须放在函数中), 也不是纯粹的面向对象式的语言. 文件中所有代码都必须放在类中)
  2. 可以直接写 语句, 任何语句, 如echo, require_once, define, 等, 结构语句如if, while, for, switch等等
  3. 也可以包含函数 ..
  4. 也可以包含类定义等等. 即在一个php文件中, 你可以按任何方式写任何代码. 混杂的写法都是可以的..

当执行phpmyadmin时,提示“服务器没有响应”等错误时,通常是系统(包括wins)的防火墙阻止了mysqld服务的运行, 所以只要手动的到 wamp/bin...中启动mysqld服务就好了。

windows下,如何设置gvim的字体为 宋体?
windows和linux设置vim的字体的命令不同:

  1. wins下, 设置是: set guifont=新宋体:h13 (win下, 字体和大小之间用冒号分隔, 大小用h=height 字体大小表示)
  2. linux下, 设置是: set guifont=新宋体\ 13 (linux下, 字体名称和大小之间用空格分隔, 由于在使用vi命令行在处理配置文件时, 不能识别空格, 所以这里用 backslash \ 来转义.
    注意他们之间的区别, 一个是用冒号分隔, 一个是用空格; 大小说明时, 一个使用 h来表示, 一个是直接指明大小.

vim的自动命令?

  1. autocmd, 有时也简称为au, 表示在vim自动执行某些命令command, 不需要用户去操作就可以执行的命令, 相当于 批处理, 预处理, 自动脚本的概念.
  2. au后, 跟触发事件(事件后可以跟参数, 跟模糊匹配的参数, 如*, *.txt等), 事件的表示方法, 用Buf (缓冲区来表示), 如: BufEnter, BufNewFile, BufRead, BufWrite.....等等.
  3. au + 事件 + (自动要执行的命令): 如: au BufEnter *.txt set gfn=Arial:h12 au BufNewFile * normal G 自动将光标移动到文件结尾....

对于一个网站来说, /表示根目录, 这个根目录如同linux系统的根目录, 用户所能看到的 就是这个根目录, 它实际上是服务器这个机器上的某个目录文件夹. 用户浏览者只能看到这个目录以下的内容. 这个是为了安全.

dede 远程安装是一样的, 只是地址换成http地址而已

dede的uploads这个目录本身用不着拷贝/上传 ,只要把uploads中的内容全部考上去就可以了,但是, 如果你在原来的uploads目录中已经安装了dede 那么就不能再将uploads目录删除或移动了

xampp支持多种操作系统,可以支持linux! 所以如果集成安装就可以直接用这个. pp: php, perl. 他的文档目录是: www/htdocs.

xampp使用的是控制面板的方式来控制各种服务的开启和关闭, 而wamp使用的是tray 托盘图标的方式

织梦猫上的模板, 有的是纯模板, 有的是带有数据的(恢复)的模板.

安装好dedecms后, 首先的是要对 "系统->站点进行设置"


在设计任何一门语言, 程序, 用户软件的时候, 如php的语法, 都应该 简洁, 直观, 见名知义! 如:

define ('DEDE_ENVIORNMENT', 'production');
if(DEDE_ENVIRONMENT == 'production'){
    error_reporting(E_ALL || ~E_NOTICE);    /// || ~ 表示不显示/不报告 警告信息.
}else{
    error_reporting(E_ALL);             // E_ALL表示所有的错误,包括警告. 
}

php中的字符串替换, 有四个函数: strtr, substr_replace(这个是用start, 和length来指定被替换的内容), str_replace, preg_match.

  1. strtr速度最快, 但是为了避免出错, 最好用数组形式的.
  2. 关于参数位置顺序中,, strtr和substr_replace的 被替换(待处理)的字符串参数在第一个位置, 而str_replace\和 preg_match的参数顺序中, 被替换(待处理)的字符串参数, 是放在最后面的.
  3. substr_replace是将字符串的一部分(一个范围, 一段子串), 替换成另一部分内容, 他有一些特殊的用法, 比如在字符串的开始, 前端插入其他字符串substr_replace('world', 'hello', 0, 0) ;
  4. 而str_replace和preg_replace替换是 "搜索/匹配" 替换. 基本上可以把str_replace和preg_replace看作是一样的函数,只是一个是直接指定搜索, 一个是模式"模糊"搜索.

php字符串函数的常识
php函数, 通常都支持 参数 和返回类型 为mixed. 可以为字符串, 也可以为数组, 因此, 就这一点, 使得他的函数, 的功能就比较强大
字符串函数, 都有 caseless和 casesensitive两个版本, 通常为sensitive, 如果要caseless, 就在相应的函数名中加上 i
preg_match的效率比ereg更高, 所以通常使用的是preg, 在/../模式中, 后面的符合叫 "模式修正符", 也就是附加说明符吧: i表示caseless, s表示PRCE_DOTALL即点号可以匹配任何字符, 包括换行回车符等. **注意, /../ 中的 尖括号不必转义, 只有 大中小括号才有"元字符"含义, 才需要转义. **

substr的用法

  1. substr(string, start, length): 是用 start和length来选定长度的, 不是根据start和end来决定的
  2. start默认的是从0开始算起的.
  3. 最主要的就是 start, length为负数的情况处理, 这个其实也很简单. 反正只要记住: (负数, 不管是start还是length负数, 都表示从字符串的末尾开始算起.)start为负数, 表示从字符串结尾开始数起的开始位置; 如果length为负数, 表示从字符串末端算起返回的长度. 即一个字符串从start位置开始, 直到 "从字符串末端返回 的长度, 比如-5, 就从末端数起5个字符的位置" . 这个也等效于 从start位置开始截取, 直到将 最后的 |负数的length绝对值| 个字符不要..
  4. 由于截取时, 只能向 正向, 从左到右的方向截取, 不可能倒过来截取, 所以, 如果start为负数, 而length也为负数, 且比start还小, 则length为0, 即不截取. 返回false, 或空字符串.

php的函数定义, 还可以放在 if(){function funcName(){..}} 中!

虽然empty可以判断一个变量是否为 空串, false, 0, null等, 但是最常用的是: 可以使用empty函数 来判断一个字符串是否为空.
常用的用法是: if( empty($_GET['name']) .... 或者三元运算符: $name = empty($_GET['name'])? 'anonymous': $_GET['name']

注意mysql中, 字段设置为 "是否为空" =false/no, 但是你仍然可以设置默认值default为NULL.

dede的核心 类库/库函数在 /include目录中. 其中 common.inc.php是系统入口文件. common.func.php是入口库函数...

mysql数据库中, gbk类型的站点的collation通常设置为 gbk_chinese_ci: 编码类型_国家_caseless?

vim的 php注释工具 -- 安装vim的doxygen就好了

网页拾取色器 --- 只是一个firefox的工具插件就解决了.

关于页面布局layout的 一个非常大的领悟:

  1. 整个大的方块的布局使用 div 比如左右两边的div.left, div.right, 局部里面的多个div细分. 先用 div将大的 功能块划分出来. 然后细分细写.

  2. 通常后台的结构和方式就是 (左边一个div.left)+ (右边一个div.right). 然后在两个div中, 都是一个iframe. 这两个iframe, 都不用显示边框的, frameborder=0 . 然后左边的div-iframe使用table和li的布局结构, 右边的div使用具体内容布局.

  3. html 中的id和name的区别: 通常是,各自的用途 和使用场合不同: id 通常是用在 非html文件功能中, 主要使用在: js脚本中, jquery选择器中, 或css的选择器样式中. 一般他不使用在 html的属性中; 相反的, name是 html元素的属性, 他通常是使用在 html属性中. 比如 超链接a的target= 的值, 这里是target属性, 属性的值, 当然应该是链接到的框架 的 name属性值. 而不是连接到的框架的id! 同时, target=_top, _self, _parent等也说明了是目标框架的 name值, 而不是id, 因为要使用id, 比如在js和css中, 需要使用#

  4. 再说, a超链接: 其实是"锚点"anchor的意思, 他的href是 hypertext references的简写. 他主要是有两个用法 :

    • 一是用来定义一个锚点, 使用name属性: <a name="chap4"> 第四章</a>
    • 另一个是用来跳转到指定的文档, 使用href属性: <a href="url/...> 跳转到</a> 关键是这里的href跳转地址, 可以是一个url文档地址, 也可以是一个锚点: <a href="#chap4">chap4</a>, 或者是一个url文档中的某个锚点: <a href="www.somefoo.com/article/news#chap4"> chap4 </a>
  5. 但是局部的/细节的地方, 用div布局绝对把你搞残! 在局部的/细节的地方, 布局的两大利器就是 ul-li, 和table.

  6. 而且ul-li(多个并列的items), 和table(数据表格逻辑表示时)中, 可以嵌套任何级别的 布局元素....

  7. 像后台管理页面, 左边分成功能菜单. 右边是详细信息. 点击左边的某个菜单项, 右边的内容相应改变. 这个其实很简单. 根本不需要什么框架. 其实就是 左边一个div, 右边一个div: 然后左边的div中嵌入一个 iframe(嵌入的iframe可以显示垂直向下的滚动条): 左边的iframe中的 item项其实是一些 a(超链接), 超链接的target目标正好到 右边div的id! 同时onclick执行一些js操作或函数.

虽然有style, css文件, 但是不要走极端. (不要全部写在css文件中, 也不要全部写在html的标签上.) 也不要轻视, 忽略 html标签的属性值的应用, 有时候,直接写html标签属性比style要方便得多. 最明显的就是 table标签, 将table标签的属性写在标签中, 比应用css要方便得多. 可以说这样一个原则: 先考虑写标签属性,特别是对一些常用的属性, 直接写; 在标签属性不好写的时候, 或不常用的才写css.


**dede如何判断当前系统是否已经安装? **
是通过判断 文件:根目录www下的data文件夹中, common.inc.php文件是否存在: /data/common.inc.php, 如果存在就说明dedecms已经安装, 否则就说明没有安装:
if (! file_exists( dirname(__FILE__).'/data/common.inc.php') ) {..// 就说明没有安装, 就去执行 install目录下的/index.php文件: header('Location: install/index.php');} else{....} , 安装完成后, 将删除掉 install下的index.php文件.

  1. 实际上, /data/common.inc.php是一个数据库配置文件: 跟tp区别: 他不是返回一个return array, 而是直接设置的数据库连接变量:
    $cfg_dbtype='mysql', $cfg_dbhost='localhost'; $cfg_dbname='foo'; $cfg_dbuser='root'; ..... ; $cfg_db_language='gbk';

posted @ 2017-06-21 16:57  noitanym  阅读(1236)  评论(0编辑  收藏  举报