站长之家 - 站长资讯 - 易采站长站

当前位置: > 建站教程 > 源码教程 > CMS 教程 >

phpcms v9 跨站点 多站点推荐位调用-PhpCms教程

2019-10-01 10:25 | 来源:易采站长站 | 编辑:admin |

最近在做主站和子站的调用数据时遇问题:比如我们设置了推荐位为:首页推荐
分别在子站1、子站2的内容中推荐一篇新闻为首页推荐
在主站调用传统的调用方式为:
{pc:content action="position" posid="1" order="listorder DESC" thumb="1" num="1"}
{loop $data $r}
。。。。。。
{/loop}{/pc}
我们查看缓存模版以及content_tag.class.php文件下的position函数 它判断了一个siteid的变量如果为空那么就自动为主站默认1
这样的话即使你这样调用
{pc:content action="position" posid="1" siteid="$siteid" order="listorder DESC" thumb="1" num="1"}
{loop $data $r}
。。。。。。
{/loop}{/pc}
那么也只能调用当前的站点,做不到全站调用
解决方案:
打开扩展函数库:写入函数
/*跨站点获取推荐位信息列表
$posid 推荐位id
$num 调用条数
$thumb 1为图片 0 为文字
$siteid 站点id
$catid 为栏目ID
*/
function pos_oversite($posid,$num=6,$thumb=1,$order="listorder desc",$siteid="",$catid="")
{
$sql="";
$array = array();
$pos=intval($posid);
$db=pc_base::load_model('content_model');
$db->table_name='wecheposition_data';
if(!empty($catid)) $sql = "`catid` = '$catid' AND ";
if($thumb) $sql.= "`thumb` = '$thumb' AND ";
if(!empty($siteid)) $sql.= "`posid` = '".$posid."' AND `siteid` = '".$siteid."'";
else $sql.= "`posid` = '$posid'";
$news=$db->select($sql,'*',$num,$order);
if(!empty($news)) {
foreach($news as $info)
{
$key = $info['catid'].'-'.$info['id'];
$array[$key] = string2array($info['data']);
$arr= getidurl($info['catid'],$info['id'],$info['modelid']);
$array[$key]['url']=$arr['url'];
$array[$key]['catname']=$arr['catname'];
$array[$key]['caturl']=$arr['caturl'];
$array[$key]['id'] = $info['id'];
$array[$key]['catid'] = $info['catid'];
}
}
return $array;
}
/*获取单条信息新闻信息
$id 新闻ID
$modelid 模型id
$catid 为栏目ID
*/
function getidurl($catid,$id,$modelid)
{
$cid=intval($catid);
$db=pc_base::load_model('content_model');
$db->table_name='wechemodel';
$r=$db->get_one("`modelid`={$modelid}");
$db->table_name="weche".$r['tablename'];
$n=$db->get_one("`id`={$id}");
$array=array();
$array['url']=$n['url'];
$array['title']=$n['title'];
$array['description']=$n['title'];
$array['updatetime']=$n['updatetime'];
$array['inputtime']=$n['inputtime'];
$db->table_name="wechecategory";
$c=$db->get_one("`catid`={$catid}");
$array['catname']=$c['catname'];
$sid=$c['siteid'];
$db->table_name='wechesite';
$s=$db->get_one("`siteid`={$sid}");
if(stripos($c['catname'],"http://")) $array['caturl']=$c['url'];
else {
$siteurl=$s['domain'];
$array['caturl']=$siteurl.$c['url'];
}
return $array;
}

有些同学会问:系统不是有一个go()函数可以获取超链接地址吗
确实,但是那个函数存在的情况是单一性站点才能所有
多站点调用的时候会输出url为空
另外这个getidurl($catid,$id,$modelid)函数其实是很有用处的
譬如我们经常调用一些新闻带栏目名称的

前台调用代码讲解:

<?php $data=pos_oversite(26,17,0);?> //这一种是调用推荐位为26 调用条数为17
{loop $data $r}
{if $n==9}</ul>
<div class="clearfix" style="margin-top:10px;"></div>
<ul class="i_list">{/if}
<li><span>[<a href="{$r['caturl']}" title="{$r[catname]}">{$r[catname]}</a>]</span><a href="{$r['url']}" title="{$r[title]}">{str_cut($r[title],30,'')}</a></li>
{/loop}
</ul>

软件名称:
PhpCms网站管理系统下载
软件语言:
简体/繁体中文
软件授权:
个人免费

  • phpcms v9忘记管理员后台密码的解决方法-DedeCms教程
  • PHPCMS V9 全站 Sitemaps生成实现代码[服务器端版]-PhpCms教程
  • phpcms v9模板制作教程-PhpCms教程
  • PHPCMS v9 安全设置、防范教程-PhpCms教程
  • PHPCMS V9 添加二级导航的思路详解-PhpCms教程
  • PHPCMS V9“密码重试次数太多,请过-xxx分钟后重新登录!”的解决办法
  • 解决phpcms v9首页焦点图显示不正常的问题-PhpCms教程
  • PHPCMS V9网站文件目录安全配置-PhpCms教程
  • PHPCMS V9开发WAP手机网站的教程-PhpCms教程
  • PHPCMS V9使用UEditor和七牛云存储的方法-PhpCms教程
  • 网友评论

    关于我们 - 联系我们 - 广告服务 - 版权声明 - 人才招聘 - 友情链接 - 网站地图 - 帮助 - -

    CopyRight © 2010-2016 源码下载 easck.com , All Rights Reserved

    蒙公网安备 15052402000103号

    蒙ICP备14002389-1号