当前位置:首页 > 网站技术 > 后端技术 > 正文内容

phpcms筛选功能+分页功能的实现(新手看完就会)

小彬2020-06-05后端技术875


首先,我是在网上找了很多资料,基本上都是一样的代码,都是复制一段PHP代码然后调用模板,我也在坑里呆了好久。他们的链接我放在下面,以免误坑。

http://m.genban.org/teach/teach-18352.html 
https://www.cnblogs.com/doophp/p/3670539.html 
https://www.eqifei.net/post-259.html 
https://blog.51cto.com/maifang158/1920124 
https://blog.csdn.net/wydd7522/article/details/51851567# 
https://blog.csdn.net/qq_26697171/article/details/47337383 
https://www.cnblogs.com/yuan9580/p/10592804.html 
https://blog.csdn.net/qq_39376608/article/details/80267956 
https://blog.csdn.net/qq_26697171/article/details/47337383

最后我看到,说phpcms自带的视频有筛选功能,突然我就看见出坑之时了。经过我半上午的研究,最后是弄成功了的,附上我弄好的筛选功能。当然本文部分代码也摘自以上道友的代码

这是做好的页面。

phpcms筛选功能+分页功能的实现(新手看完就会)

1、在网上下载phpcms v9模板,然后进行安装。

在最后安装成功的时候,会有报错问题,修改页面 phpcms\libs\classes\db_mysqli.class.php  245行和253行 改 continue 为break 即可

2、登陆后台,新建栏目,选择视频模型

目录名自定义,这个设置了后面都要一样。

phpcms筛选功能+分页功能的实现(新手看完就会)

3、新建url规则

在扩展里新建url规则,然后在管理栏目修改栏目页的url规则,并清除缓存

phpcms筛选功能+分页功能的实现(新手看完就会)

phpcms筛选功能+分页功能的实现(新手看完就会)

4、路径报错

此时会出现”生成栏目伪静态显示/%7B$catdir%7D/的错误“问题

在.htaccess文件添加url规则,然后清除url缓存,再次输入静态路径就成功了

<IfModule mod_rewrite.c>
 RewriteEngine On
RewriteRule ^([0-9A-Za-z_]*)/$ index.php?m=content&c=index&a=lists&catdir=$1 
</IfModule>

5、在后台添加筛选字段

去后台的内容->模型管理->视频模型->字段管理->添加字段(你也可以看看phpcms默认的画质字段,这样通过比对,你就知道该如何添加属于自己的筛选字段)

下图是我自己添加的一个影片类型字段,红色框的都是要注意的,最好是按照我的选择选,毕竟是我实验过的。

phpcms筛选功能+分页功能的实现(新手看完就会)


字段类型选择选项;主表字段选择是(以防出现调不到该字段);

选项列表像我这样,“选项名字|选项值”。这个值最好要有规律,而且要和其他的筛选字段有区分。避免冲突

选项类型可以根据自己需求,这个是填写内容时筛选字段的展示形式

是否作为筛选字段,一定要选是,


6、修改视频模型php模板/phpcms/libs/functions/autoload/video.func.php

改的有点多,我直接复制代码,你们自行比对进行修改


/**
 * 构造筛选URL
 */
