永久设置与临时设置环境变量
使用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)/] |
具体怎么实现功能,还要看自己网站的实际情况了。