CMS笔记—Metinfo米拓5.3.19

作者: Timeless 更新时间: 阅读量: 50

1517064457.jpg

使用Metinfo作为后台CMS管理系统,首先你安装一个带演示数据的Metinfo然后到后台里面备份一次,之后就是到处点点看看,每个功能对应修改了前台的哪些东西。等你熟悉了后台的设置,差不多就可以学习模版的制作了。

(适用于5.x版本)

Metinfo模版制作文档:http://doc.metinfo.cn/muban/#doc_2.5 ,看这个了解文件结构以及每个文件的功能,JS的模块化加载等

模版标签:http://doc.metinfo.cn/muban/tag/mblable/ 这个是标签文档,里面封装了一些方法,方便我们调用数据和后台的交互。

导航、banner、侧边栏、底部具体的就不贴代码的,因为不一定就合用,反正可以参考默认模板去写自己需要的,我比较喜欢先写前端项目,然后再转换成metinfo的模版。

接下来记录下制作的时候遇到的坑:

关于头部引用自定义的CSS、JS外部文件

使用metlabel_html5(0)让头部标签不闭合,引入后自己加</head>进行闭合。

<!--<?php
$methtml_head  = metlabel_html5(1);
echo <<<EOT
-->
{$methtml_head}
<link rel="stylesheet" type="text/css" href="{$img_url}css/app.css"/>
<script type="text/javascript" src="{$img_url}lib/jquery/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="{$img_url}js/app.js"></script>
</head>

头部默认调用、title、keywords 在public\php\metlabels.inc.php

栏目自定义模版

简介模块 新建一个show.php

<?php
If($class1==""){
require_once template('对应的模板文件名');
}
//判断二级栏目
else if($class2==""){
require_once template('对应的模板文件名');
}
//判断三级栏目
else if($class3==""){
require_once template('对应的模板文件名');
}else{
 
}
?>

依次类推 产品、文章、图片模块列表页对应product.php news.php img.php

内容页 showproduct.php shownews.php img.php 有需要指定模板的就在对应的php里面判断并require_once引入对应的单页模板

更简单的去购买一个 栏目自定义模版 的应用

关于后台百度编辑器代码修饰器里面的部分html代码(a、li标签等),二次编辑会被过滤掉的问题:

定位到\app\system\admin\templates\web\content 里面的article_add.php

<h3>详细内容</h3> 下面的改成

<!--
EOT;
var_dump($list[content]);
$html=htmlentities($list[content]);
echo <<<EOT
-->
<dl>
    <dd class="ftype_ckeditor">
        <div class="fbox">
            <textarea name="content" data-ckeditor-y="500">{$html}</textarea>
        </div>
    </dd>
</dl>

产品模块参数管理没有附件选项(但图片、文章模块有):

机智的我审查元素发现,附件被注销掉了! 为啥呢,难道不支持这个功能~

QQ截图20180403105217.jpg

app/system/admin/system/class/sys_para.class.php

<select name=\"type-{$id}\" class=\"paratype\" data-checked=\"{$value}\">
    <option value=\"1\">简短</option>
    <option value=\"2\">下拉</option>
    <option value=\"3\">文本</option>
    <option value=\"4\">多选</option>
    <--<option value=\"5\">附件</option>-->
    <option value=\"6\">单选</option>
    <option value=\"7\">城市选择</option>
    <option value=\"8\">仅管理员可修改</option>
</select>

把注释去掉,然后试了下这功能是可以使用的,还是可以上传文件

但是前台调用参数,居然输出了个a标签的下载链接,我们要的只是一个地址啊喂

用IDE整站查找,定位到include/global/showmod.php

把57行 

$news[$nowpara1]="<a href='{$list1['info']}' {$metblank} class='met_annex {$fltp}' title='{$list1['imgname']}'>{$list1['imgname']}</a>";

注释掉

全站开启HTTPS后,后台有些外部资源的地址错误

(此问题后续版本更新已修复)

这些地址会变成httpss开头,一看这个肯定发现原来的地址就是https,然后后面又添加了一个s

在app/system/include/public/ui/admin/head.php

if(strstr($_M[config][met_weburl],'https')){
    $_M[url][api]=str_replace('http','https',$_M[url][api]);
    $_M[url][app_api]=str_replace('http','https',$_M[url][app_api]);
}

var_dump($_M[url][api])后发现,这个$_M[url][api]本来就做过http变https的处理,然后这里又替换了一次,所以就变成了https,注释掉发现正常了。

后台图片管理加载缓慢

文章详情编辑中从图片库中选择,图片加载很慢,因为列表的分页是虚拟的,只是控制一部分列表显示,但是列表所有的图片都会在打开的时候加载

解决方案:添加懒加载

找到 app/system/include/public/js/examples/upload/ 目录

//own.js 第73行,移除li的背景图
success: function(obj){
    var html = '',weburl = siteurl.substring(0,siteurl.length-1);
    $.each(obj, function (n, value) {
        var path = weburl + value.path;
        html += '<li title="'+value.name+'">';
        html += '<div class="check hide" data-value="'+value.value+'" data-path="'+path+'"><i class="fa fa-check"></i></div>';
        html += '<div class="widget-image-meta">'+value.x+'x'+value.y+'</div>';
        html += '</li>';
    });
    $("#upimglist").append(html);
    $("#upimglist").attr('data-ok', 1);
}
//jPages.min.js,
//搜索 this._itemsOriented.eq(this._index).fadeTo(this.options.fallback, 1); 
//在它前面添加  this._itemsOriented.eq(this._index).css('background-image', "url(" + this._itemsOriented.eq(this._index).find('.check').attr('data-path') + ")");
//代码转化为正常格式,大概在295行,延时设置上面li的背景图
this._delay = setInterval(this.bind(function() {
    if(this._index === this._itemsOriented.length) clearInterval(this._delay);
    else {
        this._itemsOriented.eq(this._index).css('background-image', "url(" + this._itemsOriented.eq(this._index).find('.check').attr('data-path') + ")"); //加上这句
        this._itemsOriented.eq(this._index).fadeTo(this.options.fallback, 1);
    }
    this._index = this._index + 1;
}, this), this.options.delay);

关闭后台自动跳转升级页面

app/system/include/public/js/examples/include/patch.js

//25行注释掉
window.location.href=adminurl+"index.php?renewable=1#metnav_75";

 未完待续~