function video_filters_url($fieldname,$array=array(),$type = 1,$modelid, $isphp = 0) {
if(empty($array)) {
$array = $_GET;
} else {
$array = array_merge($_GET,$array);
}
//$setting = getcache('yp_setting', 'yp');
$fields = getcache('model_field_'.$modelid,'model');
if(is_array($fields) && !empty($fields)) {
ksort($fields);
foreach ($fields as $_v=>$_k) {
// gai
if($_k['filtertype'] || $_k['rangetype']) {
//此处要改
$urlpars .= '-{$'.$_v.'}';
}
}
}
//伪静态url规则管理,apache伪静态支持9个参数
// 注释 $urlrule =APP_PATH.'index.php?m=content&c=index&a=lists&catid=19&modelid='.$modelid.$urlpars.'&page={$page}';
//  注释 if(strpos(URLRULE,'.html') === FALSE) $urlrule =APP_PATH.'index.php?m=content&c=index&a=lists&catid={$catid}'.$urlpars.'&page={$page}' ;
$urlrule = APP_PATH.'case-7'.$urlpars.'-{$page}.html';
//根据get传值构造URL
if (is_array($array)) foreach ($array as $_k=>$_v) {
if($_k=='page') $_v=1;
if($type == 1) if($_k==$fieldname) continue;
$_findme[] = '/{\$'.$_k.'}/';
if (strpos('_', $_v)===false) {
$_v = intval($_v);
} else {
$str_arr = explode('_', $_v);
$str_arr = array_map("intval", $str_arr);
$_v = implode('_', $str_arr);
}
$_replaceme[] = $_v;
}
     //type 模式的时候,构造排除该字段名称的正则
if($type==1) $filter = '(?!'.$fieldname.'.)';
$_findme[] = '/{\$'.$filter.'([a-z0-9_]+)}/';
$_replaceme[] = '';
$urlrule = preg_replace($_findme, $_replaceme, $urlrule);
//此处删掉
// 注释 $b = isset($_GET['b']) ? intval($_GET['b']) : 1;
// 注释 $urlrule .='&b='.$b;
return $urlrule;
}

7、修改前端模板list_video.html 

文件目录=>/phpcms/templates/default/content/list_video.html 

添加完成后再去video模板里面删掉一些东西,如果你们业务需要就留着,不需要就删掉即可。

我就会删掉不必要的只留下筛选的代码和循环的代码。 

video_filters传入三个参数,第一个为筛选字段名,后面两个默认不用改

筛选代码:

phpcms筛选功能+分页功能的实现(新手看完就会)

筛选时分页代码:

phpcms筛选功能+分页功能的实现(新手看完就会)


这是伪静态分页规则,后面凡是用到分页的我都复制了一份,效果还是很好的。源码在这:


<ul class="tpli">
  <li class="clr"><span>按画质:</span> 
    {loop video_filters('exam_style',$modelid,$vision_rang) $r}
    {$r[menu]}
    {/loop}
  </li>
  <li class="clr"><span>按类型:</span> 
    {loop video_filters('exam_area',$modelid,$vision_rang) $r}
    {$r[menu]}
    {/loop}
  </li>
  <li class="clr"><span>按类型2:</span> 
    {loop video_filters('exam_layout',$modelid,$vision_rang) $r}
    {$r[menu]}
    {/loop}
  </li>
</ul>
<div class="bct">
  <ul class="clr col4 col5"> 
    <?php 
    //$urlrule = video_makeurlrule();
    ini_set("display_errors",on);
    //$urlrule = '/case/栏目ID-筛选条件1-筛选条件2-筛选条件3-页数/';
    $where  = array();
    $where['catid'] = $catid;
    $exam_style = $_GET['exam_style'] ? $_GET['exam_style'] : '';
    if($exam_style){
    $where['exam_style'] = $exam_style;
    }
    $exam_area = $_GET['exam_area'] ? $_GET['exam_area'] : '';
    if($exam_area){
    $where['exam_area'] = $exam_area;
    }
    $exam_layout = $_GET['exam_layout'] ? $_GET['exam_layout'] : '';
    if($exam_layout){
    $where['exam_layout'] = $exam_layout;
    }
    ini_set("display_errors",on);
    $urlrule = '/case-'.$catid."-".$exam_area."-".$exam_layout."-".$exam_style."-".page_string().'.html';
    $content_model = pc_base::load_model("content_model");
    $content_model->set_model($modelid);
    $listorder = ' listorder desc,id DESC';
    $page = $_GET['page'];
    if(!$page){
    $page = 1;
    }
    $pagesize = 9;
    $data = $content_model->listinfo($where,$listorder,$page,$pagesize);
    $totalnum = $content_model->count($where);
    $pages = pages($totalnum, $page, $pagesize, $urlrule); ?>
    {loop $data $v} 
    {php $video_info = get_vid($v[id], $v[catid], $isspecial = 0);} 
    <li>
    <a href='{$v[url]}' class="a-img">
    <img src="{$v[thumb]}" alt="">
    </a>
    <a href='{$v[url]}' class="a-title"><h1>楼盘:{$v[title]}</h1></a>
    <hr>
    <p class="style"><span>风格:{$v[lr_style]}</span><b>|</b><span>面积:{$v[lr_area]}㎡</span></p>
    <p class="link"><a class="make-designer" href="javascript:void(0);" name='{$v[title]}'>预约设计</a><a href='{$v[url]}'>查看详情</a></p>
    </li>
    {/loop}
    {/pc}
  </ul>
  {if $pages}
  <div class="pages"> 
    {$pages}
  </div>
  {/if}
