1、进入后台–系统–系统设置–系统基本参数–其他选项–文档标题最大程度改为你要的长度原默认是60(这里改为了200)
2、登陆数据库,改数据库表dede_archives表里面的title字段,原默认是60,(这里改为200).
0 |
ALTER TABLE dede_archives CHANGE title title VARCHAR(200) |
说它是自动识别,其实只是用了字符串切割的方法,如果勾选提取第一个图片萎缩路人图的话,文章的缩略图和第一张图片只多了一个“-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)/] |
具体怎么实现功能,还要看自己网站的实际情况了。
一、在文件 /include/common.inc.php 中的“define('DEBUG_LEVEL', FALSE);
”后增加如下代码:
0 1 2 3 4 5 6 7 8 9 |
/* ============织梦先生>>=============== */ /* 定义当前请求的系统常量 */ define('NOW_TIME', $_SERVER['REQUEST_TIME']); define('REQUEST_METHOD',$_SERVER['REQUEST_METHOD']); define('IS_GET', REQUEST_METHOD =='GET' ? true : false); define('IS_POST', REQUEST_METHOD =='POST' ? true : false); define('IS_PUT', REQUEST_METHOD =='PUT' ? true : false); define('IS_DELETE', REQUEST_METHOD =='DELETE' ? true : false); define('IS_AJAX', ((isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') || !empty($_POST['ajax']) || !empty($_GET['ajax'])) ? true : false); /* ============<<织梦先生=============== */ |
二、在文件 /include/help/helpers\extend.helper.php 最后增加如下代码: Continue reading
实例:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<div class="box-body"> <dl class="tags-box clearfix"> <dt>热门</dt> <dd> {dede:tag row='10' sort='month' getall='1' typeid='2,3,4,6'} <a href="[field:link/]" target="_blank">[field:tag/]</a> {/dede:tag} </dd> </dl> <dl class="tags-box clearfix"> <dt>推荐</dt> <dd> {dede:tag row='10' sort='new' getall='1' typeid='2,3,4,6'} <a href="[field:link/]" target="_blank">[field:tag/]</a> {/dede:tag} </dd> </dl> </div> |
修改文件 /include/taglib/tag.lib.php 约第66行
把
0 |
$addsql = " WHERE typeid='$typeid' "; |
改为
0 |
$addsql = " WHERE typeid IN ($typeid) "; |
说明:在模板中调用时保证getall=’1′,并且typeid的值是使用英文逗号隔开的数字串或单个文章ID即可。
实例: Continue reading
使用织梦系统的文档关键词维护,假如增加两个关键词为“织梦”和“织梦先生”,那么在文章中出现“织梦先生”这个词的时候,锚文本HTML就会出错,我想这是很多用过这个功能的SEOer见到过的。
在很早以前我就发现过,但是因为自己已经很长时间没有使用织梦系统了,只是这次帮助客户修改时,有这个需求,就在这里做一下记录。
需要修改两个函数,都在同一个文件中(include/arc.archives.class.php),一个是类Archives中的ReplaceKeyword()函数,另一个是文件最末尾的_highlight()函数。
修改源码中把织梦原版代码注释掉了,以便比较源码和理解修改思路,源码如下: Continue reading
最近发现有很多朋友来到我的某篇文章中找“织梦结合小程序”的方法,但是我那篇文章不是关于这个问题的记录,所以在这里做一个织梦结合小程序的方法的外部链接吧,
这里有详细的文字和视频介绍,如果看不明白,他可联系作者,如果还是不明白可以联系我,一同研究。
linux下的文件结构,看看每个文件夹都是干吗用的
/bin二进制可执行命令
/dev设备特殊文件
/etc系统管理和配置文件
/etc/rc.d启动的配置文件和脚本
/home用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示
/lib标准程序设计库,又叫动态链接共享库,作用类似windows里的.dll文件
/sbin系统管理命令,这里存放的是系统管理员使用的管理程序
/tmp公用的临时文件存储点
/root系统管理员的主目录(呵呵,特权阶级)
/mnt系统提供这个目录是让用户临时挂载其他的文件系统。
/lost+found这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows下叫什么.chk)就在这里
/proc虚拟的目录,是系统内存的映射。可直接访问这个目录来获取系统信息。
/var某些大文件的溢出区,比方说各种服务的日志文件
/usr最庞大的目录,要用到的应用程序和文件几乎都在这个目录。其中包含:
/usr/x11r6存放xwindow的目录
/usr/bin众多的应用程序
/usr/sbin超级用户的一些管理程序
/usr/doclinux文档
/usr/includelinux下开发和编译应用程序所需要的头文件
/usr/lib常用的动态链接库和软件包的配置文件
/usr/man帮助文档
/usr/src源代码,linux内核的源代码就放在/usr/src/linux里
/usr/local/bin本地增加的命令
/usr/local/lib本地增加的库 Continue reading
先来看一个简单的例子吧。
0 |
var str = "123X321".replace("X", "$'"); |
替换后的 str 是什么呢?
是 ”123$’321″ 。。。吗??
如果你的浏览器是 IE6-8 的话,确实是这个结果,可是那只是变态IE的结果。
标准浏览器下会是什么呢?
0 1 |
var str = "123X321".replace("X", "$'"); console.log(str); |
竟然是 ”123321321″ 为什么会是这个结果呢?
还是看权威的文档吧,《Specifying a string as a parameter》。
在这里,我们可以看到 $$, $&, $, $' 和 $n/$nn 的格式。
相信很多学过 js 正则的应该都用印象。
其实我一直以为只有在正则里才能用这些替换参数,直到前些天被坑才真正掌握这个知识点。
其实 $$, $&, $, $’ 在普通字符串替换时也可以使用
$$ 表示 $ 字符
$& 表示匹配到的字符
$` 表示匹配到的字符之前的那部分
$’ 表示匹配到的字符之后的那部分
但是 $n 或 $nn 只有在正则模式捕获组才能使用。
例如
0 1 2 3 4 5 6 7 8 9 |
var str = "123X321"; console.log( "$$", str.replace("X", "$$") ); // X 换成了 $ console.log( "$&", str.replace("X", "$&") ); // X 换成了 X console.log( "$`", str.replace("X", "$`") ); // X 换成了 123 console.log( "$'", str.replace("X", "$'") ); // X 换成了 321 console.log( "$'", str.replace(/X/, "$'") ); // X 换成了 321 // $n 这种格式只有正则能用 console.log( "$1", str.replace(/(X)(\d)/, "$1") ); // X3 换成了 X console.log( "$2$1", str.replace(/(X)(\d)/, "$2$1") ); // X3 换成了 3X |
在某自自定义的会员页面中调用指定栏目(typeid=’36′)最新文章,前提是这个页面允许直接使用PHP代码,循环中使用GetOneArchive函数,带入文章ID,返回的是数组,$url['arcurl']即为此文章链接。
0 1 2 3 4 5 6 7 8 |
<?php $sql="SELECT id,title FROM `dede_archives` WHERE typeid='36' ORDER BY pubdate DESC LIMIT 0,12"; $dsql->Execute('me',$sql); while($arr = $dsql->GetArray('me')) { $url=GetOneArchive($arr['id']); echo "<li><a href=\"{$url['arcurl']}\" target=\"_blank\">{$arr['title']}</a></li>\n"; } ?> |
找到文件/include/extend.func.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 25 26 27 28 29 30 31 32 33 34 35 36 |
/**************** function GetOneImgUrl @@ 功能:读取自定义字段数据类型为“图片”时的地址 [field:自定义图片字段名 function="GetOneImgUrl(@me,显示类型)"/] [field:imgurl function='GetOneImgUrl(@me,0)'/] <!--调用图片的信息,自动调用宽度和高度(已包含Html代码的<img />标签)--> [field:imgurl function='GetOneImgUrl(@me,1)'/] <!--只调用图片地址,一般可用于背景图嵌套--> 下面三行是实际调用中的写法 {dede:arclist row='5′ typeid='6' orderby='id' channelid='17′ addfields='imgurl'} <li>[field:title/][field:imgurl function='GetOneImgUrl(@me,0)'/]</li> {/dede:arclist} *****************/ function GetOneImgUrl($img,$ftype=1){ if($img <> ''){ $dtp = new DedeTagParse(); $dtp->LoadSource($img); if(is_array($dtp->CTags)){ foreach($dtp->CTags as $ctag){ if($ctag->GetName()=='img'){ $width = $ctag->GetAtt('width'); $height = $ctag->GetAtt('height'); $imgurl = trim($ctag->GetInnerText()); $img = ''; if($imgurl != ''){ if($ftype==1){ $img .= $imgurl; } else{ $img .= '<img src="'.$imgurl.'" width="'.$width.'" height="'.$height.'" />'; } } } } } $dtp->Clear(); return $img; } } |