目录
[PC]PHPCMS二次开发指南(上),phpcms二次开发
首页 后端开发 php教程 [PC]PHPCMS二次开发指南(上),phpcms二次开发_PHP教程

[PC]PHPCMS二次开发指南(上),phpcms二次开发_PHP教程

Jul 13, 2016 am 10:09 AM
phpcms

[PC]PHPCMS二次开发指南(上),phpcms二次开发

-------------------------------------------------------------------------------------

PHPCMS本身功能已经很完善,自带的模块可用可不用,松耦合特性使其非常适合企业的二次开发。

PC的默认路由在 phpcms/caches/configs/route.php 中定义,为content模块下index控制器的init方法

 

一. PC所有模块都在module目录下,与数据表名字相同;

  module目录中文件就是控制器,控制器名与文件名相同;

  前台控制器如index.php无须继承任何类,用于前台操作;

  后台控制器一般需要继承admin模块的admin类,一旦继承admin就需要权限验证(也可以不继承)。

 

二. 总结开发后台模块的步骤:

  1. 后台访问扩展的模块:

    扩展 - 菜单管理 - 添加菜单 - 上级:作为一级菜单(模块名,文件名,方法名)

            添加子菜单 - 上级:某个一级菜单(填不存在的模块名,填不存在的文件名,填不存在的方法名)

    扩展模块后,需要在v9_module中注册模块!(相当于安装)

  

  2. 创建数据表:

<span>create</span> <span>table</span><span> v9_link(
    .........</span><span>
)engine</span><span>=</span>myisam <span>default</span> charset<span>=</span><span>'</span><span>utf8</span><span>'</span><span>;</span><span><br /></span>
登录后复制

  

  3. 建立后台的数据模型

<?<span>php<br /></span><span>defined</span>('IN_PHPCMS') or <span>exit</span>('No permiss resources.'<span>);
pc_base</span>::load_sys_class('model', '', 0<span>);
</span><span>class</span> link_model <span>extends</span><span> model {
    </span><span>function</span><span> __construct() {
        </span><span>$this</span>->db_config = pc_base::load_config('database'<span>);
        </span><span>$htis</span>->db_setting = 'default'<span>;
        </span><span>$this</span>->table_name = 'link'<span>;
        parent</span>::<span>__construct();
    }    
}

</span><span>/*</span><span>*
 * 几点注意:
 * 1. PC的数据模型基本是鸡肋,只是指定了数据库设置和对应的表名,非彻底的MVC,直接复制一份修改即可。
 * 2. 此模型一般在控制器构造方法调用。<br /> </span><span>*/</span>
登录后复制

  4. 建立后台控制器: 

