thinkcmf

thinkcmf

thinkcmf5 file_get_contents(): Unable to find the wrapper "https" - did you forget to enable it 的解决

博客maomao 发表了文章 • 0 个评论 • 1211 次浏览 • 2019-04-22 11:37 • 来自相关话题

thinkcmf5 file_get_contents(): Unable to find the wrapper "https" - did you forget to enable it 的解决方案:   1.w ...查看全部
thinkcmf5 file_get_contents(): Unable to find the wrapper "https" - did you forget to enable it 的解决方案:
 
1.windows下的PHP,只需要到php.ini中把extension=php_openssl.dll前面的;删掉,重启服务就可以了。 
2.linux下的PHP,就必须安装openssl模块,安装好了以后就可以访问了。 
3.如果服务器你不能修改配置的话,那么就使用curl函数来替代file_get_contents函数,当然不是简单的替换啊。还有相应的参数配置才能正常使用curl函数。 
 
php] view plain copy print?
function http_request($url,$timeout=30,$header=array()){
if (!function_exists('curl_init')) {
throw new Exception('server not install curl');
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
if (!empty($header)) {
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
}
$data = curl_exec($ch);
list($header, $data) = explode("\r\n\r\n", $data);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($http_code == 301 || $http_code == 302) {
$matches = array();
preg_match('/Location:(.*?)\n/', $header, $matches);
$url = trim(array_pop($matches));
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
$data = curl_exec($ch);
}

if ($data == false) {
curl_close($ch);
}
@curl_close($ch);
return $data;
}

thinkcmf5访问后台总是自动跳转首页怎么解决

博客maomao 发表了文章 • 0 个评论 • 3491 次浏览 • 2019-04-21 20:32 • 来自相关话题

thinkcmf5访问后台总是自动跳转首页怎么解决?   一.首先检测你的PHP环境是不是开户了 session_start();   二.找到/application/Admin/Controller/Publ ...查看全部
thinkcmf5访问后台总是自动跳转首页怎么解决?
 
一.首先检测你的PHP环境是不是开户了 session_start();
 
二.找到/application/Admin/Controller/PublicController.class.php
 
第27行代码注释
 
$loginAllowed = session("__LOGIN_BY_CMF_ADMIN_PW__");
if (empty($loginAllowed)) {
//$this->error('非法登录!', cmf_get_root() . '/');
return redirect(cmf_get_root() . "/");
}
第55行代码注释
 
$loginAllowed = session("__LOGIN_BY_CMF_ADMIN_PW__");
if (empty($loginAllowed)) {
$this->error('非法登录!', cmf_get_root() . '/');
}

确证以上几项修改好,再登录后台地址,是不是已经OK了!

支付宝支付 Deprecated:The each() function si deprecated

博客maomao 发表了文章 • 0 个评论 • 1322 次浏览 • 2019-04-14 12:21 • 来自相关话题

支付宝支付 Deprecated:The each() function si deprecated的问题怎么解决:   支付宝支付的时候遇到的问题,这种是因为php7+以上版本抛弃了each函数导致   原函数 ...查看全部
支付宝支付 Deprecated:The each() function si deprecated的问题怎么解决:
 
支付宝支付的时候遇到的问题,这种是因为php7+以上版本抛弃了each函数导致
 
原函数如下:
/**
* 除去数组中的空值和签名参数
* @param $para 签名参数组
* return 去掉空值与签名参数后的新签名参数组
*/
function paraFilter($para) {
$para_filter = array();
while (list ($key, $val) = each ($para)) {
if($key == "sign" || $key == "sign_type" || $val == "")continue;
else $para_filter[$key] = $para[$key];
}
return $para_filter;
}
修改成正确的如下:
 
function paraFilter($para) {
$para_filter = array();
foreach ($para as $key => $val) {
if($key == "sign" || $key == "sign_type" || $val == "")continue;
else $para_filter[$key] = $para[$key];
}
return $para_filter;
}

thinkcmf5评论显示几天前,几小时前,几分钟前的代码

博客maomao 发表了文章 • 0 个评论 • 1356 次浏览 • 2019-04-08 15:41 • 来自相关话题

thinkcmf5评论显示几天前,几小时前,几分钟前的代码:   一.在simplewind\cmf\common.php加入公共方法   /* * 时间戳用来转成xx前 */ ...查看全部
thinkcmf5评论显示几天前,几小时前,几分钟前的代码:
 
一.在simplewind\cmf\common.php加入公共方法
 
/*
* 时间戳用来转成xx前
*/
function ChangeTime($time)
{
$time = time() - $time;
if (is_numeric($time)) {
$value = array(
"years" => 0, "days" => 0, "hours" => 0,
"minutes" => 0, "seconds" => 0,
);
if ($time >= 31556926) {
$value["years"] = floor($time / 31556926);
$time = ($time % 31556926);
$t = $value["years"] . '年前';
} elseif (31556926 > $time && $time >= 86400) {
$value["days"] = floor($time / 86400);
$time = ($time % 86400);
$t = $value["days"] . '天前';
} elseif (86400 > $time && $time >= 3600) {
$value["hours"] = floor($time / 3600);
$time = ($time % 3600);
$t = $value["hours"] . '小时前';
} elseif (3600 > $time && $time >= 60) {
$value["minutes"] = floor($time / 60);
$time = ($time % 60);
$t = $value["minutes"] . '分钟前';
} else {
$t = $time . '秒前';
}
return $t;
} else {
return date('Y-m-d H:i:s', time());
}
}
二.前台模板调用
 
{:ChangeTime($vo.download_time)}
三.显示效果如下
 

QQ截图20190408154052.png

 

《全栈营销之如何制作个人博客》六:首页数据调取完整广告位完善

博客maomao 发表了文章 • 0 个评论 • 1188 次浏览 • 2019-03-24 11:10 • 来自相关话题

今天主要做的是把首页的广告位给完善,及首页剩下的静态数据修改成动态调取的,比如公告,推荐文章,右侧广告位。都修改成动态的数据,方便后期后台管理博客数据。 一.Thinkcmf广告位标签 幻灯片相关的标签有两个,slides和 nosli ...查看全部
今天主要做的是把首页的广告位给完善,及首页剩下的静态数据修改成动态调取的,比如公告,推荐文章,右侧广告位。都修改成动态的数据,方便后期后台管理博客数据。
一.Thinkcmf广告位标签
幻灯片相关的标签有两个,slides和 noslides ,slides标签这个标签其实就一个循环标签,只是会把你指定的幻灯片数据获取出来。

 
案例如下:
<ul id="home-slider" class="list-unstyled">
<slides id="1">
<li>
<div class="caption-wraper">
<div class="caption">{$vo.title|default=''}</div>
</div>
<a href=""><img src="__TMPL__/public/assets/images/demo/1.jpg" alt=""></a>
</li>
</slides>
<noslides id="1">
<li>你还没有创建幻灯片;</li>
</noslides>
</ul>

二.thinkcmf 文章数据调取
Thinkcmf模板调取文章数据,主要用到articles标签,包含属性:field,where,limit,order,page,relation,pageVarName,categoryIds,item。

 
标签属性名 含义
where 查询条件变量, 支持数组和字符串,如$where
limit 最多查出文章数,如果分页开启,此设置无效
order 文章排序方式
page 分页参数,如果设置分页参数会自动分页
relation 关联查询,支持categories和user,多个以英文逗号分隔
pageVarName 分页后生成的分页变量名,只有设置分页参数时才有效
categoryIds 分类 id,支持数组和字符串(英文逗号分开)

 
一个最新文章列表,不分页:
<php>
$category_ids=1;
</php>
<portal:articles limit="5" order="post.published_time DESC"
categoryIds="$category_ids">
<dl class="dl-horizontal">
<dt>
<a class="img-wraper"
href="{:url('portal/Article/index',array('id'=>$vo.id,'cid'=>$vo['categories'][0]['id']))}">
<if condition="empty($vo.more.thumbnail)">
<img src="__TMPL__/public/assets/images/default_tupian4.png"
class="img-responsive" alt="{$vo.post_title}"/>
<else/>
<img src="{:cmf_get_image_url($vo.more.thumbnail)}"
class="img-responsive" alt="{$vo.post_title}"/>
</if>
</a>
</dt>
<dd>
<a href="{:url('portal/Article/index',array('id'=>$vo['id'],'cid'=>$vo['categories'][0]['id']))}">{$vo.post_title}</a>
</dd>
</dl>
</portal:articles>

一个文章列表,分页
<div>
<php>
$where=[
'post.create_time'=>['egt',0]
];
</php>
<portal:articles item="vo" where="$where" order="post.create_time DESC" page="10"
relation="categories"
categoryIds="$category.id"
returnVarName="articles_data">
<div class="list-boxes">
<h2><a href="{:cmf_url('portal/Article/index',array('id'=>$vo['id'],'cid'=>$category['id']))}">{$vo.post_title}</a>
</h2>
<p>{$vo.post_excerpt}</p>
<div>
<div class="pull-left">
<div class="list-actions">
<a href="javascript:;"><i class="fa fa-eye"></i><span>{$vo.post_hits}</span></a>
<a href="{:url('portal/Article/doLike',array('id'=>$vo['id']))}"
class="js-count-btn"><i class="fa fa-thumbs-up"></i><span class="count">{$vo.post_like}</span></a>
<a href="{:url('user/Favorite/add',array('id'=>$vo['id']))}"
class="js-favorite-btn" data-title="{$vo.post_title}"
data-url="{:cmf_url('portal/Article/index',array('id'=>$vo['id'],'cid'=>$category['id']))}"
>
<i class="fa fa-star-o"></i>
</a>
</div>
</div>
<a class="btn btn-warning btn-sm pull-right"
href="{:cmf_url('portal/Article/index',array('id'=>$vo['id'],'cid'=>$category['id']))}">查看更多</a>
</div>
</div>
</portal:articles>

</div>
<ul class="pagination">
<page/>
</ul>

我们的代码会共享出来,分享给大家。如果你获取完整的文字教程,视频教程,源码,关注公众号:云码素材,私信我入群,和小伙伴一起学习,一起动手制作你的个人博客,一起探讨代码。

1499034813928288732.jpg

 

《全栈营销之如何制作个人博客》之五:广告位添加与调用 推荐文章数据调取

博客maomao 发表了文章 • 0 个评论 • 1222 次浏览 • 2019-03-19 21:10 • 来自相关话题

上一节博客的导航我们已经动态调取,这一节我们主讲一下如何根据页面布局,后台添加广告位,及模板上动态调取广告。博客推荐文章的数据调用。 首先我们在云码博客的后台添加10条左右的测试数据,thinkcmf后台添加文章的地方在门户管理-》文章管理,点击添 ...查看全部
上一节博客的导航我们已经动态调取,这一节我们主讲一下如何根据页面布局,后台添加广告位,及模板上动态调取广告。博客推荐文章的数据调用。
首先我们在云码博客的后台添加10条左右的测试数据,thinkcmf后台添加文章的地方在门户管理-》文章管理,点击添加文章即可。添加完数据的效果如下图。

 
二.在博客后台添加广告位,在后台设置-》幻灯片管理,我们以首页为主,其他页面的广告位可以以些类推添加,首页大概有11处图片广告位置,我们以上部轮播图为例演示如何添加,调用动态广告。

后台添加完后,前台模板如何调用呢?下面我们看前台调用的程序代码如下:

 
运行的效果就和我们之前看过的静态模板页面一样,如下图所示。

 
三.头条推荐数据调用,在thinkcmf数据库中的文章存储在portal_post表中,有两个关键的字段来控制推荐和头条数据,推荐是recommended=1时,头条数据是is_top=1时。在后台设置就可以成为推荐和头条数据。

 
前端模板调用头条数据如何调用呢,具体的代码如下:

 
前端模板调用数据效果如下:

个人博客制作
我们的代码会共享出来,分享给大家。如果你获取完整的文字教程,视频教程,源码,关注公众号:云码素材,加微信:xnynews入群,和小伙伴一起学习,一起动手制作你的个人博客,一起探讨代码。

《全栈营销之如何制作个人博客》之四:php个人博客分类添加及前端导航数据调取

博客maomao 发表了文章 • 0 个评论 • 1030 次浏览 • 2019-03-15 20:15 • 来自相关话题

大家好,今天我们接着上一节的全栈营销个人博客制作,上一节我们把博客的模板给加载运行起来。今天我们主要讲解后台模板分类的添加,后台导航的添加,及前台导航的动态调用。一个好的博客,导航很重要,导航就像你网站的地图,有导向作用,能引导用户去他想去的地方,再一个好处是 ...查看全部
大家好,今天我们接着上一节的全栈营销个人博客制作,上一节我们把博客的模板给加载运行起来。今天我们主要讲解后台模板分类的添加,后台导航的添加,及前台导航的动态调用。一个好的博客,导航很重要,导航就像你网站的地图,有导向作用,能引导用户去他想去的地方,再一个好处是对seo优化有很大的好处,所以导航是我们这一节的重点。

 
一.博客分类添加
Thinkcmf后台添加博客分类很方便,可以添加无限级分类,也可以添加单个分类。我们这里只添加了5个一级博客分类,具体效果如下图。

 
二.博客导航的添加与管理
Thinkcmf后台设置里有一个导航管理,导航又分为主导航,底部导航,主导航就是博客最上面的导航,底部导航是网站底部的导航。我们这里以主导航为主来讲解,如何添加导航。主导航一般分为一级导航,二级导航,三级导航就很少了,一般网站以一二级为主。添加完的主导航效果如下图。

 
三.前台模板导航数据调用
什么叫导航数据调用,我们在后台添加的导航,要把它调用的我们博客的导航来,这样就能通过后台动态管理导航数据。当然你也可以把导航写死,写死的坏处就是后面你想管理,必须修改模板文件,再上传到服务器。这样就违背了我用PHP这样动态语言开发网站的初衷。
在thinkcmf里如何动态调用后台我们添加的导航数据呢?在thinkcmf里导航标签用于生成前台导航,相关的有三个标签navigation,navigationMenu,navigationFolder,三个必须联合使用。使用的案例如下图

 
按照这个管方的案例,我们根据自己博客的导航样式,写来的代码如下。

 
前台显示的效果如下图。

 
我们的代码会共享出来,分享给大家。如果你获取完整的文字教程,视频教程,源码,关注公众号:云码素材,私信我入群,和小伙伴一起学习,一起动手制作你的个人博客,一起探讨代码。

1499034813928288732.jpg

 

thinkcmf5 nginx 伪静态报500错误

博客maomao 发表了文章 • 0 个评论 • 2132 次浏览 • 2019-03-09 12:25 • 来自相关话题

thinkcmf5宝塔liunx版Nginx环境开启伪静态步骤。 1、绑定网站运行目录 2、填写伪静态规则: PHP[code]location / { index index.p ...查看全部
thinkcmf5宝塔liunx版Nginx环境开启伪静态步骤。
1、绑定网站运行目录

2、填写伪静态规则:
PHP
[code]location / {
index index.php index.html index.htm;
if (!-e $request_filename)
{
rewrite ^/(.*)$ /index.php?s=$1;
}
}
location /api/ {
index index.php index.html index.htm;
if (!-e $request_filename)
{
rewrite ^/api/(.*)$ /api/index.php?s=$1;
}
}
location ~* \/upload\/.+\.(html|php)$ {
return 404;
}
location ~* ^\/plugins\/.+\.(html|php)$ {
return 404;
}
location ~* \/themes\/.+\.(html|php)$ {
return 404;
}
[/code]

3、保存,OK!
 

《全栈营销之如何制作个人博客》之二:php环境安装及个人博客后台搭建 让你的博客跑起来

博客maomao 发表了文章 • 0 个评论 • 1260 次浏览 • 2019-03-06 13:15 • 来自相关话题

上一节我们讲了个人博客用什么开发语言,用什么CMS系统,从这一节我们就开始真正的干货,这一节我们讨论一下PHP环境的安装,及个人博客后台的搭建,让你的博客在正常的PHP环境中运行起来,你就可以进行后台的数据管理,添加,修改,删除什么的。我们开发这个博客,主要讲 ...查看全部
上一节我们讲了个人博客用什么开发语言,用什么CMS系统,从这一节我们就开始真正的干货,这一节我们讨论一下PHP环境的安装,及个人博客后台的搭建,让你的博客在正常的PHP环境中运行起来,你就可以进行后台的数据管理,添加,修改,删除什么的。我们开发这个博客,主要讲的是怎么快速开发一个个人博客,所以不会很系统的讲解PHP的基础知识,及thinkphp5框架的系统知识,当然在后面的模块开发中,用到细节知识点的时候,我也会讲给大家的。
一.php环境安装
这里为了节约时间,我们就不用单个安装php,apache,mysql这些软件了,比较耗时。我们选择集成环境,安装速度快,把节省下来的时间用到项目的讲解上,PHP的集成环境很多,像Xampp,phpwamp,apmserv,wampserver,phpStudy,PHPMaker等,还有很多,就不都给大家列出来了,有兴趣的可以查一下资料。这么多集成环境,他们有什么区别呢,以我来看区别微小,所以你用那个都可以,哪个你用的习惯,顺手就用哪个。我经常用的是phpstudy,所以以后我们的项目运行环境都是在它的基础上。有一点说明,集成环境只能做为你的开发环境,正式项目部署最好不要用集成的环境,根据服务器性质单独配置运行环境。
1.1.首先去phpstudy官网下载软件,自己搜索官网地址就行了,下载后执行软件,没什么技巧直接下一步,下一步就行了。安装完成后双击图标,运行起来phpstudy,当你看到下图两个图标为绿色的,就证明你的环境已经配置OK了。

 
1.2修改php的版本信息

 
配置一个本地域名,对你的项目进行测试,如何在PHPSTUDY上配置你的域名呢,并把这个域名绑定到项目上呢,需要两步。
1. 添加域名,绑定项目
找到phpstudy里的域名管理,添加网站域名,选择网站目录即可。

 
2. 修改hosts文件,路径为C:\Windows\System32\drivers\etc
添加完域名,绑定过项目过后,测试你的php环境是否是OK的,在你的项目根目录添加一个index.php文件,在里面写上一句Php代码phpinfo();输出关于 PHP 配置的信息,如果你能看到下图的信息,证明你的PHP环境已经配置成功了。

 

 
二.Thinkcmf 系统安装及后台配置,项目运行起来
2.1Thinkcmf去官方下载,下载最新版,新版要求PHP环境必须为5.6以上,才能正常运行,所以这点要注意。下载完解压放置到你的项目根目录,这里要注意,由于thinkcmf系统是基于thinkphp5开发的,所以我们上一步绑定项目的域名,要绑定到解压文件的public下,thihkcmf系统的运行目录是Public,不能把域名绑定到根目录。要不然不能正常运行。

 
2.2直接在浏览器上输入你刚才的域名,如果没什么问题,就能安装thinkcmf,直接一步一步安装就行了,不会安装去官网找一下资料即可。安装完登录后台,看到下面的页面就OK了。

 
查看首页效果,如下图,至此thinkcmf系统就已经安装运行完成,下一节我们将正式开发个人博客模块,请跟上我的步伐。
我们的代码会共享出来,分享给大家。如果你获取完整的文字教程,视频教程,源码,关注公众号:云码素材,私信我入群,和小伙伴一起学习,一起动手制作,一起探讨代码。
欢迎大家加我微信,xnynews,加入500人微信群,一起学习PHP开发,也欢迎大家关注我的公众号:云码素材

1499034813928288732.jpg


云码素材一个分享开发技术,分享精品源码素材的好平台!

《全栈营销之如何制作个人博客》之一:用什么开发语言和CMS系统能快速开发个人博客

博客maomao 发表了文章 • 0 个评论 • 1239 次浏览 • 2019-03-03 15:04 • 来自相关话题

现在的互联网,已经不再是初级互联时代,是需要全方位营销,自建粉丝池的时代,云码素材从提出全栈营销,到实践分析,总结出全栈营销第一步,先制作一个个人博客是最好的开始。今天开始就跟我一起学习如何制作一个精典的个人博客。为什么要跟着我一起学习呢,我是云码素材的工发人 ...查看全部
现在的互联网,已经不再是初级互联时代,是需要全方位营销,自建粉丝池的时代,云码素材从提出全栈营销,到实践分析,总结出全栈营销第一步,先制作一个个人博客是最好的开始。今天开始就跟我一起学习如何制作一个精典的个人博客。为什么要跟着我一起学习呢,我是云码素材的工发人员,有15年的开发经验,是一个老码农,所以如果你相信我,就跟紧我的步伐,每周都会分享。这期的《如何全栈之如何制作个人博客》共分为10节,通过这10节你会跟着我做出来一个漂亮,大气,美观,有利于SEO运营的个人博客。

 
首先我们来说一下,为什么要制作个人博客?个人博客有什么好处呢?
从现在互联网运营角度来说,任何企业和个人都不能单单靠一个平台去营销了,不管你是企业做淘宝,天猫,京东,拼多多这些电商运营,还是说你是个人自媒体,想靠自媒体运营挣一些钱,都不能只靠一个平台来做,平台是别人的,如何把平台的粉丝转换成自己的,才是正道。平台只是一个载体,如何哪天某个平台看你不爽,把帐号给你封了,你苦苦经营的帐号就没有,得不偿失。所以要想尽一切办法,把平台的粉丝,引流到你自己的渠道。制作个人博客,可以很好的把这些粉丝引流到你的博客,其次通过你自己的博客,还可以再深入引流到你的个人微信号。

 
博客也是一个很好的流量入口,当你有一个博客,经常更新,那么搜索引擎就会收录你的博客内容。目标客户通过搜索引擎搜索相关的关键词的时候,就会直达你的博客。
个人或企业博客能给你带来什么好处呢?第一个最直接的好处就是自建粉丝池,把粉丝直接引流到个人手里。第二个好处就是,你可以得到一些费用。这个费用从哪里来呢?当你的博客运营一段时间好,有了一定的流量,可以申请一些搜索引擎的联盟广告,目前比较好的搜索引擎联盟广告有,google的adsense,这个是联盟广告里最好的,单价高,挣的是美元,还有其它的baidu的联盟广告,360搜索的,搜狗等联盟广告。当你的博客有比较大的流量的时候,就会有相关行业的企业找你,做广告位,当然这个是最可观的收入。

 
制作个人博客用什么语言?用什么框架呢?用什么CMS系统最好呢?小白不懂开发能制作一个博客吗?
我们制作这个博客的教程,选着的开发语言是PHP,PHP是web开发领域最好的语言,全球70%的web网站都是用php制作的。用什么框架,我们选择的是thinkphp5,thinkphp在国内有大批的用户,比较成熟。用什么样的CMS系统,我们选择的是thinkcmf5,thinkcmf5是一个开源的中文内容管理框架,让WEB开发更简单,节约时间说走就走!

 
如果你是小白,没一点开发基础,跟着我的教程,能制作出一个博客吗?在这里我可以告诉你,可以的,我的教程分为三部分,第一部分是文字教程,详细的文字教程,图例展示,按照着一步一步操作就可以。第二步视频教程,文字看不懂,跟着视频走。第三步是第一步的源码分享。最好的是自己动手写出来代码,写不出来,我们的代码会共享出来,分享给大家。如果你获取完整的文字教程,视频教程,源码,关注工众号:云码素材,加我微信:xnynews,私信我入群,和小伙伴一起学习,一起动手制作,一起探讨代码。
1499034813928288732.jpg

 

thinkcmf5 file_get_contents(): Unable to find the wrapper "https" - did you forget to enable it 的解决

博客maomao 发表了文章 • 0 个评论 • 1211 次浏览 • 2019-04-22 11:37 • 来自相关话题

thinkcmf5 file_get_contents(): Unable to find the wrapper "https" - did you forget to enable it 的解决方案:   1.w ...查看全部
thinkcmf5 file_get_contents(): Unable to find the wrapper "https" - did you forget to enable it 的解决方案:
 
1.windows下的PHP,只需要到php.ini中把extension=php_openssl.dll前面的;删掉,重启服务就可以了。 
2.linux下的PHP,就必须安装openssl模块,安装好了以后就可以访问了。 
3.如果服务器你不能修改配置的话,那么就使用curl函数来替代file_get_contents函数,当然不是简单的替换啊。还有相应的参数配置才能正常使用curl函数。 
 
php] view plain copy print?
function http_request($url,$timeout=30,$header=array()){
if (!function_exists('curl_init')) {
throw new Exception('server not install curl');
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
if (!empty($header)) {
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
}
$data = curl_exec($ch);
list($header, $data) = explode("\r\n\r\n", $data);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($http_code == 301 || $http_code == 302) {
$matches = array();
preg_match('/Location:(.*?)\n/', $header, $matches);
$url = trim(array_pop($matches));
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
$data = curl_exec($ch);
}

if ($data == false) {
curl_close($ch);
}
@curl_close($ch);
return $data;
}

thinkcmf5访问后台总是自动跳转首页怎么解决

博客maomao 发表了文章 • 0 个评论 • 3491 次浏览 • 2019-04-21 20:32 • 来自相关话题

thinkcmf5访问后台总是自动跳转首页怎么解决?   一.首先检测你的PHP环境是不是开户了 session_start();   二.找到/application/Admin/Controller/Publ ...查看全部
thinkcmf5访问后台总是自动跳转首页怎么解决?
 
一.首先检测你的PHP环境是不是开户了 session_start();
 
二.找到/application/Admin/Controller/PublicController.class.php
 
第27行代码注释
 
$loginAllowed = session("__LOGIN_BY_CMF_ADMIN_PW__");
if (empty($loginAllowed)) {
//$this->error('非法登录!', cmf_get_root() . '/');
return redirect(cmf_get_root() . "/");
}
第55行代码注释
 
$loginAllowed = session("__LOGIN_BY_CMF_ADMIN_PW__");
if (empty($loginAllowed)) {
$this->error('非法登录!', cmf_get_root() . '/');
}

确证以上几项修改好,再登录后台地址,是不是已经OK了!

支付宝支付 Deprecated:The each() function si deprecated

博客maomao 发表了文章 • 0 个评论 • 1322 次浏览 • 2019-04-14 12:21 • 来自相关话题

支付宝支付 Deprecated:The each() function si deprecated的问题怎么解决:   支付宝支付的时候遇到的问题,这种是因为php7+以上版本抛弃了each函数导致   原函数 ...查看全部
支付宝支付 Deprecated:The each() function si deprecated的问题怎么解决:
 
支付宝支付的时候遇到的问题,这种是因为php7+以上版本抛弃了each函数导致
 
原函数如下:
/**
* 除去数组中的空值和签名参数
* @param $para 签名参数组
* return 去掉空值与签名参数后的新签名参数组
*/
function paraFilter($para) {
$para_filter = array();
while (list ($key, $val) = each ($para)) {
if($key == "sign" || $key == "sign_type" || $val == "")continue;
else $para_filter[$key] = $para[$key];
}
return $para_filter;
}
修改成正确的如下:
 
function paraFilter($para) {
$para_filter = array();
foreach ($para as $key => $val) {
if($key == "sign" || $key == "sign_type" || $val == "")continue;
else $para_filter[$key] = $para[$key];
}
return $para_filter;
}

thinkcmf5评论显示几天前,几小时前,几分钟前的代码

博客maomao 发表了文章 • 0 个评论 • 1356 次浏览 • 2019-04-08 15:41 • 来自相关话题

thinkcmf5评论显示几天前,几小时前,几分钟前的代码:   一.在simplewind\cmf\common.php加入公共方法   /* * 时间戳用来转成xx前 */ ...查看全部
thinkcmf5评论显示几天前,几小时前,几分钟前的代码:
 
一.在simplewind\cmf\common.php加入公共方法
 
/*
* 时间戳用来转成xx前
*/
function ChangeTime($time)
{
$time = time() - $time;
if (is_numeric($time)) {
$value = array(
"years" => 0, "days" => 0, "hours" => 0,
"minutes" => 0, "seconds" => 0,
);
if ($time >= 31556926) {
$value["years"] = floor($time / 31556926);
$time = ($time % 31556926);
$t = $value["years"] . '年前';
} elseif (31556926 > $time && $time >= 86400) {
$value["days"] = floor($time / 86400);
$time = ($time % 86400);
$t = $value["days"] . '天前';
} elseif (86400 > $time && $time >= 3600) {
$value["hours"] = floor($time / 3600);
$time = ($time % 3600);
$t = $value["hours"] . '小时前';
} elseif (3600 > $time && $time >= 60) {
$value["minutes"] = floor($time / 60);
$time = ($time % 60);
$t = $value["minutes"] . '分钟前';
} else {
$t = $time . '秒前';
}
return $t;
} else {
return date('Y-m-d H:i:s', time());
}
}
二.前台模板调用
 
{:ChangeTime($vo.download_time)}
三.显示效果如下
 

QQ截图20190408154052.png

 

《全栈营销之如何制作个人博客》六:首页数据调取完整广告位完善

博客maomao 发表了文章 • 0 个评论 • 1188 次浏览 • 2019-03-24 11:10 • 来自相关话题

今天主要做的是把首页的广告位给完善,及首页剩下的静态数据修改成动态调取的,比如公告,推荐文章,右侧广告位。都修改成动态的数据,方便后期后台管理博客数据。 一.Thinkcmf广告位标签 幻灯片相关的标签有两个,slides和 nosli ...查看全部
今天主要做的是把首页的广告位给完善,及首页剩下的静态数据修改成动态调取的,比如公告,推荐文章,右侧广告位。都修改成动态的数据,方便后期后台管理博客数据。
一.Thinkcmf广告位标签
幻灯片相关的标签有两个,slides和 noslides ,slides标签这个标签其实就一个循环标签,只是会把你指定的幻灯片数据获取出来。

 
案例如下:
<ul id="home-slider" class="list-unstyled">
<slides id="1">
<li>
<div class="caption-wraper">
<div class="caption">{$vo.title|default=''}</div>
</div>
<a href=""><img src="__TMPL__/public/assets/images/demo/1.jpg" alt=""></a>
</li>
</slides>
<noslides id="1">
<li>你还没有创建幻灯片;</li>
</noslides>
</ul>

二.thinkcmf 文章数据调取
Thinkcmf模板调取文章数据,主要用到articles标签,包含属性:field,where,limit,order,page,relation,pageVarName,categoryIds,item。

 
标签属性名 含义
where 查询条件变量, 支持数组和字符串,如$where
limit 最多查出文章数,如果分页开启,此设置无效
order 文章排序方式
page 分页参数,如果设置分页参数会自动分页
relation 关联查询,支持categories和user,多个以英文逗号分隔
pageVarName 分页后生成的分页变量名,只有设置分页参数时才有效
categoryIds 分类 id,支持数组和字符串(英文逗号分开)

 
一个最新文章列表,不分页:
<php>
$category_ids=1;
</php>
<portal:articles limit="5" order="post.published_time DESC"
categoryIds="$category_ids">
<dl class="dl-horizontal">
<dt>
<a class="img-wraper"
href="{:url('portal/Article/index',array('id'=>$vo.id,'cid'=>$vo['categories'][0]['id']))}">
<if condition="empty($vo.more.thumbnail)">
<img src="__TMPL__/public/assets/images/default_tupian4.png"
class="img-responsive" alt="{$vo.post_title}"/>
<else/>
<img src="{:cmf_get_image_url($vo.more.thumbnail)}"
class="img-responsive" alt="{$vo.post_title}"/>
</if>
</a>
</dt>
<dd>
<a href="{:url('portal/Article/index',array('id'=>$vo['id'],'cid'=>$vo['categories'][0]['id']))}">{$vo.post_title}</a>
</dd>
</dl>
</portal:articles>

一个文章列表,分页
<div>
<php>
$where=[
'post.create_time'=>['egt',0]
];
</php>
<portal:articles item="vo" where="$where" order="post.create_time DESC" page="10"
relation="categories"
categoryIds="$category.id"
returnVarName="articles_data">
<div class="list-boxes">
<h2><a href="{:cmf_url('portal/Article/index',array('id'=>$vo['id'],'cid'=>$category['id']))}">{$vo.post_title}</a>
</h2>
<p>{$vo.post_excerpt}</p>
<div>
<div class="pull-left">
<div class="list-actions">
<a href="javascript:;"><i class="fa fa-eye"></i><span>{$vo.post_hits}</span></a>
<a href="{:url('portal/Article/doLike',array('id'=>$vo['id']))}"
class="js-count-btn"><i class="fa fa-thumbs-up"></i><span class="count">{$vo.post_like}</span></a>
<a href="{:url('user/Favorite/add',array('id'=>$vo['id']))}"
class="js-favorite-btn" data-title="{$vo.post_title}"
data-url="{:cmf_url('portal/Article/index',array('id'=>$vo['id'],'cid'=>$category['id']))}"
>
<i class="fa fa-star-o"></i>
</a>
</div>
</div>
<a class="btn btn-warning btn-sm pull-right"
href="{:cmf_url('portal/Article/index',array('id'=>$vo['id'],'cid'=>$category['id']))}">查看更多</a>
</div>
</div>
</portal:articles>

</div>
<ul class="pagination">
<page/>
</ul>

我们的代码会共享出来,分享给大家。如果你获取完整的文字教程,视频教程,源码,关注公众号:云码素材,私信我入群,和小伙伴一起学习,一起动手制作你的个人博客,一起探讨代码。

1499034813928288732.jpg

 

《全栈营销之如何制作个人博客》之五:广告位添加与调用 推荐文章数据调取

博客maomao 发表了文章 • 0 个评论 • 1222 次浏览 • 2019-03-19 21:10 • 来自相关话题

上一节博客的导航我们已经动态调取,这一节我们主讲一下如何根据页面布局,后台添加广告位,及模板上动态调取广告。博客推荐文章的数据调用。 首先我们在云码博客的后台添加10条左右的测试数据,thinkcmf后台添加文章的地方在门户管理-》文章管理,点击添 ...查看全部
上一节博客的导航我们已经动态调取,这一节我们主讲一下如何根据页面布局,后台添加广告位,及模板上动态调取广告。博客推荐文章的数据调用。
首先我们在云码博客的后台添加10条左右的测试数据,thinkcmf后台添加文章的地方在门户管理-》文章管理,点击添加文章即可。添加完数据的效果如下图。

 
二.在博客后台添加广告位,在后台设置-》幻灯片管理,我们以首页为主,其他页面的广告位可以以些类推添加,首页大概有11处图片广告位置,我们以上部轮播图为例演示如何添加,调用动态广告。

后台添加完后,前台模板如何调用呢?下面我们看前台调用的程序代码如下:

 
运行的效果就和我们之前看过的静态模板页面一样,如下图所示。

 
三.头条推荐数据调用,在thinkcmf数据库中的文章存储在portal_post表中,有两个关键的字段来控制推荐和头条数据,推荐是recommended=1时,头条数据是is_top=1时。在后台设置就可以成为推荐和头条数据。

 
前端模板调用头条数据如何调用呢,具体的代码如下:

 
前端模板调用数据效果如下:

个人博客制作
我们的代码会共享出来,分享给大家。如果你获取完整的文字教程,视频教程,源码,关注公众号:云码素材,加微信:xnynews入群,和小伙伴一起学习,一起动手制作你的个人博客,一起探讨代码。

《全栈营销之如何制作个人博客》之四:php个人博客分类添加及前端导航数据调取

博客maomao 发表了文章 • 0 个评论 • 1030 次浏览 • 2019-03-15 20:15 • 来自相关话题

大家好,今天我们接着上一节的全栈营销个人博客制作,上一节我们把博客的模板给加载运行起来。今天我们主要讲解后台模板分类的添加,后台导航的添加,及前台导航的动态调用。一个好的博客,导航很重要,导航就像你网站的地图,有导向作用,能引导用户去他想去的地方,再一个好处是 ...查看全部
大家好,今天我们接着上一节的全栈营销个人博客制作,上一节我们把博客的模板给加载运行起来。今天我们主要讲解后台模板分类的添加,后台导航的添加,及前台导航的动态调用。一个好的博客,导航很重要,导航就像你网站的地图,有导向作用,能引导用户去他想去的地方,再一个好处是对seo优化有很大的好处,所以导航是我们这一节的重点。

 
一.博客分类添加
Thinkcmf后台添加博客分类很方便,可以添加无限级分类,也可以添加单个分类。我们这里只添加了5个一级博客分类,具体效果如下图。

 
二.博客导航的添加与管理
Thinkcmf后台设置里有一个导航管理,导航又分为主导航,底部导航,主导航就是博客最上面的导航,底部导航是网站底部的导航。我们这里以主导航为主来讲解,如何添加导航。主导航一般分为一级导航,二级导航,三级导航就很少了,一般网站以一二级为主。添加完的主导航效果如下图。

 
三.前台模板导航数据调用
什么叫导航数据调用,我们在后台添加的导航,要把它调用的我们博客的导航来,这样就能通过后台动态管理导航数据。当然你也可以把导航写死,写死的坏处就是后面你想管理,必须修改模板文件,再上传到服务器。这样就违背了我用PHP这样动态语言开发网站的初衷。
在thinkcmf里如何动态调用后台我们添加的导航数据呢?在thinkcmf里导航标签用于生成前台导航,相关的有三个标签navigation,navigationMenu,navigationFolder,三个必须联合使用。使用的案例如下图

 
按照这个管方的案例,我们根据自己博客的导航样式,写来的代码如下。

 
前台显示的效果如下图。

 
我们的代码会共享出来,分享给大家。如果你获取完整的文字教程,视频教程,源码,关注公众号:云码素材,私信我入群,和小伙伴一起学习,一起动手制作你的个人博客,一起探讨代码。

1499034813928288732.jpg

 

thinkcmf5 nginx 伪静态报500错误

博客maomao 发表了文章 • 0 个评论 • 2132 次浏览 • 2019-03-09 12:25 • 来自相关话题

thinkcmf5宝塔liunx版Nginx环境开启伪静态步骤。 1、绑定网站运行目录 2、填写伪静态规则: PHP[code]location / { index index.p ...查看全部
thinkcmf5宝塔liunx版Nginx环境开启伪静态步骤。
1、绑定网站运行目录

2、填写伪静态规则:
PHP
[code]location / {
index index.php index.html index.htm;
if (!-e $request_filename)
{
rewrite ^/(.*)$ /index.php?s=$1;
}
}
location /api/ {
index index.php index.html index.htm;
if (!-e $request_filename)
{
rewrite ^/api/(.*)$ /api/index.php?s=$1;
}
}
location ~* \/upload\/.+\.(html|php)$ {
return 404;
}
location ~* ^\/plugins\/.+\.(html|php)$ {
return 404;
}
location ~* \/themes\/.+\.(html|php)$ {
return 404;
}
[/code]

3、保存,OK!
 

《全栈营销之如何制作个人博客》之二:php环境安装及个人博客后台搭建 让你的博客跑起来

博客maomao 发表了文章 • 0 个评论 • 1260 次浏览 • 2019-03-06 13:15 • 来自相关话题

上一节我们讲了个人博客用什么开发语言,用什么CMS系统,从这一节我们就开始真正的干货,这一节我们讨论一下PHP环境的安装,及个人博客后台的搭建,让你的博客在正常的PHP环境中运行起来,你就可以进行后台的数据管理,添加,修改,删除什么的。我们开发这个博客,主要讲 ...查看全部
上一节我们讲了个人博客用什么开发语言,用什么CMS系统,从这一节我们就开始真正的干货,这一节我们讨论一下PHP环境的安装,及个人博客后台的搭建,让你的博客在正常的PHP环境中运行起来,你就可以进行后台的数据管理,添加,修改,删除什么的。我们开发这个博客,主要讲的是怎么快速开发一个个人博客,所以不会很系统的讲解PHP的基础知识,及thinkphp5框架的系统知识,当然在后面的模块开发中,用到细节知识点的时候,我也会讲给大家的。
一.php环境安装
这里为了节约时间,我们就不用单个安装php,apache,mysql这些软件了,比较耗时。我们选择集成环境,安装速度快,把节省下来的时间用到项目的讲解上,PHP的集成环境很多,像Xampp,phpwamp,apmserv,wampserver,phpStudy,PHPMaker等,还有很多,就不都给大家列出来了,有兴趣的可以查一下资料。这么多集成环境,他们有什么区别呢,以我来看区别微小,所以你用那个都可以,哪个你用的习惯,顺手就用哪个。我经常用的是phpstudy,所以以后我们的项目运行环境都是在它的基础上。有一点说明,集成环境只能做为你的开发环境,正式项目部署最好不要用集成的环境,根据服务器性质单独配置运行环境。
1.1.首先去phpstudy官网下载软件,自己搜索官网地址就行了,下载后执行软件,没什么技巧直接下一步,下一步就行了。安装完成后双击图标,运行起来phpstudy,当你看到下图两个图标为绿色的,就证明你的环境已经配置OK了。

 
1.2修改php的版本信息

 
配置一个本地域名,对你的项目进行测试,如何在PHPSTUDY上配置你的域名呢,并把这个域名绑定到项目上呢,需要两步。
1. 添加域名,绑定项目
找到phpstudy里的域名管理,添加网站域名,选择网站目录即可。

 
2. 修改hosts文件,路径为C:\Windows\System32\drivers\etc
添加完域名,绑定过项目过后,测试你的php环境是否是OK的,在你的项目根目录添加一个index.php文件,在里面写上一句Php代码phpinfo();输出关于 PHP 配置的信息,如果你能看到下图的信息,证明你的PHP环境已经配置成功了。

 

 
二.Thinkcmf 系统安装及后台配置,项目运行起来
2.1Thinkcmf去官方下载,下载最新版,新版要求PHP环境必须为5.6以上,才能正常运行,所以这点要注意。下载完解压放置到你的项目根目录,这里要注意,由于thinkcmf系统是基于thinkphp5开发的,所以我们上一步绑定项目的域名,要绑定到解压文件的public下,thihkcmf系统的运行目录是Public,不能把域名绑定到根目录。要不然不能正常运行。

 
2.2直接在浏览器上输入你刚才的域名,如果没什么问题,就能安装thinkcmf,直接一步一步安装就行了,不会安装去官网找一下资料即可。安装完登录后台,看到下面的页面就OK了。

 
查看首页效果,如下图,至此thinkcmf系统就已经安装运行完成,下一节我们将正式开发个人博客模块,请跟上我的步伐。
我们的代码会共享出来,分享给大家。如果你获取完整的文字教程,视频教程,源码,关注公众号:云码素材,私信我入群,和小伙伴一起学习,一起动手制作,一起探讨代码。
欢迎大家加我微信,xnynews,加入500人微信群,一起学习PHP开发,也欢迎大家关注我的公众号:云码素材

1499034813928288732.jpg


云码素材一个分享开发技术,分享精品源码素材的好平台!

《全栈营销之如何制作个人博客》之一:用什么开发语言和CMS系统能快速开发个人博客

博客maomao 发表了文章 • 0 个评论 • 1239 次浏览 • 2019-03-03 15:04 • 来自相关话题

现在的互联网,已经不再是初级互联时代,是需要全方位营销,自建粉丝池的时代,云码素材从提出全栈营销,到实践分析,总结出全栈营销第一步,先制作一个个人博客是最好的开始。今天开始就跟我一起学习如何制作一个精典的个人博客。为什么要跟着我一起学习呢,我是云码素材的工发人 ...查看全部
现在的互联网,已经不再是初级互联时代,是需要全方位营销,自建粉丝池的时代,云码素材从提出全栈营销,到实践分析,总结出全栈营销第一步,先制作一个个人博客是最好的开始。今天开始就跟我一起学习如何制作一个精典的个人博客。为什么要跟着我一起学习呢,我是云码素材的工发人员,有15年的开发经验,是一个老码农,所以如果你相信我,就跟紧我的步伐,每周都会分享。这期的《如何全栈之如何制作个人博客》共分为10节,通过这10节你会跟着我做出来一个漂亮,大气,美观,有利于SEO运营的个人博客。

 
首先我们来说一下,为什么要制作个人博客?个人博客有什么好处呢?
从现在互联网运营角度来说,任何企业和个人都不能单单靠一个平台去营销了,不管你是企业做淘宝,天猫,京东,拼多多这些电商运营,还是说你是个人自媒体,想靠自媒体运营挣一些钱,都不能只靠一个平台来做,平台是别人的,如何把平台的粉丝转换成自己的,才是正道。平台只是一个载体,如何哪天某个平台看你不爽,把帐号给你封了,你苦苦经营的帐号就没有,得不偿失。所以要想尽一切办法,把平台的粉丝,引流到你自己的渠道。制作个人博客,可以很好的把这些粉丝引流到你的博客,其次通过你自己的博客,还可以再深入引流到你的个人微信号。

 
博客也是一个很好的流量入口,当你有一个博客,经常更新,那么搜索引擎就会收录你的博客内容。目标客户通过搜索引擎搜索相关的关键词的时候,就会直达你的博客。
个人或企业博客能给你带来什么好处呢?第一个最直接的好处就是自建粉丝池,把粉丝直接引流到个人手里。第二个好处就是,你可以得到一些费用。这个费用从哪里来呢?当你的博客运营一段时间好,有了一定的流量,可以申请一些搜索引擎的联盟广告,目前比较好的搜索引擎联盟广告有,google的adsense,这个是联盟广告里最好的,单价高,挣的是美元,还有其它的baidu的联盟广告,360搜索的,搜狗等联盟广告。当你的博客有比较大的流量的时候,就会有相关行业的企业找你,做广告位,当然这个是最可观的收入。

 
制作个人博客用什么语言?用什么框架呢?用什么CMS系统最好呢?小白不懂开发能制作一个博客吗?
我们制作这个博客的教程,选着的开发语言是PHP,PHP是web开发领域最好的语言,全球70%的web网站都是用php制作的。用什么框架,我们选择的是thinkphp5,thinkphp在国内有大批的用户,比较成熟。用什么样的CMS系统,我们选择的是thinkcmf5,thinkcmf5是一个开源的中文内容管理框架,让WEB开发更简单,节约时间说走就走!

 
如果你是小白,没一点开发基础,跟着我的教程,能制作出一个博客吗?在这里我可以告诉你,可以的,我的教程分为三部分,第一部分是文字教程,详细的文字教程,图例展示,按照着一步一步操作就可以。第二步视频教程,文字看不懂,跟着视频走。第三步是第一步的源码分享。最好的是自己动手写出来代码,写不出来,我们的代码会共享出来,分享给大家。如果你获取完整的文字教程,视频教程,源码,关注工众号:云码素材,加我微信:xnynews,私信我入群,和小伙伴一起学习,一起动手制作,一起探讨代码。
1499034813928288732.jpg

 
  thinkcmf知识分享,thinkcmf模板制作