整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

如何让dedecms实现shtml


何让dedecms实现shtml


让dedecms实现shtml包含,这个是十分简单,也是十分轻松的一个问题。我们可以通过对dedecms的二次开发,实现对dedecms顶部导航,中间部分,右边公共部分,以及底部

推荐学习:织梦cms

让dedecms实现shtml包含,这个是十分简单,也是十分轻松的一个问题。我们可以通过对dedecms的二次开发,实现对dedecms顶部导航,中间部分,右边公共部分,以及底部,都有一个很好的支持,从而减少html生成的时候频繁的消耗系统资源去生成dedecms的html功能。这样可以加快dedecms生成html的速度。

首先我们要实现一个对dedecms栏目右边实现shtml包含。有关dedecms配置shtml环境,上篇文章都讲述过了。

1:首先建立右边公共模板templates/default/right.htm

2:编写以下标签

代码如下:

function lib_shtml(&$ctag,&$refObj)

{

if(isset($_GET['tid'])){

return file_get_contents('../data/'.$refObj->Fields['id'].'right.htm');

}else{

return '<!--#include virtual="'.$GLOBALS['cfg_cmspath'].'/data/'.$refObj->Fields['id'].'right.htm"-->';

}

}

3:生成栏目的时候,生成对应栏目的右边。

arc.listview.class.php

代码如下:

var $tcp1;

var $tcp3;</p> <p> $this->tcp1 = new DedeTagParse();

$this->tcp1->SetRefObj($this);

$this->tcp1->SetNameSpace("dede", "{", "}");

加载right.htm模板

$this->tcp1->LoadTemplate($GLOBALS['cfg_basedir'].$GLOBALS['cfg_templets_dir']."/".$GLOBALS['cfg_df_style']."/right.htm");

生成html

$file = $this->Fields['id'].'right.htm';

$rightfile = $GLOBALS['cfg_basedir'].$GLOBALS['cfg_cmspath']."/data/".$file;

if(!file_exists($rightfile)){

$this->tcp1->SaveTo($rightfile);

}else{

if((time()-filectime($rightfile))>3600){

$this->tcp1->SaveTo($rightfile);

}

}

给模板赋值

MakeOneTag($this->tcp1,$this);

4:模板中直接调用{dede:shtml/}

后台生成,就完成了让dedecms实现shtml包含.

以上就是如何让dedecms实现shtml的详细内容,更多请关注下载我资源网( www.xiazaiwo.net)其它相关文章!

昨天飒飒在使用织梦(Dedecms)采集侠时,在定向采集文章URL设置过程中遇到了不少问题,虽然有官方演示做参照,但是亦不觉得全面,导致经常会采集失败。下面飒飒来给大家例举一些官方文档没有详细明说的定向采集文章URL设置。

官方文档给出的列表URL设置方法如下:

例:

比如我要采集站长之家优化栏目里面的文章,他们的文章URL是

http://www.xxx.com/web/2013/0988/215508.shtml

http://www.xxx.com/web/2013/0988/215505.shtml

http://www.xxx.com/web/2013/0988/215594.shtml

通配后的URL就是:http://www.xxx.com/web/(*)/(*)/(*).shtml

但是大多数时候我们会设置成:

http://www.xxx.com/web/2013/0988/215(*).shtml或

http://www.xxx.com/web/2013/0988/(*).shtml或

http://www.xxx.com/web/2013/(*)/(*).shtml或

http://www.xxx.com/web/(*)/0988/(*).shtml

虽然以上的通配URL也能实现采集,但是不是完整的通配。

小技巧:以后在设置列表URL时,遇见数字的全部采用通配符,准没错!

以下来说说官方文档未列出但又常见的URL:

例1:

http://news.xxx.cn/cs/2016-11-17/11252550.html

http://news.xxx.cn/cs/2016-11-17/11252538.html

http://news.xxx.cn/cs/2016-11-17/11252516.html

这样的文章链接该如何写通配URL呢?想必有不少小伙伴会如下写:

http://news.xxx.cn/cs/(*)/(*).html

但是采集测试时,会告诉你采集失败,说明通配URL错误,那该如何设置呢?

正确设置方法http://news.xxx.cn/cs/(*)-(*)-(*)/(*).html

例2:

http://www.xxx.com/?p=5122

http://www.xxx.com/?p=5123

这是动态页面,没有生成伪静态或静态URL,也同样可以使用通配规则吗?

飒飒在此将结果告诉你:可以使用通配规则

正确设置方法http://www.xxx.com/?p=(*)

TIPS:当然,必须补充一点,不是所有文章URL设置正确之后就可以采集,采集器都是有限制的,比如那个网站设置了防采集功能,无论你在采集设置上面做多少努力,都是徒劳,所以,在设置采集时,先测试,很重要!一些大站或者牛逼的网站一般都有防采集设置!

总结

1.当设置文章通配URL时,如遇到非数字的,一律不能用通配符(*),必须保留,方可正确采集。URL中常见的非数据有英文字母,-,_,?等。

2.URL通配规则一定要写全,写完后注意检查通配URL中是否含有数字,如含有,则通配URL为完成,将数字修改成通配符之后再保存采集,在将来对方网站修改URL命名时,方能以不变应万变。屏蔽你采集IP除外。

