永久设置与临时设置环境变量
使用set进行环境变量设置时,只对当前对话框程序有效。当cmd设置对话框关闭时,环境变量复原。如:
set PATH=%PATH%;C:\Program Files\
永久修改系统环境变量。使用setx 。如:
setx PATH "%PATH%;C:\Program Files\" /M
一、环境变量的作用: Continue reading
永久设置与临时设置环境变量
使用set进行环境变量设置时,只对当前对话框程序有效。当cmd设置对话框关闭时,环境变量复原。如:
set PATH=%PATH%;C:\Program Files\永久修改系统环境变量。使用setx 。如:
setx PATH "%PATH%;C:\Program Files\"  /M一、环境变量的作用: Continue reading
关键词 “必须”(“MUST”)、“一定不可/一定不能”(“MUST NOT”)、“需要”(“REQUIRED”)、 “将会”(“SHALL”)、“不会”(“SHALL NOT”)、“应该”(“SHOULD”)、“不该”(“SHOULD NOT”)、 “推荐”(“RECOMMENDED”)、“可以”(“MAY”)和”可选“(“OPTIONAL”)的详细描述可参见 [RFC 2119][] 。
本 PSR 是关于由文件路径 [自动载入][http://tools.ietf.org/html/rfc2119] 对应类的相关规范, 本规范是可互操作的,可以作为任一自动载入规范的补充,其中包括 PSR-0,此外, 本 PSR 还包括自动载入的类对应的文件存放路径规范。
class类、接口、traits可复用代码块以及其它类似结构。| 
					 0  | 
						\<命名空间>(\<子命名空间>)*\<类名>  | 
					
ii. 完整的类名 可以 有一个或多个子命名空间;
iii. 完整的类名 必须 有一个最终的类名;
iv. 完整的类名中任意一部分中的下滑线都是没有特殊含义的;
v. 完整的类名 可以 由任意大小写字母组成;
vi. 所有类名都 必须 是大小写敏感的。
3.当根据完整的类名载入相应的文件…… Continue reading
Java有Maven, Node.js有npm, ROR有gem, 这些语言的程序员在开心地使用包管理工具加速开发效率时,PHPer们还在复制粘贴的黑暗中。PHP在Composer之前,包管理的历史不堪回首。
在相当长的一段时间内,如果应用依赖于第三方库,PHPer需要拷贝这些库的源代码, 或者通过PEAR、PECL安装。如果第三方库又依赖于更多的第三方库,那么很快就会进入依赖的黑洞。直到Composer出现,PHPer们看到了属于PHP的包管理的曙光。 Continue reading
在文件 include/taglib/channelartlist.lib.php第67行左右,
查找:
| 
					 0  | 
						$tpsql = " reid=0 AND ispart<>2 AND ishidden<>1 AND channeltype>0 ";  | 
					
修改为:
| 
					 0  | 
						$tpsql = " reid=0 AND ishidden<>1 AND channeltype>0 ";  | 
					
即删除 AND ispart<>2 
完成。
栏目为外部链接时默认使用新窗口打开,其它栏目使用当前窗口打开的修改方法。
查找:
| 
					 0  | 
						$pv->Fields['typeurl'] = GetOneTypeUrlA($typeids[$i]);  | 
					
在代码的下一行增加:
| 
					 0 1 2  | 
						if($typeids[$i]['ispart'] == 2){ 	$pv->Fields['typeurl'] = $pv->Fields['typeurl'].'" target="_blank'; }  | 
					
这样,在输出的链接后就自动增加了新窗口打开的代码了。 blank
文件位置:/include/taglib/channelartlist.lib.php
查找:
| 
					 0  | 
						$pv->Fields['typeurl'] = GetOneTypeUrlA($typeids[$i]);  | 
					
上面代码大约在100行左右,在其下方增加代码:
| 
					 0 1 2 3 4  | 
						if($typeids[$i]['id'] == $refObj->TypeLink->TypeInfos['id'] || $typeids[$i]['id'] == $refObj->TypeLink->TypeInfos['topid'] ){ 	$pv->Fields['currentstyle'] = $currentstyle ? $currentstyle : 'active'; }else{ 	$pv->Fields['currentstyle'] = ''; }  | 
					
保存。
使用示例: Continue reading
PHP日志Class,抄来的一个php日志类,略有修改
使用实例
| 
					 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24  | 
						<?php  require_once 'log.php';   //初始化日志 $logHandler= new CLogFileHandler("../logs/".date('Y-m-d')."/".date('Y-m-d-H-i-s').'.log'); // 日志保存位置 $log = Log::Init($logHandler, 15);  // 测试数据 $arr = array('s1'=>2, 's3'=>8); // 测试一 Log::DEBUG("query:" . json_encode($arr)); Log::DEBUG("SUCCESS"); // 测试二 Log::INFO("query:" . json_encode($arr)); Log::INFO("支付成功"); // 测试三 Log::WARN("query:" . json_encode($arr)); Log::WARN("支付出错"); // 测试四 Log::ERROR("query:" . json_encode($arr)); Log::ERROR('程序出错');  | 
					
PHP日志类 Continue reading
5.6之后DEDE加入了文章按权重排序的功能,但很多童鞋调整权重数值,并在arclist标签里加上orderby=’weight’,却发现无任何效果,原因是系统默认是不开启该功能的。
正确的使用方法如下:
{dede:arclist titlelen='38' flag='h' noflag='a' isweight='y' orderby='weight'}
{/dede:arclist}
红色部分就是开启 weight排序,再加上orderby=’weight’,就OK了
——————————————————————————–
另外使用arclist标签时,想按照权重越大越靠前来排序,则需要小动一下arclist.lib.php文件,方法如下:
打开\include\taglib\arclist.lib.php
大概在572行
$orderWeight = list_sort_by($orderWeight, ‘weight’, ‘asc’);
修改为(红色部分)
$orderWeight = list_sort_by($orderWeight, ‘weight’, ‘desc‘);
打开include/arc.searchview.class.php
查找:
| 
					 0 1  | 
						require_once(DEDEINC."/taglib/hotwords.lib.php"); require_once(DEDEINC."/taglib/channel.lib.php");  | 
					
在下面加入:
| 
					 0 1  | 
						require_once(DEDEINC."/taglib/arclist.lib.php");     require_once(DEDEINC."/taglib/channelartlist.lib.php");  | 
					
找到:
| 
					 0 1 2 3  | 
						else if($tagname=="hotwords")                 {                     	$this->dtp->Assign($tagid,lib_hotwords($ctag,$this)); }  | 
					
在下面插入:
| 
					 0 1 2 3 4 5 6 7  | 
						else if($tagname=="arclist") {                     	$this->dtp->Assign($tagid,lib_arclist($ctag,$this));   }                 else if($tagname=="channelartlist")    {                     	$this->dtp->Assign($tagid,lib_channelartlist($ctag,$this));   }  | 
					
这样就可在dedecms织梦搜索页面使用arclist和channelartlist标签调用数据了。
说它是自动识别,其实只是用了字符串切割的方法,如果勾选提取第一个图片萎缩路人图的话,文章的缩略图和第一张图片只多了一个“-lp”的字符串,
用php的“str_replace”函数切割一下就行了。方法如下:
打开 /include/common.func.php在最后面加入如下代码:
| 
					 0 1 2 3 4  | 
						function firstpic($str_pic)  {      $str_sub=str_replace("-lp","","$str_pic");  //删除缩略图中的"-lp"。     return $str_sub;  }  | 
					
标签中调用:
| 
					 0  | 
						[field:litpic function=firstpic('@me')/]  | 
					
直接调用:
| 
					 0  | 
						{dede:field name='litpic' function="firstpic(@me)"/}  | 
					
通过比较明显第二种方法比较好。但是如果自己上传缩略图的话,第二种就用不了了,这时候就要再用另一种方法:
打开 /include/helpers/archive.helper.php 在最后面加入如下代码
| 
					 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19  | 
						/**  *  调用缩略图的原始图片  *  * @param     string 	aid  * @return    string  */ if(!function_exists('getImgs')) {     function getImgs($aid)     {         global $dsql;         $query = "SELECT channel FROM `#@__archives` WHERE id='$aid'"; 		$row = $dsql->GetOne($query); 		$row = GetChannelTable($row['channel']);         $query = "select body FROM `{$row['addtable']}` where aid='$aid'";         $row = $dsql->GetOne($query);         preg_match('/<img[^>]*src[=\"\'\s]+([^\.]*\.[^\"\'>]*)[\"\']?[^>]*>/',$row['body'],$arr);         return $arr[1];     } }  | 
					
或者,可以简化一些:
| 
					 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15  | 
						/**  *  调用缩略图的原始图片  *  * @param     string 	aid  * @return    string  */ if(!function_exists('getImgs')) {     function getImgs($aid)     {         $query = "select body FROM `#@__addonarticle` where aid='$aid'";         $row = $dsql->GetOne($query);         preg_match('/<img[^>]*src[=\"\'\s]+([^\.]*\.[^\"\'>]*)[\"\']?[^>]*>/',$row['body'],$arr);         return $arr[1];     } }  | 
					
标签中调用:
| 
					 0  | 
						[field:id function=getImgs(@me)/]  | 
					
具体怎么实现功能,还要看自己网站的实际情况了。