网站建设套餐 网站建设作品 网站模板

济南网站建设,phpcmsV9联动菜单的实现方法。

2012年11月30日 01:11:51

        济南网站建设中,phpcms V9是目前最为流行的开源CMS。是由国内权威互联网公司盛大公司开发发布,已经成为国内目前位置最大的开源cms。我们在用phpcms v9 的过程中,有时候会遇到联动菜单的功能,济南腾飞网络给大家讲解一下,phpcms V9 联动菜单的实现方法

一、功能演示效果:

①、房产类和分类信息类的联动效果。

济南网站建设_phpcms V9 联动菜单的实现方法,分类信息类联动演示。

 

②、商城类的联动效果。

济南网站建设_phpcms V9 联动菜单的实现方法,商城类联动演示。

 

二、phpcms v9 联动菜单的实现方法。

我们可以看一下官方提供的信息模型,里面有一个演示效果,我们可以根据这个效果,慢慢解析代码,从而通过修改代码得到自己想要的效果。

济南网站建设_phpcms V9 联动菜单的实现方法,官方提供联动演示。

上图是官方的分类信息的样子。我们通过比较发现,其实和前面我们看到的两个是一个效果,不过样式改了一下。下面我们详细讲解其中的代码。

①、打开phpcms模版目录下面的list_house.html文件,在29行可以看到价格这句话的代码:

        <dl class="searchitem">
   <dt class="blue"><span>价格:</span>
   {php $price_rang = array('500元以下|1_500','500-1000元|500_1000','1000-1500元|1000_1500','1500-2000元|1500_2000','2000-3000元|2000_3000','3000-4500元|3000_4500','4500元以上|4500_9999')}
   {loop filters('price',$modelid,$price_rang) $r}
    {$r[menu]}
   {/loop}
   </dt>
        </dl>

      大家可以看到后面的价格是通过一个php的标签先赋值给$price_rang这个数组元素,然后通过loop循环把数组循环出来。在loop里面我们发现了一个filters这个函数,以前好像没见过这个,我们现在搜索一下这个函数是什么意思。

/**
 * 生成分类信息中的筛选菜单
 * @param $field   字段名称
 * @param $modelid  模型ID
 */
function 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 ? '<em>'.$v[0].'</em>' : '<a href='.$option[$k]['url'].'>'.$v[0].'</a>' ;
 }
 $all['name'] = '全部';
 $all['url'] = structure_filters_url($field,array($field=>''),2,$modelid);
 $all['menu'] = $field_value == '' ? '<em>'.$all['name'].'</em>' : '<a href='.$all['url'].'>'.$all['name'].'</a>';

 array_unshift($option,$all); 
 return $option;
}

我们发现这个函数是生成筛选菜单的,第一个变量是字段名称,第二个变量是模型ID,第三是要循环的数组。然后最后生成html的格式,输出到浏览器。

这个方法是我们写一个定死的循环的时候使用,我们可以直接套用。


②、我们再找到43行的位置。

        <dl class="searchitem">
   <dt class="blue"><span>支付方式:</span>
   {loop filters('pay_type_int',$modelid) $r}
    {$r[menu]}
   {/loop}   
   </dt>
        </dl>

如同上面的解释,我们看这个循环,是吧pay_type_int这字段的值循环出来,这个字段的值我们可以通过后台的内容--模型管理--模型名称-字段-中修改。

这个方法是循环后台模型字段的值的方法。

三、实现筛选列表显示。

我们急需往下看,找到第100行。

   {pc:content action="lists" catid="$catid"  where="$sql" num="15" order="listorder DESC,inputtime DESC" page="$page" moreinfo="1" cache="$cachetime" urlrule="$urlrule"}
   <div style="display:none" id="content_total">{$content_total}</div> 
   {loop $data $r}
   {php $photos_num = count(string2array($r[photos]))}
          <tr>
          <td><a href="{$r[url]}" class="title" title="{$r[title]}">{str_cut($r[title],44)}</a> ({if $r[zone]}<a href="{structure_filters_url('zone',array('zone'=>$r[zone]),0,$modelid)}" class="blue">{get_linkage($r[zone], $info_linkageid, ' - ', 0)}</a> - {/if}{if $r[xiaoqu_address]}{$r[xiaoqu_address]}{/if}) <span class="isbiz">({box('agent',$r[agent],$modelid)})</span>{if $photos_num}<span class="tu">{$photos_num}图</span>{/if}</td>
         <td width="80" class="text-c"><b>{$r[price]}元</b></td>
         <td width="100" class="text-c">{$r[bedroom]}室{$r[hall]}厅{$r[bathroom]}卫</td>
         <td width="80" class="text-c">{timeinterval($r[inputtime])}</td>
         </tr>
   {/loop}
   {/pc}

 

      这个是phpcms的模版标签,在里面我们看到多了一个where、还有一个urlrule这两个。其中where就如同php中的sql查询语句中的where,urlrule的意思是生成静态的筛选查询,如果你的网站是动态的,这个地方也可以去掉,不需要。

      以上就是phpcms V9 联动菜单的实现方法。这样我们就可以自己在后台定义相关的字段名称,然后通过修改以上代码,达到自己想要的效果了。大家可以多多看一下官方的分类信息模型这块地方是怎么写的,遇到没见过的函数一定要去差看源码,看看是什么意思,这样才能让在济南网站制作充分理解怎么使用。本文由济南网站建设公司-济南腾飞网络提供,转载请注明。http://m.0531soso.com
 

服务宗旨:客户至上、服务保证、信用保证、售后保证、价格保证。

在济南找济南网站建设公司就选择我们,我们用服务保证你选择的没有错误。

公司地址:山东省济南市东关大街中泰大厦

Copyright©2020-2030  www.0531soso.com

济南网站设计我们值得信赖.