以上就是飒飒整理的织梦(Dedecms)采集侠定向采集文章URL设置大全,希望小伙伴和飒飒一起完善采集设置,让那么困难采集不再难!


、程序一定要从织梦官网下载,其他地方下载的不能保证安全。

二、下载后的程序在正常运行后,要删除下列文件夹(根据你的需要选择删除)。

member 会员文件夹整个删除

special 专题文件夹整个删除

install 安装文件夹整个删除

robots.txt 文件删除

删除 /templets/default 官方默认模板这个文件夹(在你自己有模板的情况下,如果没有,请勿删除)

删除PLUS文件夹除下列文件外的所有文件,保留下面几个文件。

/plus/img (文件夹)

/plus/count.php

/plus/diy.php

/plus/list.php

/plus/search.php

/plus/view.php

三、修改默认后台管理目录名称,安装时不要用默认的admin当管理员帐号及密码。

四、修复刚刚下载的织梦最新程序包里已知漏洞

打开 /include/dialog/select_soft_post.php 搜索


$fullfilename = $cfg_basedir.$activepath.'/'.$filename;

在它上面加入


if (preg_match('#.(php|pl|cgi|asp|aspx|jsp|php5|php4|php3|shtm|shtml)[^a-zA-Z0-9]+$#i', trim($filename))) {
	ShowMsg("你指定的文件名被系统禁止!",'javascript:;');
	exit();
}

打开 /dede/media_add.php 找到(dede是你网站管理后台目录名称)


$fullfilename = $cfg_basedir.$filename;

在它上面加入


if (preg_match('#.(php|pl|cgi|asp|aspx|jsp|php5|php4|php3|shtm|shtml)[^a-zA-Z0-9]+$#i', trim($filename))){
	ShowMsg("你指定的文件名被系统禁止!",'java script:;');
	exit();
}

打开/dede/config.php

搜索


if(!isset($token) || strcasecmp($token, $_SESSION['token']) != 0){

大约在67行,把它替换为


if(!isset($token) || strcasecmp($token, $_SESSION['token']) !== 0){


五、利用伪静态功能禁止以下目录运行php脚本

apache环境


<rule name="Block data" stopProcessing="true">
	<match url="^data/(.*).php$" />
	<conditions logicalGrouping="MatchAny">
		<add input="{USER_AGENT}" pattern="data" />
		<add input="{REMOTE_ADDR}" pattern="" />
	</conditions>
	<action type="AbortRequest" />
</rule>
<rule name="Block templets" stopProcessing="true">
	<match url="^templets/(.*).php$" />
	<conditions logicalGrouping="MatchAny">
		<add input="{USER_AGENT}" pattern="templets" />
		<add input="{REMOTE_ADDR}" pattern="" />
	</conditions>
	<action type="AbortRequest" />
</rule>
<rule name="Block SomeRobot" stopProcessing="true">
	<match url="^uploads/(.*).php$" />
	<conditions logicalGrouping="MatchAny">
		<add input="{USER_AGENT}" pattern="SomeRobot" />
		<add input="{REMOTE_ADDR}" pattern="" />
	</conditions>
	<action type="AbortRequest" />
</rule>

iis环境


location ~* /(a|data|templets|uploads|images)/(.*).(php)$ {
	return 403;
}

Nginx环境

这段配置代码一定要放在 location ~ .php(.*)$ 的前面才可以生效,配置完后记得重启Nginx生效。


location ~* /(a|data|templets|uploads|images)/(.*).(php)$ {
	return 403;
}

宝塔面板在配置文件里面。加在红框上面即可。如下图

给所有站加上的话。请打开下面路径,根据你的PHP版本找到相应的文件。我这里是5.4版本的。

在最上面添加上面代码,然后重启服务。亲测有效。

检测设置成功的方法,新建一个随意内容的php文件放到a|data|templets|uploads任意文件夹,如果访问出现4.3错误,说明设置正常。如果显示你刚才设置的内容,刚是失败。按步骤好好检测一下看看是不是设置错误。

六、网站上有一个爆网站后台的方法:就是访问/data/mysql_error_trace.inc或者/data/mysqli_error_trace.inc,分析里面的代码来爆网站后台。可在伪静态配置文件里加入下面代码即可,这是nginx下的配置文件,亲测有效,其他运行环境自行转换


location /data {
rewrite ^/data\/(.*)$ /404.html;
}

这样,访问DATA的文件全都会提示404错误。亲测有效!

我们可以关闭这个生成这个文件

方法:

打开 /include/dedesql.class.php 找到


//保存MySql错误日志
$fp = @fopen($errorTrackFile, 'a');
@fwrite($fp, '<'.'?php  exit();'."\r\n/*\r\n{$savemsg}\r\n*/\r\n?".">\r\n");
@fclose($fp);

这几行删除就行了,如果你的 data 文件夹里面有 mysql_error_trace.inc 文件,记得删除它。


同理我们还可以设置禁止访问

location /plus {
rewrite ^/plus\/(\w+)\.php(.*)$ /404.html;
}
location /templets {
rewrite ^/templets/(.*)/(.*).htm$ /404.html;
}
location /uploads {
rewrite ^/uploads\/(\w+)\.php(.*)$ /404.html;
}

等目录