Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
何讓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
打開 /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){
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錯誤,說明設置正常。如果顯示你剛才設置的內容,剛是失敗。按步驟好好檢測一下看看是不是設置錯誤。
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;
}
等目錄
*請認真填寫需求信息,我們會在24小時內與您取得聯系。