<?<span>php
    </span><span>/*</span><span>*
     * 后台友情链接,完整CURD
     </span><span>*/</span>
    <span>defined</span>('IN_PHPCMS') or <span>exit</span>('No permission resources.'<span>);

    pc_base</span>::load_app_class('admin', 'admin', 0<span>);

    </span><span>class</span> link <span>extends</span><span> admin {
        </span><span>private</span> <span>$db</span>, <span>$admin_db</span><span>;
        </span><span>public</span> <span>$siteid</span><span>;
        </span><span>function</span><span> __construct() {
            parent</span>::<span>__construct();
            </span><span>$this</span>->M = new_html_special_chars(getcache('link', 'commons'<span>));
            </span><span>$this</span>->db = pc_base::load_model('link_model'<span>);
            </span><span>$this</span>->db2 = pc_base::load_model('type_model'<span>);
        }

        </span><span>/*</span><span>*
         * 友情链接列表
         </span><span>*/</span>
        <span>public</span> <span>function</span><span> init() {
            </span><span>if</span>(<span>$_GET</span>['typeid'] != ''<span>) {
                </span><span>$where</span> = <span>array</span>('typeid'=><span>intval</span>(<span>$_GET</span>['typeid']), 'siteid'=><span>$this</span>-><span>get_siteid());
            } </span><span>else</span><span> {
                </span><span>$where</span> = <span>array</span>('siteid'=><span>$this</span>-><span>get_siteid());
            }
            </span><span>$page</span> = (<span>isset</span>(<span>$_GET</span>['page']) && <span>intval</span>(<span>$_GET</span>['page'])) ? <span>intval</span>(<span>$_GET</span>['page']) : 1<span>;
            </span><span>$infos</span> = <span>$this</span>->db->listinfo(<span>$where</span>, <span>$order</span> = 'listorder DESC, linkid DESC', <span>$page</span>, <span>$page</span> = '9'<span>);
            </span><span>$pages</span> = <span>$this</span>->db-><span>pages;
            </span><span>$types</span> = <span>$this</span>->db2->listinfo(<span>array</span>('module'=>ROUTE_M, 'siteid'=><span>$this</span>->get_siteid()), <span>$order</span> = 'typeid DESC'<span>);
            </span><span>$types</span> = new_html_special_chars(<span>$types</span><span>);
            </span><span>$type_arr</span> = <span>array</span><span>();
            </span><span>foreach</span>(<span>$types</span> <span>as</span> <span>$typeid</span>=><span>$type</span><span>) {
                </span><span>$type_arr</span>[<span>$type</span>['typeid']] = <span>$type</span>['name'<span>];
            }
            </span><span>$big_menu</span> = <span>array</span>('javascript:window.top.art.dialog({id:\'add\',iframe:\'?m=link&c=link&a=add\', title:\''.L('link_add').'\', width:\'700\', height:\'450\'}, function(){var d = window.top.art.dialog({id:\'add\'}).data.iframe;var form = d.document.getElementById(\'dosubmit\');form.click();return false;}, function(){window.top.art.dialog({id:\'add\'}).close()});void(0);', L('link_add'<span>));

            </span><span>include</span> <span>$this</span>->admin_tpl('link_list'<span>);
        }

        </span><span>/</span><span>* 判断标题重复和验证 </span><span>*/</span>
           
        <span>/</span><span>* 添加分类时,验证分类名是否已存在 </span><span>*/</span>

        <span>/*</span><span>*
         * 添加友情链接
         </span><span>*/</span>
        <span>public</span> <span>function</span><span> add() {
            </span><span>if</span>(<span>isset</span>(<span>$_POST</span>['dosubmit'<span>])) {
                </span><span>$_POST</span>['link']['addtime'] =<span> SYS_TIME;
                </span><span>$_POST</span>['link']['siteid'] = <span>$this</span>-><span>get_siteid();
                </span><span>if</span>(<span>empty</span>(<span>$_POST</span>['link']['name'<span>])) {
                    showmessage(L(</span>'sitename_noempey'),<span> HTTP_REFERER);
                } </span><span>else</span><span> {
                    </span><span>$_POST</span>['link']['name'] = safe_replace(<span>$_POST</span>['link']['name'<span>]);
                }
                </span><span>if</span>(<span>$_POST</span>['link']['logo'<span>]) {
                    </span><span>$_POST</span>['link']['logo'] = safe_replace(<span>$_POST</span>['link']['logo'<span>]);
                }
                </span><span>$data</span> = new_addslashes(<span>$_POST</span>['link'<span>]);
                </span><span>$linkid</span> = <span>$this</span>->db->insert(<span>$data</span>, <span>true</span><span>);
                </span><span>if</span>( ! <span>$linked</span><span>) {
                    </span><span>return</span> <span>false</span><span>;
                }
                </span><span>$siteid</span> = <span>$this</span>-><span>get_siteid();
                </span><span>//</span><span>更新附件状态</span>
                <span>if</span>(pc_base::load_config('system', 'attachment_stat') & <span>$_POST</span>['link']['logo'<span>]) {
                    </span><span>$this</span>->attachment_db = pc_base::load_model('attachment_model'<span>);
                    </span><span>$this</span>->attachment_db->api_update(<span>$_POST</span>['link']['logo'], 'link-' . <span>$linkid</span>, 1<span>);
                }
                showmessage(L(</span>'operation_success'), HTTP_REFERER, '', 'add'<span>);
            } </span><span>else</span><span> {
                </span><span>$show_validator</span> = <span>$show_scroll</span> = <span>$show_header</span> = <span>true</span><span>;
                pc_base</span>::load_sys_class('form', '', 0<span>);
                </span><span>$siteid</span> = <span>$this</span>-><span>get_siteid();
                </span><span>$types</span> = <span>$this</span>->db2->get_types(<span>$siteid</span><span>);
                </span><span>include</span> <span>$this</span>->admin_tpl('link_add'<span>);
            }    
        }

         </span><span>/*</span><span> 异步更新排序 </span><span>*/</span>

         <span>/*</span><span> 手动更新排序 </span><span>*/</span>

         <span>/*</span><span> 添加友情链接分类 </span><span>*/</span>

         <span>/*</span><span> 删除分类 </span><span>*/</span>

         <span>/*</span><span> 分类管理 </span><span>*/</span>

         <span>/*</span><span>*
          * 修改友情链接分类
          </span><span>*/</span>
        <span>public</span> <span>function</span><span> edit_type() {
            </span><span>if</span>(<span>isset</span>(<span>$_POST</span>['dosubmit'<span>])) {
                </span><span>$typeid</span> = <span>intval</span>(<span>$_GET</span>['typeid'<span>]);
                </span><span>if</span>(<span>$typeid</span> < 1) <span>return</span> <span>false</span><span>;
                </span><span>if</span>( ! <span>is_array</span>(<span>$_POST</span>['type']) || <span>empty</span>(<span>$_POST</span>['type'])) <span>return</span> <span>false</span><span>;
                </span><span>if</span>((!<span>$_POST</span>['type']['name']) || <span>empty</span>(<span>$_POST</span>['type']['name'])) <span>return</span> <span>false</span><span>;
                </span><span>$this</span>->db2->update(<span>$_POST</span>['type'], <span>array</span>('typeid'=><span>$typeid</span><span>));
                showmessage(L(</span>'operation_success'),'?m=link&c=link&a=list_type','', 'edit'<span>);
            } </span><span>else</span><span> {
                </span><span>$show_validator</span> = <span>$show_scroll</span> = <span>$show_header</span> = <span>true</span><span>;
                </span><span>//</span><span>查询分类内容</span>
                <span>$info</span> = <span>$this</span>->db2->get_one(<span>array</span>('typeid'=><span>$_GET</span>['typeid'<span>]));
                </span><span>if</span>( ! <span>$info</span><span>) {
                    showmessage(L(</span>'linktype_exit'<span>));
                    </span><span>extract</span>(<span>$info</span><span>);
                    </span><span>include</span> <span>$this</span>->admin_tpl('link_type_edit'<span>);
                }
            }
        }

         </span><span>/*</span><span>*
          * 删除友情链接
          </span><span>*/</span>
        <span>public</span> <span>function</span><span> delete() {
            </span><span>if</span>( ! <span>isset</span>(<span>$_GET</span>['linkid']) || (<span>empty</span>(<span>$_GET</span>['linkid']) && ! <span>isset</span>(<span>$_POST</span>['linkid'])) || <span>empty</span>(<span>$_POST</span>['linkid'<span>])) {
                showmessage(L(</span>'illegal_parameters'),<span> HTTP_REFERER);
            } </span><span>else</span><span> {
                </span><span>if</span>(<span>is_array</span>(<span>$_POST</span>['linkid'<span>])) {
                    </span><span>foreach</span>(<span>$_POST</span>['linkid'] <span>as</span> <span>$linkid_arr</span><span>) {
                        </span><span>//</span><span>批量删除友情链接</span>
                        <span>$this</span>->db->delete(<span>array</span>('linkid'=><span>$linkid_arr</span><span>));
                        </span><span>//</span><span>更新附件状态</span>
                        <span>if</span>(pc_base::load_config('system', 'attachment_stat'<span>)) {
                            </span><span>$this</span>->attachment_db = pc_base::load_model('attachment_model'<span>);
                            </span><span>$this</span>->attachment_db->api_delete('link - '. <span>$linkid_arr</span><span>);
                        }
                    }
                    showmessage(L(</span>'operation_success', '?m=link&c=link'<span>));
                } </span><span>else</span><span> {
                    </span><span>$linkid</span> = <span>intval</span>(<span>$_GET</span>['linkid'<span>]);
                 </span><span>if</span>(<span>$linkid</span> < 1<span>) {
                        </span><span>return</span> <span>false</span><span>;
                    }
            </span><span>//</span><span>删除友情链接</span>
            <span>$result</span> = <span>$this</span>->db->delete(<span>array</span>('linkid'=><span>$linkid</span><span>));
            </span><span>//</span><span>更新附件状态if(pc_base::load_config('system','attachment_stat')) {</span>
            <span>$this</span>->attachment_db = pc_base::load_model('attachment_model'<span>);
            </span><span>$this</span>->attachment_db->api_delete('link-'.<span>$linkid</span><span>);
            }
            </span><span>if</span>(<span>$result</span><span>){
            showmessage(L(</span>'operation_success'),'?m=link&c=link'<span>);
            }</span><span>else</span><span> {
            showmessage(L(</span>"operation_failure"),'?m=link&c=link'<span>);
            }
                }
                showmessage(L(</span>'operation_success'),<span> HTTP_REFERER);
            }
        }

    }

