手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表Tag:dedecms

dedecms 笔记:标签

资料均从网上收集,然后作了整理。。

注意,由于dedecms的模版TAG功能,其实是类似于XML,所以在使用的时候,一定要象XML一样正确闭合,否则,该区块将不变解析

一般来说,我们所使用的DEDECMS模板代码样式有如下几种:

XML/HTML代码
  1. {dede:标记名称 属性='值'/}  
  2. {dede:标记名称 属性='值'} {/dede:标记名称}  
  3. {dede:标记名称 属性='值'} 自定义样式模板(InnerText),即底层模板 {/dede:标记名称}
  4. 如果使用带底层模板的标记,必须严格用{dede:标记名称 属性='值'}{/dede:标记名称} 这种格式,否则会报错。

1、标记通用特性
(1) 短标记:
{dede:tagname.name/} 等同于 {dede:tagname name='' /}

{dede:global.name/}   外部变量      等同于 <?php echo $name; ?> 【其实这里应该是全局变量】
{dede:var.name/}      var数组       等同于 <?php echo $_vars['name']; ?>
{dede:field.name/}    field数组     等同于 <?php echo $fields['name']; ?>
{dede:cfg.name/}      系统配置变量 等同于 <?php echo $cfg_name; ?>【cfg已经是全局了,所以这个标签其实也可以写成{dede:global.cfg_name/}】


(2) 块标记:
{dede:tagname}
循环代码:
{/dede:tagname}

(3)include 语法:
{dede:include file=''/}
{dede:include filename=''/}
{dede:include file='文件名称' ismake='是否为dede板块模板(yes/no)'/}
例如: {dede:include filename="head.htm"/}
对文件的搜索路径为顺序为:绝对路径、include文件夹,CMS安装目录,CMS主模板目录

2、函数和PHP语法

if 条件
仅支持 if ,else ,else 直接用{else}表示,但不支持{else if}这样的语法 ,一般建议模板中不要使用太复杂的条件语法,如果确实有需要,可以直接使用 php 语法。

XML/HTML代码
  1. {dede:if 条件}  
  2.     a-block  
  3. {else}  
  4.     b-block  
  5. {/dede:if}  
条件中允许使用 var.name 、 global.name 、 field.name、cfg.name 表示相应的变量。
如:
XML/HTML代码
  1. {dede:if field.id>10 }  
  2. {/dede:if}  
php 代码块:
XML/HTML代码
  1. {dede:php  
  2. php 代码  
  3. /}  
XML/HTML代码
  1. {dede:php}  
  2. php代码  
  3. {/dede:php}  
......其它还在整理中

Tags: dedecms, 笔记, tag, 标签用法

dedecms:如何在runphp=yes的标签中使用其他field值

dedecms有强大的TAG自定义功能,但如果你是在runphp=yes的情况下,你无法使用[field]等标签,因为它不解释了(都当成PHP代码了,怎么可能解析呢?)
怎么办?
查了一下google,没有发现解决方法。所以我想了很久想出一个临时性的解决方法,即用全局变量来解决这个问题。。
{dede:php}$GLOBALS['xxoo']=$arc->Fields['fieldname']{/dede:php}
{dede:field.xxxx runphp="yes"}@me="test".@me."-test".$GLOBALS['xxoo'];{/dede:field.xxxx}
即,先开一个PHP的标签,把想赋的值替换给global变量。然后在另外的运行中将field值赋值给他。

写的乱,不过还是解决了这个问题了。。

Tags: dedecms, runphp, field

dedecms 笔记

不管怎么样,还是用到了dedecms。由于以前一直用supesite,对它不熟悉,所以做点笔记。

1、添加字段。如果你想增加自定义字段,但又不想修改数据库,可以尝试存成TAG。举例。在用户上传图片的时候,album_add,存到数据库里可能就是{dede:img xx}。代表了相册中的图片,每一张图片都是这样的一个标记。因此,我在这个最后增加了{dede:custom}类似的TAG,用来存放在这个页里涉及的増加的变量。偷懒的解决方法

2、读取数据显示到模版里。原来的我一直以为要写taglib,后来翻了手册才知道,原来还有{dede:loop }标签,可以指定表,排序字段和ifcause条件。比较方便。而且,如果你真的要写taglib,事实上也就可以参考这个函数来写了。

