请选择 进入手机版 | 继续访问电脑版

[discuz教程] 给discuz添加一个独立的页面

发表于 2019-6-2 13:21:56 mobankoudai 用户等级--管理员
    昨天我在想给我的discuz网站添加一个视频解析页面,并且需要用户登陆才可以解析,要实现这个功能首先肯定要有一个独立的页面,我们在这里称它为解析页面,discuz本身是肯定每月这个页面的,所以我们就开始自己加一个吧。



比如想新建一个test.php,则整个MVC过程如下:

upload根目录下新增test.php 【入口文件】

template/default下新建test文件夹,文件夹下新建你所定义的mod文件名,【模板文件】 比如test.php?mod=run,则对应的模板文件为template/default/test/run.php

source下class文件夹中新增class_test.php 【模块类文件】比如mod定义为run,则该文件里面添加run类及其方法,如果定义了多个mod则声明多个模块类

source下function文件夹中新增function_test.php【模块函数】这里可以分别定义不同mod的方法以及公共方法

source下module文件夹中新增test文件夹,该文件中增加一些文件,文件名根据你在test.php中定义的$modarray的名称来创建【实例文件】:命名规则为test_模块名.php



我定义了run,laugh,talk三个模块,实际test.php的效果如下:

默认地址:域名/test.php


QQ截图20190602131747.jpg



run模块地址:域名/test.php?mod=run


QQ截图20190602131747.jpg


laugh模块地址:域名/test.php?mod=laugh


QQ截图20190602131747.jpg
入口文件test.php


<?php  
define('APPTYPEID', 0);  
define('CURSCRIPT', 'test');  

require './source/class/class_core.php';  
$discuz = C::app();  
//echo "<pre/>";  
//print_r($discuz);  
$modarray = array('talk', 'laugh','run');  

if(!!isset($_GET['mod']) && !in_array($_GET['mod'],$modarray)){  
    echo('mod is undefined!');  
}  

$mod = isset($_GET['mod']) ? $_GET['mod']:'talk';//有个方法判断当前的model  
define('CURMODULE', $mod);  
$discuz->init();  

require libfile('function/test');  
require libfile('class/test');  
runhooks();  
require DISCUZ_ROOT.'./source/module/test/test_'.$mod.'.php';  
?>  


function文件:

source/function/function_test.php

<?php  
if(!defined('IN_DISCUZ')) {  
    exit('Access Denied');  
}  

function talk($msg){  
    echo "new ".__FUNCTION__." model and runing in ".__FUNCTION__." model,".$msg;  
}  

function laugh($msg){  
    echo "new ".__FUNCTION__." model and runing in ".__FUNCTION__." model,".$msg;  
}  

function run($msg){  
    echo "new ".__FUNCTION__." model and  runing in ".__FUNCTION__." model,".$msg;  
}  
?>  




class类文件:

source/class/class_test.php


<?php  
if(!defined('IN_DISCUZ')) {  
    exit('Access Denied');  
}  

class talk{  
    function __construct($msg){  
        talk($msg);  
    }  
    function  run(){  
        return "now in ".__CLASS__." model ,time is:".date("Y-m-d H:i:s",time());  
    }  
}  

class laugh{  
    function __construct($msg){  
        laugh($msg);  
    }  
    function  run(){  
        return "now in ".__CLASS__." model ,time is:".date("Y-m-d H:i:s",time());  
    }  
}  

class run{  

    function __construct($msg){  
        run($msg);  
    }  
    function  run(){  
        return "now in ".__CLASS__." model ,time is:".date("Y-m-d H:i:s",time());  
    }  
}  
?>  


模块实例文件:【多个以此类推】

source/module/test/test_laugh.php


<?php  
if(!defined('IN_DISCUZ')) {  
    exit('Access Denied');  
}  
define('NOROBOT', TRUE);  
//echo "hello world! I can laugh";  
$c = new laugh("hello,laugh");  
$time = $c->run();  
include template('test/laugh');  
?>  


模板文件:【多个以此类推】

template/default/test/llaugh.php


<!--{template common/header}-->  
<style>  
     .talk{padding: 2em;}  
     .talk p{font-size: 30px;border: 5px solid #F0F2F2;padding: 2em;border-radius: 2px;}  
     .talk p span{font-size: 12px;display: inline-block;margin-right: 2px;margin-left: 2em;}  
</style>  
<div class="talk">  
    <p>独立的laughing页面,<span>{$time}</span></p>  

</div>  
<!--{template common/footer}-->  


这样一个独立的页面就添加完成的,至于它是一个什么页面就看你怎么想的。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表
本站不提供充值,如需金币请分享资源赚,没有源码分享的多来论坛发发贴就可以升级用户组免金币了鸭!各别源码说明中写着要钱钱就别问为啥不能下了鸭~