</div>

这个时候会出现bug,提示说page_string()不存在


找到phpcms/libs/functions/global.func.php 在20行添加


function page_string() {
return '{$page}';
}


然后点击分页,接着会出现该信息不存在的弹窗。


注意此时的url是:http://php.bin012.com/case-7----2.html

想要判断这是啥错误,就直接用动态url去访问,

那么我这个筛选的动态就是


http://php.bin012.com/index.php?m=content&c=index&a=lists&catid=7&exam_area=&exam_layout=&exam_style=&page=2

phpcms筛选功能+分页功能的实现(新手看完就会)



显而易见,其实这个页面是存在的,那么这就是伪静态规则没有写的原因。去.htaccess写关于筛选页的规则

这个地方要注意和自己命名的栏目名字一样,然后就是catid


RewriteRule ^case-7-([0-9A-Za-z_]*)-([0-9A-Za-z_]*)-([0-9A-Za-z_]*)-([0-9A-Za-z_]*).html?$ index.php?m=content&c=index&a=lists&catid=7&exam_area=$1&exam_layout=$2&exam_style=$3&page=$4


至于每个值其实很简单,前面是网站显示的url,后面是要指向哪个动态url。

添加完规则后,再去刷新伪静态的页面,此时就和动态的展示一样了。


而在手机端上其实和PC端差不多,你可以复制PC端video筛选模板的代码放在手机端里,再重新走一遍上面的步骤即可实现。

PC端video筛选PHP函数在:/phpcms/libs/functions/autoload/video.func.php

下面是video.func.php代码:

<?php
/**
 * 生成分类信息中的筛选菜单
 * @param $field   字段名称
 * @param $modelid  模型ID
 * @param $diyarr 数据包
 * @param $isall 是否显示全部
 */
function video_filters($field = '',$modelid,$diyarr = array(),$isall = 1) {
$fields = getcache('model_field_'.$modelid,'model');
$options = empty($diyarr) ?  explode("\n",$fields[$field]['options']) : $diyarr;
$field_value = intval($_GET[$field]);
foreach($options as $_k) {
$v = explode("|",$_k);
$k = trim($v[1]);
$option[$k]['name'] = $v[0];
$option[$k]['value'] = $k;
$option[$k]['url'] = video_filters_url($field,array($field=>$k),2,$modelid);
$option[$k]['menu'] = $field_value == $k ? '<a href="#" class="ac">'.$v[0].'</a>' : '<a href="'.$option[$k]['url'].'">'.$v[0].'</a>';
}
if ($isall) {
$all['name'] = L('all');
$all['url'] = video_filters_url($field,array($field=>''),2,$modelid);
$all['menu'] = $field_value == '' ? '<a href="#" class="ac">'.$all['name'].'</a>' : '<a href="'.$all['url'].'">'.$all['name'].'</a>';
array_unshift($option,$all);
}
return $option;
}
/**
 * 构造筛选URL
 */