3、循环次数,发现循环次数是用全局变量来实现的。。。也就是说可以用[field:global.autoindex/]来显示。。很妖。。因此每个taglib都有将它置为0的用法。

4、针对2,其实还有一个更无耻的方法,那就是:{dede:sql sql=""}底层模板{/dede:sql},这样,你还可以更偷懒一点。

当然更多的还是需要看官方文档。在这里http://help.dedecms.com/v53/。虽然是5.3的不过还是可以做一些参考。。。

Tags: dedecms, 笔记

一些笔记

单独开个题目吧,觉得太小,所以以笔记的形式列出来,这样感觉会比较好一点
1、dedecms相关
dedecms用的人很多,但不限于,我用的还是很少的,所以看到一些东西就认为应该记录下来,比如这个{dede:loop}标签,就是查询后生成一个数组,然后循环。对于简单的数据读取还算是比较方便。当然也有缺点,没看到有缓存生成(我不知道是不是用了tag就自动缓存,不过我想应该不是,生成静态的话就忽略这点问题了吧。)只是现在还不知道如何将页码参数传进去。。。

2、创业

这里并不是说我的创业故事,当然我也有创业的想法,我这里是两个人对于创业的看法,一个是awflasher(http://www.awflasher.com/blog/archives/1829),他说:【借此,我想顺便说一点我的看法:为了让员工的风险降到最低全力工作,创业公司的薪水应该略高于大公司,那些号称是创业阶段要压低薪水或者拖欠薪水的公司, 如果没有股份可以不考虑了(证明管理团队的盈利能力太弱,这种公司风险太大);另外,我认为在中国,真的要慎用“股权”这个概念,这个概念不适用于大多数 人,在我这个行业内,我亲眼目睹了一个例子:有几家公司给出低薪+大量股份,而有一家公司给出高薪,结果后者很快就发展壮大了,而那几家把薪水压低出让股 份的公司几乎都死掉了。】还有一个就是DBA Notes(http://www.dbanotes.net/jobs/Jobs_info.html)上的【从大公司出来,投身创业团队。遇到的最大问题就是招聘问题。创业公司,薪水不可能像上市公司那样大方,公司福利也做不到国企那要啥有啥。好不容易瞄上个技 术差不多的,仔细沟通下来,人家还未必愿意一起来参与创业,更想着找个钱多人傻、事少家近的地方,不能破坏人家美好生活不是。其它包括地域问题的、家庭原 因的... 所以,招聘是个困难活儿,也是个持久战。创业团队,只能慢慢来,只找合适的,找对的。】

总之,创业是一个痛苦的事情。。以前在cnblog上看吉日嘎拉说自己的创业故事,说到创业时觉得要买这个买那个,等到买回来发现,大多数实际上可以不买,反而浪费了自己的精力和钱的时候。就觉得创业真的是需要考虑的事情。

3、php A-Z的循环问题

php的A-Z循环并不和其他程序一样。只是长度为26的循环,相反,PHP follows Perl’s convention when dealing with arithmetic operations on character variables and not C’s. For example, in Perl ‘Z’+1 turns into ‘AA’, while in C ‘Z’+1 turns into ‘[‘ ( ord(‘Z’) == 90, ord(‘[‘) == 91 ). Note that character variables can be incremented but not decremented and even so only plain ASCII characters (a-z and A-Z) are supported.这个信息来自http://www.laruence.com/2010/07/30/1682.html,以前真的一直不知道。或者说没有注意过。

Tags: dedecms

PHP分词索引

  众所周知,英文是以词为单位的,词和词之间是靠空格隔开,而中文是以字为单位,句子中所有的字连起来才能描述一个意思。例如,英文句子I am a student,用中文则为:“我是一个学生”。计算机可以很简单通过空格知道student是一个单词,但是不能很容易明白“学”、“生”两个字合起来 才表示一个词。把中文的汉字序列切分成有意义的词,就是中文分词,有些人也称为切词。我是一个学生,分词的结果是:我是 一个 学生。
目前主流的中文分词算法有:

1、 基于字符串匹配的分词方法

这种方法又叫做机械分词方法,它是按照一定的策略将待分析的汉字串与一个“充分大的”机器词典中的词条进行配,若在词典中找到某个字符串,则匹配成功 (识别出一个词)。按照扫描方向的不同,串匹配分词方法可以分为正向匹配和逆向匹配;按照不同长度优先匹配的情况,可以分为最大(最长)匹配和最小(最 短)匹配;按照是否与词性标注过程相结合,又可以分为单纯分词方法和分词与标注相结合的一体化方法。常用的几种机械分词方法如下:
1)正向最大匹配法(由左到右的方向);
2)逆向最大匹配法(由右到左的方向);
3)最少切分(使每一句中切出的词数最小)。
还可以将上述各种方法相互组合,例如,可以将正向最大匹配方法和逆向最大匹配方法结合起来构成双向匹配法。由于汉语单字成词的特点,正向最小匹配和逆向 最小匹配一般很少使用。一般说来,逆向匹配的切分精度略高于正向匹配,遇到的歧义现象也较少。统计结果表明,单纯使用正向最大匹配的错误率为1/169, 单纯使用逆向最大匹配的错误率为1/245。但这种精度还远远不能满足实际的需要。实际使用的分词系统,都是把机械分词作为一种初分手段,还需通过利用各 种其它的语言信息来进一步提高切分的准确率。
一种方法是改进扫描方式,称为特征扫描或标志切分,优先在待分析字符串中识别和切分出一些带有明 显特征的词,以这些词作为断点,可将原字符串分为较小的串再来进机械分词,从而减少匹配的错误率。另一种方法是将分词和词类标注结合起来,利用丰富的词类 信息对分词决策提供帮助,并且在标注过程中又反过来对分词结果进行检验、调整,从而极大地提高切分的准确率。
对于机械分词方法,可以建立一个一般的模型,在这方面有专业的学术论文,这里不做详细论述。

