调用DiscuzX中模块的内容~

    DiscuzX后台 》 门户 》 模块管理 》 数据调用 中可以调制调用模块,可以站外调用。但是站外调用因为涉及到跨域问题,所以是JS形式的,但我是本地网站中想调用。所以想要PHP格式的。查看一下代码。

    <script type="text/javascript" src="http://localhost/bbs/api.php?mod=js&bid=41"></script>

bbs/api.php的代码:

<?php

define('IN_API', true);
define('CURSCRIPT', 'api');

$modarray = array('js' => 'javascript/javascript', 'ad' => 'javascript/advertisement');

$mod = !empty($_GET['mod']) ? $_GET['mod'] : '';
if(empty($mod) || !array_key_exists($mod, $modarray)) {
 exit('Access Denied');
}

require_once './api/'.$modarray[$mod].'.php';//这里根据方式调用下面文件。

function loadcore() {
 global $_G;
 require_once './source/class/class_core.php';

 $discuz = & discuz_core::instance();
 $discuz->init_cron = false;
 $discuz->init_session = false;
 $discuz->init();
}

?>

bbs/api/javascript/php.php的代码

<?php

header('Expires: '.gmdate('D, d M Y H:i:s', time() + 60).' GMT');

if(!defined('IN_API')) {
 exit('document.write(\'Access Denied\')');
}

loadcore();

include_once libfile('function/block');

loadcache('blockclass');
$bid = intval($_G['gp_bid']);
block_get_batch($bid);
$data = block_fetch_content($bid, true);

$search = "/(href|src)\=(\"|')(?![fhtps]+\:)(.*?)\\2/i";
$replace = "\\1=\\2$_G[siteurl]\\3\\2";
$data = preg_replace($search, $replace, $data);

echo 'document.write(\''.preg_replace("/\r\n|\n|\r/", '\n', addcslashes($data, "'\\")).'\');';

?>

经过我的整理,在本站调用的话:test.php

<?php

require_once ROOT_PATH.'bbs/source/class/class_core.php';
$discuz = & discuz_core::instance();
$discuz->init();  //以上是调用discuz公共执行类等核心代码


include_once libfile('function/block');
loadcache('blockclass');
//$bid = intval($_G['gp_bid']);
$bid = 41;//这里我直接把ID值赋了
block_get_batch($bid);
$data = block_fetch_content($bid, true);

$search = "/(href|src)\=(\"|')(?![fhtps]+\:)(.*?)\\2/i";
$replace = "\\1=\\2$_G[siteurl]\\3\\2";
$data = preg_replace($search, $replace, $data);

echo addcslashes($data, "'\\");
?>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值