function video_filters_url($fieldname,$array=array(),$type = 1,$modelid, $isphp = 0) {
if(empty($array)) {
$array = $_GET;
} else {
$array = array_merge($_GET,$array);
}
//$setting = getcache('yp_setting', 'yp');
$fields = getcache('model_field_'.$modelid,'model');
if(is_array($fields) && !empty($fields)) {
ksort($fields);
foreach ($fields as $_v=>$_k) {
// gai
if($_k['filtertype'] || $_k['rangetype']) {
$urlpars .= '-{$'.$_v.'}';
}
}
}
//伪静态url规则管理,apache伪静态支持9个参数
//  $urlrule =APP_PATH.'index.php?m=content&c=index&a=lists&catid=19&modelid='.$modelid.$urlpars.'&page={$page}';
//  if(strpos(URLRULE,'.html') === FALSE) $urlrule =APP_PATH.'index.php?m=content&c=index&a=lists&catid={$catid}'.$urlpars.'&page={$page}' ;
//     else $urlrule =APP_PATH.'case/{$catid}'.$urlpars.'-{$page}.html';
$urlrule = APP_PATH.'shai-6'.$urlpars.'-{$page}.html';
//根据get传值构造URL
if (is_array($array)) foreach ($array as $_k=>$_v) {
if($_k=='page') $_v=1;
if($type == 1) if($_k==$fieldname) continue;
$_findme[] = '/{\$'.$_k.'}/';
if (strpos('_', $_v)===false) {
$_v = intval($_v);
} else {
$str_arr = explode('_', $_v);
$str_arr = array_map("intval", $str_arr);
$_v = implode('_', $str_arr);
}
$_replaceme[] = $_v;
}
     //type 模式的时候,构造排除该字段名称的正则
if($type==1) $filter = '(?!'.$fieldname.'.)';
$_findme[] = '/{\$'.$filter.'([a-z0-9_]+)}/';
$_replaceme[] = '';
$urlrule = preg_replace($_findme, $_replaceme, $urlrule);
// $b = isset($_GET['b']) ? intval($_GET['b']) : 1;
// $urlrule .='&b='.$b;
return $urlrule;
}
/**
 * 构造筛选时候的sql语句
 */
function video_filters_sql($modelid,$catid) {
$sql = $fieldname = $min = $max = '';
$fieldvalue = array();
$modelid = intval($modelid);
$model =  getcache('video_model','model');
$fields = getcache('model_field_'.$modelid,'model');
$fields_key = array_keys($fields);
//TODO
$siteid = get_siteid();
$sql = '`status` = \'99\'';
$category = getcache('category_content_'.$siteid);
if ($category[$catid]['child']) {
$sql .= ' AND `catid` IN('.$datas[$catid]['arrchildid'].')';
} else {
$sql .= ' AND `catid`=\''.$catid.'\'';
}
foreach ($_GET as $k=>$r) {
if(in_array($k,$fields_key) && intval($r)!=0 && ($fields[$k]['filtertype'] || $fields[$k]['rangetype'])) {
if($fields[$k]['formtype'] == 'linkage') {
$datas = getcache($fields[$k]['linkageid'],'linkage');
$infos = $datas['data'];
if($infos[$r]['arrchildid']) {
$sql .=  ' AND `'.$k.'` in('.$infos[$r]['arrchildid'].')';
}
} elseif($fields[$k]['formtype'] == 'catids') {
$datas = getcache('category_content_'.$modelid);
if ($datas[$r]['child']) {
$sql .= ' AND `'.$k.'` IN('.$datas[$r]['arrchildid'].')';
} else {
$sql .= ' AND `'.$k.'`=\''.$r.'\'';
}
} elseif($fields[$k]['rangetype']) {
if(is_numeric($r)) {
$sql .=" AND `$k` = '$r'";
} else {
$fieldvalue = explode('_',$r);
$min = intval($fieldvalue[0]);
$max = $fieldvalue[1] ? intval($fieldvalue[1]) : 999999;
$sql .=" AND `$k` >= '$min' AND  `$k` < '$max'";
}
} else {
$sql .=" AND `$k` = '$r'";
}
}
}
return $sql;
}
function video_makeurlrule() {
$setting = getcache('video', 'video');
if($setting['enable_rewrite'] == 0) {
return url_par('page={$'.'page}');
}
else {
$url = preg_replace('/-[0-9]+.html$/','-{$page}.html',get_url());
return $url;
}
}
function player_code($id = 'video_player',$channelid,$vid,$width = 622, $height = 460, $style_projectid = '') {
if(!$channelid) return 'channelid empty!';
if(!$vid) return 'vid empty!';
$player = getcache('player', 'video');
$player_config = $player[$channelid];
$default_style = $player_config['default'];
$style_projectid = $style_projectid ? $style_projectid : $default_style;
$_config = $player_config['STY-'.$style_projectid];
if(empty($_config)) return 'style error!';
$playerurl = pc_base::load_config('ku6server', 'player_url').$vid.'/style/'.$style_projectid.'/v.swf';
$string = '<embed id="'.$id.'" name="'.$id.'" src="'.$playerurl.'" width="'.$width.'" height="'.$height.'" quality="high" align="middle" allowScriptAccess="always" allowfullscreen="true" type="application/x-shockwave-flash"></embed>';
return $string;
}
?>

