phpwind8门户模板中获取推送数据部分的代码分析
[ 2011-02-13 16:47:14 | 作者: admin ]
p.s. 今天改了下门户的配置,导致了以前推送数据的丢失,很郁闷,就仔细查看了下pw8的代码,终于找到了原因,原来除了ID之外,title也不能做修改,不然就会丢失已添加的推送数据。
打开配置文件/html/portal/oindex/config.htm,有如下获取模块定义:phpwind8读取推送数据的流程:
1、打开/data/tplcache/portal_oindex.htm,我们可以看到是通过pwTplGetData函数获取推送数据,pwTplGetData('U4803oindex','美食达人') 同时使用ID和title来指定数据源2、打开require/common.php文件,可以发现pwTplGetData函数中使用area目录中的tplgetdata类的 getData函数获取推送数据,那就继续3、打开lib/area/tplgetdata.class.php文件,发现是通过_getDataFromPush函数实现,不过要继续打开 pushdataservice 类,继续4、打开lib/area/pushdataservice.class.php文件,还要继续loadDB pushdata 5、打开lib/area/db/pushdatadb.class.php文件,看看get函数可以发现推送数据存放在 pw_pushdata 表中
评论Feed: http://blog.xg98.com/feed.asp?q=comment&id=1636
打开配置文件/html/portal/oindex/config.htm,有如下获取模块定义:
引用
<pw id="P4345oindex" />
<h4><span>美食</span></h4>
<pw id="U4803oindex" />
<ul class="cc o_home_imglistA">
<list num="18" action="user" cachetime="3" ifpushonly="0" title="美食达人" />
<loop>
<li><a href="{url}" target="_blank"><img src="{image,48,48}" alt="{title}" width="48" height="48" /></a>
<p title="{title}">{title,16}</p>
</li>
</loop>
</ul>
<h4><span>美食</span></h4>
<pw id="U4803oindex" />
<ul class="cc o_home_imglistA">
<list num="18" action="user" cachetime="3" ifpushonly="0" title="美食达人" />
<loop>
<li><a href="{url}" target="_blank"><img src="{image,48,48}" alt="{title}" width="48" height="48" /></a>
<p title="{title}">{title,16}</p>
</li>
</loop>
</ul>
1、打开/data/tplcache/portal_oindex.htm,我们可以看到是通过pwTplGetData函数获取推送数据,pwTplGetData('U4803oindex','美食达人') 同时使用ID和title来指定数据源
引用
EOT;
$pwresult = pwTplGetData('U4803oindex','美食达人');
foreach($pwresult as $key=>$val){print <<<EOT
<li>
<a href="$val[url]" target="_blank"><img src="$val[image]" alt="$val[title]" width="48" height="48" /></a>
<p title="$val[title]">$val[title]</p>
</li>
EOT;
}print <<<EOT
$pwresult = pwTplGetData('U4803oindex','美食达人');
foreach($pwresult as $key=>$val){print <<<EOT
<li>
<a href="$val[url]" target="_blank"><img src="$val[image]" alt="$val[title]" width="48" height="48" /></a>
<p title="$val[title]">$val[title]</p>
</li>
EOT;
}print <<<EOT
引用
/**
* 获取模板数据
*
* @param string $invokeName
* @param string $title
* @param int $loopId
* @return string
*/
function pwTplGetData($invokeName, $title) {
$GLOBALS['__pwTplGetData'] = true;
$tplgetdata = L::loadClass('tplgetdata', 'area');
return $tplgetdata->getData($invokeName, $title);
}
* 获取模板数据
*
* @param string $invokeName
* @param string $title
* @param int $loopId
* @return string
*/
function pwTplGetData($invokeName, $title) {
$GLOBALS['__pwTplGetData'] = true;
$tplgetdata = L::loadClass('tplgetdata', 'area');
return $tplgetdata->getData($invokeName, $title);
}
引用
function getData($invokename,$title){
if (!$invokename || !$title) return array();
$temp = $this->_getDataFromCache($invokename,$title);
if ($temp === false) {
$temp = $this->_getDataFromBBS($invokename,$title);
$this->index++;
}
return $temp;
}
function _getDataFromBBS($invokename,$title){
$pw_invkoepiece = L::loadDB('invokepiece', 'area');
$config = $this->_getPieceConfigByInovkeNameAndTitle($invokename,$title);
$data = $this->_getDataFromPush($config);
if (count($data)<$config['num'] && !$config['ifpushonly']) {
$tempElement= $this->_getDataFromSystem($config);
$data = $this->_combinElementAndPush($tempElement,$data,$config['num']);
}
//如果是图片模块,没有数据的情况下调用系统默认图片
if (!$data && $config['action']=='image') {
global $imgpath;
$data[] = array('image'=>"$imgpath/nopic.gif");
}
$this->_updateCache($config,$data);
return $data;
}
function _getDataFromPush($config){
$pushdataService = L::loadClass('pushdataservice', 'area');
$invokepieceid = $config['id'];
$num = $config['num'];
return $pushdataService->getEffectData($invokepieceid,$num);
}
if (!$invokename || !$title) return array();
$temp = $this->_getDataFromCache($invokename,$title);
if ($temp === false) {
$temp = $this->_getDataFromBBS($invokename,$title);
$this->index++;
}
return $temp;
}
function _getDataFromBBS($invokename,$title){
$pw_invkoepiece = L::loadDB('invokepiece', 'area');
$config = $this->_getPieceConfigByInovkeNameAndTitle($invokename,$title);
$data = $this->_getDataFromPush($config);
if (count($data)<$config['num'] && !$config['ifpushonly']) {
$tempElement= $this->_getDataFromSystem($config);
$data = $this->_combinElementAndPush($tempElement,$data,$config['num']);
}
//如果是图片模块,没有数据的情况下调用系统默认图片
if (!$data && $config['action']=='image') {
global $imgpath;
$data[] = array('image'=>"$imgpath/nopic.gif");
}
$this->_updateCache($config,$data);
return $data;
}
function _getDataFromPush($config){
$pushdataService = L::loadClass('pushdataservice', 'area');
$invokepieceid = $config['id'];
$num = $config['num'];
return $pushdataService->getEffectData($invokepieceid,$num);
}
引用
function PW_PushDataService() {
$this->_pushdataDao = L::loadDB('pushdata', 'area');
}
function getPushDataById($id) {
return $this->_pushdataDao->get($id);
}
$this->_pushdataDao = L::loadDB('pushdata', 'area');
}
function getPushDataById($id) {
return $this->_pushdataDao->get($id);
}
引用
var $_tableName = "pw_pushdata";
function get($id) {
$temp = $this->_db->get_one("SELECT * FROM ".$this->_tableName." WHERE id=".pwEscape($id));
return $this->_initData($temp);
}
function get($id) {
$temp = $this->_db->get_one("SELECT * FROM ".$this->_tableName." WHERE id=".pwEscape($id));
return $this->_initData($temp);
}
[最后修改由 admin, 于 2011-02-14 08:30:23]

这篇日志没有评论。
此日志不可发表评论。