</span><span>/*</span><span>*
 * 几点注意:
 * 1. 作为一款产品,你可以感受到它程序的严谨性,照着做。
 * 2. 操作数据类和其它系统类均在 libs/classes/ 中,数据模型基类model.class.php通过数据库工厂类作为抽象层调用操作数据库的方法。
 * 3. 查询所有为listinfo, 单条信息为get_one, 增加为insert, 修改为update。
 * 4. 提示消息为系统公共函数showmessage(),在 libs/functions/global.func.php 中。
 * 5. L()方法为语言处理函数,将读入语言包,根据后台配置显示英文/中文, 同样是系统公共函数,<br /> * 6. 加载后台模板 include $this->admin_tpl(""); 这是admin模块下admin.class.php类的方法<br /> * <www.Chenwei.ws>
 </span><span>*/</span>
登录后复制

  5. 建立后台模板文件

  后台模板文件都在 modules/link/templates 下,文件名统一以“ .tpl.php”结尾

<span>/*</span><span>*
 * 后台模板局部
 </span><span>*/</span>

<?<span>php
</span><span>defined</span>('IN_ADMIN') or <span>exit</span>('No Permission resources.'<span>);
</span><span>$show_dialog</span> = 1<span>;
</span><span>include</span> <span>$this</span>->admin_tpl('header', 'admin'<span>);
</span>?>
<table width="100%" cellspacing="0" <span>class</span>="search-form">
    <tbody>
        <tr>
        <td><div <span>class</span>="explain-col"> 
        <?php <span>echo</span> L('all_linktype')?>:    <a href="?m=link&c=link"><?php <span>echo</span> L('all')?></a>  &<span>nbsp;
        </span><a href="?m=link&c=link&typeid=0">默认分类</a>&<span>nbsp;
        </span><?<span>php
    </span><span>if</span>(<span>is_array</span>(<span>$type_arr</span><span>)){
    </span><span>foreach</span>(<span>$type_arr</span> <span>as</span> <span>$typeid</span> => <span>$type</span><span>){
        </span>?><a href="?m=link&c=link&typeid=<?php echo <span>$typeid</span>;?>"><?php <span>echo</span> <span>$type</span>;?></a>&<span>nbsp;
        </span><?php }}?>
        </div>
        </td>
        </tr>
    </tbody>