手机端放置筛选PHP函数在:/phpcms/libs/functions/extention.func.php

其实我并不建议做自适应,麻烦得很。能做响应式还是可以做响应式。

下面是手机端的筛选PHP函数模板:

<?php
/**
 *  extention.func.php 用户自定义函数库
 *
 * @copyright(C) 2005-2010 PHPCMS
 * @licensehttp://www.phpcms.cn/license/
 * @lastmodify2010-10-27
 */
function show_linkage($keyid, $linkageid = 0, $modelid = '', $fieldname='zone') {
    $datas = $infos = $array = array();
    $keyid = intval($keyid);
    $linkageid = intval($linkageid);
    //当前菜单id
    $field_value = intval($_GET[$fieldname]);
    $urlrule = structure_filters_url($fieldname,$array,1,$modelid);
    if($keyid == 0) return false;
    $datas = getcache($keyid,'linkage');
    $infos = $datas['data'];
    foreach($infos as $k=>$v){
        if($v['parentid']==$field_value){
          $array[$k]['name'] = $v['name'];
          $array[$k]['value'] = $k;
          $array[$k]['url'] = str_replace('{'.$fieldname.'}',$k,$urlrule);
          $array[$k]['menu'] = $field_value == $k ? '<a href="#" class="ac">'.$v['name'].'</a>' : '<a href="'.$array[$k]['url'].'">'.$v['name'].'</a>';
        }
    }
    return $array;
}
function structure_filters_url($fieldname,$array=array(),$type = 1,$modelid) {
    if(empty($array)) {
        $array = $_GET;
    } else {
        $array = array_merge($_GET,$array);
     }
      //TODO
    $fields = getcache('model_field_'.$modelid,'model');
    if(is_array($fields) && !empty($fields)) {
        ksort($fields);
        foreach ($fields as $_v=>$_k) {
            if($_k['filtertype'] || $_k['rangetype']) {
                if(strpos(URLRULE,'.html') === FALSE) $urlpars .= '&'.$_v.'={$'.$_v.'}';
            else $urlpars .= '-{$'.$_v.'}';
            }
        }
     }
     //后期增加伪静态等其他url规则管理,apache伪静态支持9个参数
     if(strpos(URLRULE,'.html') === FALSE) $urlrule ='/index.php?c=index&a=lists&catid=7&typeid=3'.$urlpars.'&page={$page}' ;
     else $urlrule ='/case-19'.$urlpars.'-{$page}.html';
     //根据get传值构造URL
     if (is_array($array)) foreach ($array as $_k=>$_v) {
         if($_k=='page') $_v=1;
         if($type == 1) if($_k==$fieldname) continue;
         $_findme[] = '/{\$'.$_k.'}/';
         $_replaceme[] = $_v;
     }
     //type 模式的时候,构造排除该字段名称的正则
     if($type==1) $filter = '(?!'.$fieldname.'.)';
     $_findme[] = '/{\$'.$filter.'([a-z0-9_]+)}/';
     $_replaceme[] = '';
     $urlrule = preg_replace($_findme, $_replaceme, $urlrule);
     return  $urlrule;
}
/**
 * 生成分类信息中的筛选菜单
 * @param $field   字段名称
 * @param $modelid  模型ID
 */
