学习内容:
https://www.kancloud.cn/tpshop/thinkphp5/280417
ThinkPhP5 项目实战(第四讲):
请看下面的图,左边是thinkphp5的目录,右边是tpshop的目录。
Admin 管理员模块
Api 手机app接口模块(?)
Home网站前台模块
Mobile 手机网站模块
application\home\logic 共用逻辑层代码
application\common.php TPshop 共用函数库
application\function.php php 基础共用函数库
application\config.php 注意底部的重要配置
以及纯静态缓存规则配置 HTML_CACHE_ARR
application\database.php 数据库配置文件
每个模块父类控制器
例如 application\home\controller\Base.php
www\thinkphp\helper.php TP5 助手函数实现 M( ) D( ) U( ) S( ) C( ) I( ) F( )
(?)
www\plugins 插件目录
www\plugins \function 功能插件
www\plugins\login 登录插件
www\plugins\payment 支付插件
www\plugins\shipping 物流插件
www\public\upload 用户上传目录
www\public\upload\goods\thumb缩略图生成方式
演示缩略图 在模板中怎么生成的
缩略图,index.html首页模板文件中,看到缩略图生成的函数。
<div class="hoste_ri">
<ul>
<foreach name="v[hot_goods]" item="g" key="gk">
<if condition="$gk lt 8">
<li>
<a href="{:U('Home/Goods/goodsInfo',array('id'=>$g[goods_id]))}">
<img class="picture_main" src="{$g[goods_id]|goods_thum_images=200,200}"/>
<span class="name_main">{$g[goods_name]|getSubstr=0,15}</span>
<!--<span class="intro_main">{$g[name]}</span>-->
<span class="price_main"><i>¥</i>{$g[shop_price]}</span>
</a>
</li>
</if>
</foreach>
</ul>
</div>
在common.php中
/**
* 商品缩略图 给于标签调用 拿出商品表的 original_img 原始图来裁切出来的
* @param type $goods_id 商品id
* @param type $width 生成缩略图的宽度
* @param type $height 生成缩略图的高度
*/
function goods_thum_images($goods_id,$width,$height){
if(empty($goods_id))
return '';
//判断缩略图是否存在
$path = "public/upload/goods/thumb/$goods_id/";
$goods_thumb_name ="goods_thumb_{$goods_id}_{$width}_{$height}";
// 这个商品 已经生成过这个比例的图片就直接返回了
if(file_exists($path.$goods_thumb_name.'.jpg')) return '/'.$path.$goods_thumb_name.'.jpg';
if(file_exists($path.$goods_thumb_name.'.jpeg')) return '/'.$path.$goods_thumb_name.'.jpeg';
if(file_exists($path.$goods_thumb_name.'.gif')) return '/'.$path.$goods_thumb_name.'.gif';
if(file_exists($path.$goods_thumb_name.'.png')) return '/'.$path.$goods_thumb_name.'.png';
$original_img = M('Goods')->where("goods_id", $goods_id)->getField('original_img');
if(empty($original_img)) return '';
$original_img = '.'.$original_img; // 相对路径
if(!file_exists($original_img)) return '';
//$image = new \think\Image();
$image = \think\Image::open($original_img);
$goods_thumb_name = $goods_thumb_name. '.'.$image->type();
//生成缩略图
if(!is_dir($path))
mkdir($path,0777,true);
//参考文章 http://www.mb5u.com/biancheng/php/php_84533.html 改动参考 http://www.thinkphp.cn/topic/13542.html
$image->thumb($width, $height,2)->save($path.$goods_thumb_name,NULL,100); //按照原图的比例生成一个最大为$width*$height的缩略图并保存
//图片水印处理
$water = tpCache('water');
if($water['is_mark']==1){
$imgresource = './'.$path.$goods_thumb_name;
if($width>$water['mark_width'] && $height>$water['mark_height']){
if($water['mark_type'] == 'img'){
$image->open($imgresource)->water(".".$water['mark_img'],$water['sel'],$water['mark_degree'])->save($imgresource);
}else{
//检查字体文件是否存在
if(file_exists('./zhjt.ttf')){
$image->open($imgresource)->text($water['mark_txt'],'./zhjt.ttf',20,'#000000',$water['sel'])->save($imgresource);
}
}
}
}
return '/'.$path.$goods_thumb_name;
}
www\template\pc\default\config.php演示模板切换
大概讲述模板配置文件 config.php 和 html.php football足球模板
手机模板的切换。
实际上是更新了,/application/home/home.html
在/template/下有,mobile,pc两个目录。