</table>

<span>/*</span><span>*
 * 几点注意:
 * 1. 后台模板是混编风格,由于在后台控制器中总是最后调用模板,所以系统库和函数以及变量总是可用的。
 * 2. 模板底部可以写一些自己的JS操作函数。
 </span><span>*/</span>
登录后复制

PHPCMS的模块化设计非常人性化,更多有趣的地方等待大伙儿去发现,等待:[PC]PHPCMS二次开发指南(下)

 

Link:http://www.cnblogs.com/farwish/p/4249318.html

@黑眼诗人 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/947741.htmlTechArticle[PC]PHPCMS二次开发指南(上),phpcms二次开发 ------------------------------------------------------------------------------------- PHPCMS本身功能已经很完善,自...
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

phpcms是什么框架 phpcms是什么框架 Apr 20, 2024 pm 10:51 PM

PHP CMS 是一种基于 PHP 的开源内容管理系统,用于管理网站内容,其特点包括易用性、强大功能、可扩展性、安全性高和免费开源。它可以节省时间、提升网站质量、增强协作并降低开发成本,广泛应用于新闻网站、博客、企业网站、电子商务网站和社区论坛等各种网站。

phpcms怎么跳转到详情页 phpcms怎么跳转到详情页 Jul 27, 2023 pm 05:23 PM