function wap_filters($field,$modelid,$diyarr = array()) {
    $fields = getcache('model_field_'.$modelid,'model');
    $options = empty($diyarr) ?  explode("\n",$fields[$field]['options']) : $diyarr;
    $field_value = intval($_GET[$field]);
    foreach($options as $_k) {
        $v = explode("|",$_k);
        $k = trim($v[1]);
        $option[$k]['name'] = $v[0];
        $option[$k]['value'] = $k;
        $option[$k]['url'] = structure_filters_url($field,array($field=>$k),2,$modelid);
        $option[$k]['menu'] = $field_value == $k ? '<a href="#" class="ac">'.$v[0].'</a>' : '<a href="'.$option[$k]['url'].'">'.$v[0].'</a>' ;
    }
    $all['name'] = '全部';
    $all['url'] = structure_filters_url($field,array($field=>''),2,$modelid);
    $all['menu'] = $field_value == '' ? '<a href="#" class="ac">'.$all['name'].'</a>' : '<a href="'.$all['url'].'">'.$all['name'].'</a>';
    array_unshift($option,$all);
    return $option;
}
/**
* 获取联动菜单层级
* @param  $keyid     联动菜单分类id
* @param  $linkageid 菜单id
* @param  $leveltype 获取类型 parentid 获取父级id child 获取时候有子栏目 arrchildid 获取子栏目数组
*/
function get_linkage_level($keyid,$linkageid,$leveltype = 'parentid') {
    $child_arr = $childs = array();
    $leveltypes = array('parentid','child','arrchildid','arrchildinfo');
    $datas = getcache($keyid,'linkage');
    $infos = $datas['data'];
    if (in_array($leveltype, $leveltypes)) {
        if($leveltype == 'arrchildinfo') {
          $child_arr = explode(',',$infos[$linkageid]['arrchildid']);
          foreach ($child_arr as $r) {
             $childs[] = $infos[$r];
          }
        return $childs;
        } else {
            return $infos[$linkageid][$leveltype];
        }
    }        
}
// 根据linkageid递归到父级
function get_parent_url($modelid,$field,$linkageid=0,$array = array()){
    $modelid = intval($modelid);
    if(!$modelid || empty($field)) return false;
    $fields = getcache('model_field_'.$modelid,'model');
    $keyid = $fields[$field]['linkageid'];
    $datas = getcache($keyid,'linkage');
    $infos = $datas['data'];    
    if(empty($linkageid)){
        $linkageid = intval($_GET[$field]);
        if(!$linkageid) return false;
    }   
    $urlrule = structure_filters_url($field,array(),1,$modelid);
    $urlrule = str_replace('{$'.$field.'}',$infos[$linkageid]['parentid'],$urlrule);
    array_unshift($array,array('name'=> $infos[$linkageid]['name'],'url'=>$urlrule));
    if($infos[$linkageid]['parentid']){
        return get_parent_url($modelid,$field,$infos[$linkageid]['parentid'],$array);
    }
    return $array;
}
/**
* 构造筛选时候的sql语句
*/
function structure_filters_sql($modelid) {
    $sql = $fieldname = $min = $max = '';
    $fieldvalue = array();
    $modelid = intval($modelid);
    $model =  getcache('model','commons');
    $fields = getcache('model_field_'.$modelid,'model');
    $fields_key = array_keys($fields);
    //TODO
    $sql = '`status` = \'99\'';
    foreach ($_GET as $k=>$r) {
      if(in_array($k,$fields_key) && intval($r)!=0 && ($fields[$k]['filtertype'] || $fields[$k]['rangetype'])) {
        if($fields[$k]['formtype'] == 'linkage') {
          $datas = getcache($fields[$k]['linkageid'],'linkage');
          $infos = $datas['data'];
          if($infos[$r]['arrchildid']) {
            $sql .=  ' AND `'.$k.'` in('.$infos[$r]['arrchildid'].')';
          }
        } elseif($fields[$k]['rangetype']) {
          if(is_numeric($r)) {
            $sql .=" AND `$k` = '$r'";
          } else {
            $fieldvalue = explode('_',$r);
            $min = intval($fieldvalue[0]);
            $max = $fieldvalue[1] ? intval($fieldvalue[1]) : 999999;
            $sql .=" AND `$k` >= '$min' AND  `$k` < '$max'";
          }
        } else {
          $sql .=" AND `$k` = '$r'";
        }
      }
    }
    return $sql;
}
/**
* 分页,如去掉则分页会有问题
*/
function wap_makeurlrule() {
    if(strpos(URLRULE,'.html') === FALSE) {
       return url_par('page={$'.'page}');
    }
    else {
        $url = preg_replace('/-[0-9]+.html$/','-{$page}.html',get_url());
        return $url;
    }
}
?>


