何讓dedecms實(shí)現(xiàn)shtml
讓dedecms實(shí)現(xiàn)shtml包含,這個(gè)是十分簡(jiǎn)單,也是十分輕松的一個(gè)問題。我們可以通過(guò)對(duì)dedecms的二次開發(fā),實(shí)現(xiàn)對(duì)dedecms頂部導(dǎo)航,中間部分,右邊公共部分,以及底部
推薦學(xué)習(xí):織夢(mèng)cms
讓dedecms實(shí)現(xiàn)shtml包含,這個(gè)是十分簡(jiǎn)單,也是十分輕松的一個(gè)問題。我們可以通過(guò)對(duì)dedecms的二次開發(fā),實(shí)現(xiàn)對(duì)dedecms頂部導(dǎo)航,中間部分,右邊公共部分,以及底部,都有一個(gè)很好的支持,從而減少html生成的時(shí)候頻繁的消耗系統(tǒng)資源去生成dedecms的html功能。這樣可以加快dedecms生成html的速度。
首先我們要實(shí)現(xiàn)一個(gè)對(duì)dedecms欄目右邊實(shí)現(xiàn)shtml包含。有關(guān)dedecms配置shtml環(huán)境,上篇文章都講述過(guò)了。
1:首先建立右邊公共模板templates/default/right.htm
2:編寫以下標(biāo)簽
代碼如下:
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:生成欄目的時(shí)候,生成對(duì)應(yīng)欄目的右邊。
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:模板中直接調(diào)用{dede:shtml/}
后臺(tái)生成,就完成了讓dedecms實(shí)現(xiàn)shtml包含.
以上就是如何讓dedecms實(shí)現(xiàn)shtml的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注下載我資源網(wǎng)( www.xiazaiwo.net)其它相關(guān)文章!
昨天颯颯在使用織夢(mèng)(Dedecms)采集俠時(shí),在定向采集文章URL設(shè)置過(guò)程中遇到了不少問題,雖然有官方演示做參照,但是亦不覺得全面,導(dǎo)致經(jīng)常會(huì)采集失敗。下面颯颯來(lái)給大家例舉一些官方文檔沒有詳細(xì)明說(shuō)的定向采集文章URL設(shè)置。
官方文檔給出的列表URL設(shè)置方法如下:
例:
比如我要采集站長(zhǎng)之家優(yōu)化欄目里面的文章,他們的文章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
但是大多數(shù)時(shí)候我們會(huì)設(shè)置成:
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也能實(shí)現(xiàn)采集,但是不是完整的通配。
小技巧:以后在設(shè)置列表URL時(shí),遇見數(shù)字的全部采用通配符,準(zhǔn)沒錯(cuò)!
以下來(lái)說(shuō)說(shuō)官方文檔未列出但又常見的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呢?想必有不少小伙伴會(huì)如下寫:
http://news.xxx.cn/cs/(*)/(*).html
但是采集測(cè)試時(shí),會(huì)告訴你采集失敗,說(shuō)明通配URL錯(cuò)誤,那該如何設(shè)置呢?
正確設(shè)置方法:http://news.xxx.cn/cs/(*)-(*)-(*)/(*).html
例2:
http://www.xxx.com/?p=5122
http://www.xxx.com/?p=5123
這是動(dòng)態(tài)頁(yè)面,沒有生成偽靜態(tài)或靜態(tài)URL,也同樣可以使用通配規(guī)則嗎?
颯颯在此將結(jié)果告訴你:可以使用通配規(guī)則
正確設(shè)置方法:http://www.xxx.com/?p=(*)
TIPS:當(dāng)然,必須補(bǔ)充一點(diǎn),不是所有文章URL設(shè)置正確之后就可以采集,采集器都是有限制的,比如那個(gè)網(wǎng)站設(shè)置了防采集功能,無(wú)論你在采集設(shè)置上面做多少努力,都是徒勞,所以,在設(shè)置采集時(shí),先測(cè)試,很重要!一些大站或者牛逼的網(wǎng)站一般都有防采集設(shè)置!
總結(jié)
1.當(dāng)設(shè)置文章通配URL時(shí),如遇到非數(shù)字的,一律不能用通配符(*),必須保留,方可正確采集。URL中常見的非數(shù)據(jù)有英文字母,-,_,?等。
2.URL通配規(guī)則一定要寫全,寫完后注意檢查通配URL中是否含有數(shù)字,如含有,則通配URL為完成,將數(shù)字修改成通配符之后再保存采集,在將來(lái)對(duì)方網(wǎng)站修改URL命名時(shí),方能以不變應(yīng)萬(wàn)變。屏蔽你采集IP除外。
以上就是颯颯整理的織夢(mèng)(Dedecms)采集俠定向采集文章URL設(shè)置大全,希望小伙伴和颯颯一起完善采集設(shè)置,讓那么困難采集不再難!
member 會(huì)員文件夾整個(gè)刪除
special 專題文件夾整個(gè)刪除
install 安裝文件夾整個(gè)刪除
robots.txt 文件刪除
刪除 /templets/default 官方默認(rèn)模板這個(gè)文件夾(在你自己有模板的情況下,如果沒有,請(qǐng)勿刪除)
刪除PLUS文件夾除下列文件外的所有文件,保留下面幾個(gè)文件。
/plus/img (文件夾)
/plus/count.php
/plus/diy.php
/plus/list.php
/plus/search.php
/plus/view.php
打開 /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("你指定的文件名被系統(tǒng)禁止!",'javascript:;');
exit();
}
打開 /dede/media_add.php 找到(dede是你網(wǎng)站管理后臺(tái)目錄名稱)
$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("你指定的文件名被系統(tǒng)禁止!",'java script:;');
exit();
}
打開/dede/config.php
搜索
if(!isset($token) || strcasecmp($token, $_SESSION['token']) != 0){
大約在67行,把它替換為
if(!isset($token) || strcasecmp($token, $_SESSION['token']) !== 0){
apache環(huán)境
<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環(huán)境
location ~* /(a|data|templets|uploads|images)/(.*).(php)$ {
return 403;
}
Nginx環(huán)境
這段配置代碼一定要放在 location ~ .php(.*)$ 的前面才可以生效,配置完后記得重啟Nginx生效。
location ~* /(a|data|templets|uploads|images)/(.*).(php)$ {
return 403;
}
寶塔面板在配置文件里面。加在紅框上面即可。如下圖
給所有站加上的話。請(qǐng)打開下面路徑,根據(jù)你的PHP版本找到相應(yīng)的文件。我這里是5.4版本的。
在最上面添加上面代碼,然后重啟服務(wù)。親測(cè)有效。
檢測(cè)設(shè)置成功的方法,新建一個(gè)隨意內(nèi)容的php文件放到a|data|templets|uploads任意文件夾,如果訪問出現(xiàn)4.3錯(cuò)誤,說(shuō)明設(shè)置正常。如果顯示你剛才設(shè)置的內(nèi)容,剛是失敗。按步驟好好檢測(cè)一下看看是不是設(shè)置錯(cuò)誤。
location /data {
rewrite ^/data\/(.*)$ /404.html;
}
這樣,訪問DATA的文件全都會(huì)提示404錯(cuò)誤。親測(cè)有效!
我們可以關(guān)閉這個(gè)生成這個(gè)文件
方法:
打開 /include/dedesql.class.php 找到
//保存MySql錯(cuò)誤日志
$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 文件,記得刪除它。
同理我們還可以設(shè)置禁止訪問
location /plus {
rewrite ^/plus\/(\w+)\.php(.*)$ /404.html;
}
location /templets {
rewrite ^/templets/(.*)/(.*).htm$ /404.html;
}
location /uploads {
rewrite ^/uploads\/(\w+)\.php(.*)$ /404.html;
}
等目錄
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。