phpcms跳转到详情页方法:1、使用header函数来生成跳转链接;2、循环遍历内容列表;3、获取内容的标题和详情页链接;4、生成跳转链接即可。

微信登录集成指南:PHPCMS实战 微信登录集成指南:PHPCMS实战 Mar 29, 2024 am 09:18 AM

标题:微信登录集成指南:PHPCMS实战在今天的互联网时代,社交化登录已经成为网站必备的功能之一。微信作为国内最流行的社交平台之一,其登录功能也被越来越多的网站所采用。本文将介绍如何在PHPCMS网站中集成微信登录功能,并提供具体的代码示例。第一步:注册微信开放平台账号首先,我们需要在微信开放平台上注册一个开发者账号,申请相应的开发权限。登录[微信开放平台]

phpcms是什么意思 phpcms是什么意思 Apr 20, 2024 pm 10:39 PM

PHPCMS 是一款免费开源的内容管理系统 (CMS),特点包括:开放源码、模块化、灵活、用户友好和社区支持。它可用于创建各种类型的网站,包括企业网站、电子商务网站、博客和社区论坛。技术要求包括:PHP 5.6 或更高版本、MySQL、MariaDB 或 PostgreSQL 数据库以及 Apache 或 Nginx Web 服务器。

phpcms不是免费吗 phpcms不是免费吗 Mar 01, 2023 am 10:24 AM

phpcms不是完全免费的。phpcms属于开源cms系统,但是开源并不等于免费,它有两个版本:免费版和商业版,免费版仅限于个人非商业用途,而商业版需要购买授权;个人可以作为研究使用,如果商业应用,需要支付一定费用。

phpcms有哪些版本 phpcms有哪些版本 Jun 14, 2023 pm 01:13 PM

phpcms有两个版本比较知名,分别是:1、phpCMS4,支持自定义 URL 规则,网站管理后台美观易用,前端插件许多,可自由扩展功能;2、phpCMS2008R1,支持多语言、多站点管理,页面管理器便捷灵活方便,非常轻量级,运行速度快。

phpcms用什么数据库 phpcms用什么数据库 Feb 21, 2023 pm 06:57 PM

phpcms用mysql数据库。phpcms是一个PHP开源网站管理系统,采用PHP MYSQL做为技术基础进行开发。PHPCMS V9采用OOP方式进行基础运行框架搭建,支持的PHP版本是PHP5及以上、支持的MYSQL版本是MySql 4.1以上版本。

phpcms怎么修改站点名称 phpcms怎么修改站点名称 Feb 24, 2023 am 09:29 AM

phpcms修改站点名称的方法:1、使用管理员登录后台页面;2、在顶部的菜单栏找到“设置”选项单击,然后在左侧的菜单出找到“站点管理”;3、找到需要修改的站点,点击该站点域名右面的修改链接;4、在弹出的窗口中修改站点名称即可。

See all articles