标签: phpcmsapache
分享给朋友:

相关文章

 PHP入门基础之面向对象语法

PHP入门基础之面向对象语法

对象是程序中的一种数据结构,用来表现某个事物。相反,任何事物在程序中可以用某个对象来表示。对象包括变量和函数。对象中的变量叫做属性,对象中的函数叫做方法对象的属性和方法可以描述表达万事万物1、面向对象...

PHP入门基础之MySQL基础

PHP入门基础之MySQL基础

1、什么是数据库相关术语:数据库系统(Database System):DBS{    数据库(Database)    数据管理系统(Database Man...

PHP入门基础之知识汇总

PHP入门基础之知识汇总

PHP官网:https://www.php.net/1、php基础语法:标准风格 <? php 代码段; ?>如果文档中只有PHP代码,结果标记要省略(规范?)短风格 <?代码段;...

phpcms v9模板制作及二次开发常用代码

phpcms v9模板制作及二次开发常用代码

0:调用最新文章,带所在版块{pc:get sql="SELECT a.title, a.catid, b.catid, b.catname...

使用火车头采集文章并发布在PHPCMS里(新手看完即会)

使用火车头采集文章并发布在PHPCMS里(新手看完即会)

网上其实有免登录的方法 https://www.gwygd.com/rRz6bMWRO.html但是我用过,发现不能用,所以只好用了登录的方法,所幸成功了。首先下载火车头,里面有phpcms采集文章的...

评论列表

小彬
小彬
2020-08-05

此次为第三版修改,在网友的疑问下,对该文进行了全面补充。

访客石头
2020-08-02

你的搞好了吗?可以发个链接看看吗?我要解决这个问题 收费也行 QQ642797629

小彬 回复:
已添加你QQ
2020-08-04
访客
2020-08-27

你弄好了吗?我的不行 我要解决这个问题,可以付费 QQ119433429

小彬 回复:
我弄好了啊,QQ已加
2020-08-27
访客
2020-08-27

你弄好了吗?我的不行 我要解决这个问题,可以付费 QQ119433429

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

分享:

支付宝

微信