2、 基于理解的分词方法

这种分词方法是通过让计算机模拟人对句子的理解,达到识别词的效果。其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来处理歧义 现象。它通常包括三个部分:分词子系统、句法语义子系统、总控部分。在总控部分的协调下,分词子系统可以获得有关词、句子等的句法和语义信息来对分词歧义 进行判断,即它模拟了人对句子的理解过程。这种分词方法需要使用大量的语言知识和信息。由于汉语语言知识的笼统、复杂性,难以将各种语言信息组织成机器可 直接读取的形式,因此目前基于理解的分词系统还处在试验阶段。

3、 基于统计的分词方法

从形式上看,词是稳定的字的组合,因此在上下文中,相邻的字同时出现的次数越多,就越有可能构成一个词。因此字与字相邻共现的频率或概率能够较好的反映 成词的可信度。可以对语料中相邻共现的各个字的组合的频度进行统计,计算它们的互现信息。定义两个字的互现信息,计算两个汉字X、Y的相邻共现概率。互现 信息体现了汉字之间结合关系的紧密程度。当紧密程度高于某一个阈值时,便可认为此字组可能构成了一个词。这种方法只需对语料中的字组频度进行统计,不需要 切分词典,因而又叫做无词典分词法或统计取词方法。但这种方法也有一定的局限性,会经常抽出一些共现频度高、但并不是词的常用字组,例如“这一”、“之 一”、“有的”、“我的”、“许多的”等,并且对常用词的识别精度差,时空开销大。实际应用的统计分词系统都要使用一部基本的分词词典(常用词词典)进行 串匹配分词,同时使用统计方法识别一些新的词,即将串频统计和串匹配结合起来,既发挥匹配分词切分速度快、效率高的特点,又利用了无词典分词结合上下文识 别生词、自动消除歧义的优点。

值此,放上收藏的三篇文章和程序
1、yhustc的分词词库(采用sqlite,无词频分析,下载地址为:http://www.neatcn.com/dict/dict.tar.gz,在http://www.neatcn.com/dict/有简单的试用,也可以通过http://www.neatcn.com/dict/test.php?type=json&encode=gbk&contents=xxx等调用返回),

2、dede的分词,(织梦的算法:http://www.dedecms.com/html/chanpinxiazai/20061229/3.html#,该页同时有演示,采用CSV文件)

3、一篇比较老的分词程序:http://www.neatcn.com/show-592-1.shtml

Tags: 分词, yhustc, dedecms