宝塔安装网站防篡改程序后,dedecms织梦页面提示DedeTag Engine Create File False
织梦首页是动态预览的,提示DedeTag Engine Create File False
点开防篡改程序“设置”,点击对应网站“保护”,删除“html”,就可以正常访问织梦网站了
宝塔安装网站防篡改程序后,dedecms织梦页面提示DedeTag Engine Create File False
织梦首页是动态预览的,提示DedeTag Engine Create File False
点开防篡改程序“设置”,点击对应网站“保护”,删除“html”,就可以正常访问织梦网站了
WordPress非常重视安全因素,为了防止外部源代码在网页上执行,复制粘贴文章内容的时候,自动将内容中源代码的英文半角符号变为全角符号。虽然这样很安全,但是用户复制代码使用时,需把全角符号改成半角符号,影响了网站的用户体验!
WordPress用户可以根据自己的需要选择是否转换英文半角符号变为全角符号。如果不想转换,网上搜索了一下,找到了如下的二种解决方案:
1、修改主题的functions.php文件
在当前使用的主题下的functions.php文件中加入下面的代码:
<?php remove_filter('the_content', 'wptexturize'); ?>
注意:这行代码加在第一行(即第一个<?php符号之前),或者最后一行(即最后一个?> 符号之后)。因本方法只修改了主题,故博客升级后,无需再次修改。
2、修改wp-includes目录下的formatting.php文件
在wp-includes/formatting.php文件中查找以下代码:
// static strings $curl = str_replace($static_characters, $static_replacements, $curl); // regular expressions $curl = preg_replace($dynamic_characters, $dynamic_replacements, $curl);
在二个$curl前面加//符号把代码注释掉:
// static strings // $curl = str_replace($static_characters, $static_replacements, $curl); // regular expressions // $curl = preg_replace($dynamic_characters, $dynamic_replacements, $curl);
注意:本方法修改了WordPress的系统文件,当WordPress升级后会把修改后的formatting.php文件替换为原版的,需要重新注释代码!因此推荐使用第一种方法修改。
dedecms织梦系统后台有个计划任务功能,相信很多人都不知道怎么用,里面也没有详细说明,这里就通过实际案例来讲解如何使用计划任务让网站每5分钟自动更新首页。
定时更新首页index.html文件,更新的好处就是可以让搜索引擎蜘蛛在爬取index.html的时候,不会返回状态码304 ,搜索引擎会判断你HTML文件的更新时间来与之前索引的时间做对比如果有更新就收录,没更新就置304状态不更新。
下面详细说明计划任务如何使用:
首先进入后台-系统-计划任务管理
进去后可以看到有一个计划任务执行的说明:
计划任务执行的说明
·为了确保任务能执行完全,建议使用Dede的客户端工具,否则只能通过JS触发,但JS触发有很多不确定因素会导致任务不能完成;
·JS触发方式:在所有文档页面中用JS调用/plus/task.php?client=js(必须禁用计划任务的密码,系统配置参数->其它选项);
·自行定制客户端:直接访问“http://网址/plus/task.php?clientpwd=管理密码”,会返回其中一个可执行任务的网址(没有可用任务则返回串:notask),然后客户端运行这个网址即可。
接下来我们新建一个计划任务,任务需要有一个PHP执行文件,用来生成网站首页,此文件大家可以在附件里面下载:
把附件解压开后的dede-post.php 文件上传到网站目录下的plus/task/里
为了可以让网站每隔5分钟更新一次我们还需要修改文件plus/task/task.php
打开task.php把这个$daylimit参数改成300秒——$daylimit = 300;如果需要改成其他时间也可以自己修改,然后上传。到这里基本任务执行的条件都有了,还差一个触发方式。这里我们选择使用JS文件触发方式,这种方式只要有访客访问到就能触发到。如果你网站经常没人访问那就只能手动去访问触发。
我们把代码:<script language=”javascript” src=” /plus/task.php?client=js”></script> 复制放到底部模板footer.htm 里面即可。
这样每当有人访问你的网站的时候就会触发这个JS,让你的执行程序运行一下,也就是网站自动更新了。
本文提到的附件下载地址如下:::
实践通过!验证成功100%!
{dede:loop table=’dede_diyform1′ sort=’id’ row=’1′ if=”}
已经有[field:id/]位报名
{/dede:loop}
自已做了一个自定义表单,用来提交用户的报名。报名的详细信息,我已经通过后台禁止前台观看。但是我想在网站页面上显示,已经有多少人报名。这就需要调用表单提交的数量,我看后台自定义表单中,每个提交的表单前边,都有一个ID号,怎么调用最新的ID号,也就是最高的ID号呢?
我的问题已经解决,是一个哈尔滨的网友帮解决的,因为他留了Q被屏蔽了,无法给他分数了。现在我把答案写下来,供以后需要的人参考。
{dede:loop table=’dede_diyform1′ sort=’id’ row=’1′ if=”}
已经有<a >[field:id/]</a>位报名
{/dede:loop}
其中,dede_diyform1,是你后台建立自定义表单时的“数据表”填写的名称。[field:id/]中id就是用户提交后,后台看到的每一层的id了。
织梦dedecms未审核的文章仍然生成的问题
有时候,我们采集了很多的文章,或者使用的别人的源码,系统中已经带了很多文章数据。全部发布出去这个是不可取的,比较好的办法是把这些文档数据设置为未审核,然后自己手工伪原创处理之后再审核发布。
网上比较常见的办法是使用SQL语句设置,具体的SQL语句如下: Update dede_archives set arcrank = -1,ismake=0; 使用这两条SQL语句之后,所有的文章文档的状态就变成了未审核了。
不过会遇到一个问题,有的是前台动态还可以访问,后台一键生成的时候居然还会生成,只是不会真正的生成文件。产生这种情况的原因是什么呢?其实是织梦DedeCMS的微表和主表的状态没有统一。网上有一种比较死的办法,是把文章删除之后再恢复文章就解决了。
今天要说的还是使用SQL语句解决这个问题。都知道是微表的问题了,只需要使用如下的SQL语句即可解决:
Update dede_arctiny set arcrank = -1;
综合一下,我们在把所有的文章设置为未审核状态的时候,一定要使用以下的SQL语句:
Update dede_archives set arcrank = -1,ismake=0;
Update dede_arctiny set arcrank = -1;
这样就把文章的主表、微表等等的信息都同步了。
比如下面的一段html标签中,如何取出img标签和图片地址:
<div class="good-item"><ul class="clearfix"data-product-list=""><li><a href="/mobile/index/shenruDeatil/id/741"style="position: relative;"><em class="hot-label">热</em><img src="/upload/gallery/thumbnail/4CEDD57F-8D89-3346-129883902F59-tbl.jpg"><div class="good-text"><div class="good-name">1号牛皮纸盒</div><span class="pcolor">¥</span><span class="singlePrice"><!--0.720-->0.72</span><span>/个</span></div></a></li><li><a href="/mobile/index/goodsDeatil/id/257"style="position: relative;"><em class="hot-label">热</em><img src="/upload/gallery/thumbnail/10B4AE18-7B30-7873-D4F03F0842E2-tbl.jpg"><div class="good-text"><div class="good-name">手挽袋</div><span class="pcolor">¥</span><span class="singlePrice"><!--250.00-->250</span><span>/件</span></div></a></li><li><a href="/mobile/index/goodsDeatil/id/249"style="position: relative;"><em class="hot-label">热</em><img src="/upload/gallery/thumbnail/51AAFC9A-188E-2934-937CC221BBF2-tbl.jpg"><div class="good-text"><div class="good-name">4#牛皮纸袋</div><span class="pcolor">¥</span><span class="singlePrice"><!--160.00-->160</span><span>/件</span></div></a></li><li><a href="/mobile/index/goodsDeatil/id/661"style="position: relative;"><em class="hot-label">热</em><img src="/upload/gallery/thumbnail/BEB3E265-347A-5135-789673024100-tbl.jpg"><div class="good-text"><div class="good-name">双童艺术吸管</div><span class="pcolor">¥</span><span class="singlePrice"><!--100.00-->100</span><span>/件</span></div></a></li></ul></div>
我们采用正则表达式的方法获取img标签和图片地址:
PHP代码如下:
preg_match_all('/<img(.*?)>/', $html, $match); //$html = <<<HTML 上面的html文本 >>>;$images = $match[0];foreach ($images as $key=>$val){ preg_match('/<img.+src=\s*[\"|\']?(.+\.(jpg|jpeg|gif|bmp|bnp|png))[\"|\']?.+>/i', $val, $res); $arr[$key]['img_tag'] = $val; $arr[$key]['img_path'] = $res[1];}var_dump(arr);
打印结果如下:
array(4) { [0]=> array(2) { ["img_tag"]=> string(77) "<img src="/upload/gallery/thumbnail/4CEDD57F-8D89-3346-129883902F59-tbl.jpg">" ["img_path"]=> string(65) "/upload/gallery/thumbnail/4CEDD57F-8D89-3346-129883902F59-tbl.jpg" } [1]=> array(2) { ["img_tag"]=> string(77) "<img src="/upload/gallery/thumbnail/10B4AE18-7B30-7873-D4F03F0842E2-tbl.jpg">" ["img_path"]=> string(65) "/upload/gallery/thumbnail/10B4AE18-7B30-7873-D4F03F0842E2-tbl.jpg" } [2]=> array(2) { ["img_tag"]=> string(77) "<img src="/upload/gallery/thumbnail/51AAFC9A-188E-2934-937CC221BBF2-tbl.jpg">" ["img_path"]=> string(65) "/upload/gallery/thumbnail/51AAFC9A-188E-2934-937CC221BBF2-tbl.jpg" } [3]=> array(2) { ["img_tag"]=> string(77) "<img src="/upload/gallery/thumbnail/BEB3E265-347A-5135-789673024100-tbl.jpg">" ["img_path"]=> string(65) "/upload/gallery/thumbnail/BEB3E265-347A-5135-789673024100-tbl.jpg" } }
图片地址不是实际路径,仅供参考。
我们在用dedecms制作自定义表单时,有时需要使用到联动类型,比如说城市二级三级联动,这就需要对织梦自定义表单进行二次开发。
第一:在织梦自定义表单中添加联动类型
dedecms自定义表单中默认情况下是没有联动类型这个选项,要想实现城市联动功能就必须要有联动类型,下面教你怎么调用出联动类型,原因就是织梦官方默认把联动类型在自定义表单中注释掉了,我们让他显示就可以。我们需要修改两个文件,下面是方法。
1、打开修改的文件:dede/templets/diy_field_add.htm 大概146 行,很明显已经注释掉,我们把注释去掉,
修改后如下图。改好后,保存即可!
修改后如下图。改好后,保存即可!
2、修改的文件:dede/templets/diy_field_edit.htm 大概在127行,很明显已经注释掉,我们把注释去掉,然后放到“多选框”下面。
完成以上两步操作,在自定义表单中就有了联动类型选择了。
点击自定义表单,新建一个字段,名字填好你想要的,比如说“户口所在地”,下面的字段名称要填写nativeplace,选择联动类型,而且下面的默认值也要填写nativeplace,如下图
点击确定,保存即可,然后就是前台的调用,这个就不多说了,相信会有织梦自定义表单的朋友都会吧。
第二:在织梦自定义表单做城市二级三级联动,后台类型名称显示数字解决方法
打开dede/templets/diy_list.htm文件,找到
else if($fielddata[1]==’addon’)else if($fielddata[1]==’addon’) { $fields[$field] = “<a href='{$fields[$field]}’ target=’_blank’><img src=’images/channeladd.gif’ border=’0′ /> 其它附件</a>”; }
在其下面添加如下代码else if($fielddata[1]==’stepselect’)
{
$fields[$field] = Getenums(“{$fields[$field]}”,’nativeplace’);
}
如下图所示:
继续在该文件中,找到
</form>
在其下面添加如下代码:<?php
function Getenums($evalue=0,$egroup)
{
if( !isset($GLOBALS[’em_’.$egroup.’s’]) )
{
$cachefile = DEDEDATA.’/enums/’.$egroup.’.php’;
if(!file_exists($cachefile))
{
require_once(DEDEINC.’/enums.func.php’);
WriteEnumsCache();
}
if(!file_exists($cachefile))
{
return ”;
}
else
{
require_once($cachefile);
}
}
if($evalue>=500)
{
if($evalue % 500 == 0)
{
return (isset($GLOBALS[’em_’.$egroup.’s’][$evalue]) ? $GLOBALS[’em_’.$egroup.’s’][$evalue] : ”);
}
else if (preg_match(“#([0-9]{1,})\.([0-9]{1,})#”, $evalue, $matchs))
{
$esonvalue = $matchs[1];
$etopvalue = $esonvalue – ($esonvalue % 500);
$esecvalue = str_replace(“.00″,”.”,$evalue);
$GLOBALS[’em_’.$egroup.’s’][$etopvalue] = empty($GLOBALS[’em_’.$egroup.’s’][$etopvalue])? ”
: $GLOBALS[’em_’.$egroup.’s’][$etopvalue];
$GLOBALS[’em_’.$egroup.’s’][$esonvalue] = empty($GLOBALS[’em_’.$egroup.’s’][$esonvalue])? ”
: $GLOBALS[’em_’.$egroup.’s’][$esonvalue];
$GLOBALS[’em_’.$egroup.’s’][$esecvalue] = empty($GLOBALS[’em_’.$egroup.’s’][$esecvalue])? ”
: $GLOBALS[’em_’.$egroup.’s’][$esecvalue];
return $GLOBALS[’em_’.$egroup.’s’][$etopvalue].’ –
‘.$GLOBALS[’em_’.$egroup.’s’][$esonvalue].’ –
‘.$GLOBALS[’em_’.$egroup.’s’][$esecvalue];
}
else
{
$elimit = $evalue % 500;
$erevalue = $evalue – $elimit;
$GLOBALS[’em_’.$egroup.’s’][$erevalue] = empty($GLOBALS[’em_’.$egroup.’s’][$erevalue])? ”
: $GLOBALS[’em_’.$egroup.’s’][$erevalue];
$GLOBALS[’em_’.$egroup.’s’][$evalue] = empty($GLOBALS[’em_’.$egroup.’s’][$evalue])? ”
: $GLOBALS[’em_’.$egroup.’s’][$evalue];
return $GLOBALS[’em_’.$egroup.’s’][$erevalue].’ – ‘.$GLOBALS[’em_’.$egroup.’s’][$evalue];
}
}
}
?>
如下图所示:
什么是百度主动推送(实时)?
亲爱的网站管理员你好:
sitemap实时推送功能过段时间就要下线了,我们推出了更加强大的链接提交主动推送功能作为替代。
新的主动推送功能更加强大:提交数据方式更简单,返回码达意更清晰(可立即知晓数据提交是否成功),可以做到实时向百度推送新数据。
需要注意的是:
1, 主动推送功能的入口在:工具——网页抓取——链接提交——主动推送(实时)
2, 主动推送使用了与原实时推送不同的数据接口,且需要重新获取密匙(登录后在链接提交工具界面可见)
为了保证您的数据提交效果,请及时更换接口和密匙,尽快熟悉主动推送功能,出现问题可以通过反馈中心获得百度工作人员的帮助。
使用百度主动推送(实时)可以加快收录速度,保护原创内容不被第三方采集祸害。
岑溪网站开发暂时没看到有人编写百度主动推送代码,于是岑溪网站开发跟据百度提供的PHP代码进行编写加入到DEDE后台的发表文章文件中,实现了与百度百度主动推送(实时)功能。
好了,那么我们就看代码吧:
第一在后台发表文章接口中搜索
$artUrl= MakeArt($arcID,true,true,$isremote);
然后在
if($artUrl==”)
{
$artUrl=$cfg_phpurl.”/view.php?aid=$arcID”;
}
后面加入
else{
$urls[]=’http://’.$_SERVER[‘HTTP_HOST’].$artUrl;
$api=’http://data.zz.baidu.com/urls?site=www.xker.com&token=d8ntTtXRa00CTFpx’;
$ch= curl_init();
$options=array(
CURLOPT_URL => $api,
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => implode(“\n”,$urls),
CURLOPT_HTTPHEADER => array(‘Content-Type: text/plain’),
);
curl_setopt_array($ch,$options);
$result= curl_exec($ch);
}
保存即可。如下图
前两天,用WordPress搭建这个博客(https://wpthemes.pythonthree.com),服务器是阿里云香港服务器,使用宝塔控制面板,但是,当进去WordPress后台发表文章的时候,出现了如下报错:
WordPress 发布失败。错误信息:此响应不是合法的JSON响应。
WordPress版本是WordPress 5.5.1,因为是刚刚安装完毕,也没装WordPress插件,所以在网上找了些资料,看看是什么情况;
第一种情况:Wordpress编辑器插件的问题
WordPress编辑器插件的问题,网上有文章说是“新版古腾堡编辑器”的问题,如果真是这个问题,解决方法如下:
直接在模版文件的fuctions.php的600多行的样子直接添加代码
<span style="color:#3a3a3a"><code>//禁用Gutenberg编辑器add_filter('use_block_editor_for_post','__return_false');remove_action('wp_enqueue_scripts','wp_common_block_scripts_and_styles');</code></span>
wordpress网站是刚搭建的,根本没有下载、安装任何的插件(排除)
第二种情况:WordpressWPRestAPI的问题
如果发表文章的时候通过浏览器的F12功能来审查资源,你会发现WPRESTAPI会报错,这个时候可以尝试禁用WPRESTAPI来测试是否正常工作。
想要禁用WPRESTAPI,可以安装下面这个插件来实现。
WPRESTAPI插件地址:https://cn.wordpress.org/plugins/disable-wp-rest-api/
刚好这个服务器也有另一个WordPress网站,而且连程序都是从同一个服务器复制粘贴的,所以这个情况不存在(排除)
第三种情况:系统镜像的问题
有可能是系统镜像里面某个组件和新版本的WordPress不兼容导致的,如果是这样的话,就需要直接换个镜像解决的更快一点。
但是,同一个服务器,两个wp网站,一个就是正常的,新搭建的这个却不正常,不应该。(排除)
第四种情况:伪静态的问题
服务器的宝塔面板伪静态规则修改,在宝塔控制面板打开对应的WordPress网站,选择设置,然后选择伪静态,选择WordPress程序,点击保存即可。(解决问题)
现在,WordPress网站又可以正常运行