你现在的位置:首页 > PHP网站建设知识库 > phpcms > 正文

phpcms 开发知识总结

phpcms开发调用多个栏目下的文章列表时,可以用get标签.

{pc:get sql="select * from v9_product where catid in($arr)" order="id ASC" thumb="2" num="40"  return="info" page="$pages"} 

{/pc}

需要注意的是这里的$arr为字符串形式,而不能为数组,如$arr="21,23,32";是可以的,

而$arr = array(21,23,32);则是不行的,会出现错误,导致得不到结果。

如果想随机排序,直接将order="rand()",就可以了。

普通列表或栏目调用自定义字段

在{pc:content  action="lists" 后加上副表moreinfo=1 (等于1时显示,0时不显示)

在编辑文章时,如果不想自动添加关键字,可以在

可以通过phpcms/modules/content/fields/title/form.inc.php,去掉其中的onBlur事件,就好了。

<?php  

  $catid = $_GET['catid'];  

?>  

来获取相应的栏目id.这在实际操作中很有用。

在phpcms 中调用通过一级栏目调用三级栏目的代码。

{pc:content action="category" catid="$catid" order="listorder ASC" num="40" thumb="2"  return="info"}                 
                    {loop $info $r}  
                    <?php
                        $catidt = $r[catid];
                    ?>
                    <ul>    
                      {pc:content action="lists" catid="$catidt" order="listorder ASC" num="40" thumb="2" return="data"}                                                           
                    {loop $data $v}         
                        <li class="cl">
                          <a href="">
                             <a href="{$v['url']}" target="_blank"><img class="imgs_pro" width="179" height="144" src="{$v['thumb']}"/></a>
                          <h3 class="product-name">
                            <a href="{$v['url']}" target="_blank">
                              <span class="orname1">{$v['title']}</span></a>
                          </h3>
                          <span class="lingshoujia">全国统一销售价:<b>¥</b>{$v['price']}                      </span>
                          <span class="tejia"><i></i>:<b>¥</b>{$v['tgprice']}</span>
                        </li>                        
                    {/loop}
                    {/pc}                    
                    </ul>
                  {/loop}
 {/pc}

在这里,有点郁闷的是,为什么第二个循环中catid不能直接用catid="$r['catid']",而需要先通过$catid=$r[catid]取得。先记下来。

在PHPCMS V9中我们正式开始需要PC标签做为数据的获取的方式。如:

{pc:content action="lists" cache="3600" num="20" page="$page"}{/pc}

下表为PC标签保留参数表,几乎所有的PC标签都支持这些保留参数设置

变量名

默认值

说明

action

null

本参数的值表示为操作事件,模型类PC标签必须使用包含本参数,以说明要进行的操作。

cache

0

缓存存储时间(单位秒)

num

20

获取记录的条数,最后会被模板引擎处理成limit传送到处理函数中。

page

null

当前分页。一般填写为$_GET[page]

urlrule

null

URL规则

return

data

返回数据变量名

 

这里有一必要说一下get标签,可以对数据库进行灵活操作,如:

{pc:get sql="SELECT * FROM phpcms_member" cache="3600" page="$page" dbsource="discuz"return="data"}

<ul>

{loop $data $key $val}

{$val[username]}<br/>

{/loop}

</ul>

{$pages}

{/pc}

GET标签所支持的参数。

参数

默认值

必须

 

说明

sql

null

 

要执行的SQL语句

cache

0

 

缓存时间,单位为秒

page

0

 

分页,通过变量把当前的分布传给PC标签进行处理

dbsource

null

 

数据源,当你通过系统后台的数据源模块配置过数据源时,可把数据源名填写到这里,系统会去对应的数据源来读取数据。如果要读取本系统的数据请留空

return

data

 

 返回的数据的变量

 

常用的函数:

str_cut(): {str_cut($v['title'],50)}, 标题长度截取。

thumb(): {thumb($v['thumb'],178,131)},生成缩略图。

phpcms 模板if,else解析原理

例:

{pc:content action="lists" catid="12" num="1" order="id DESC" return="info"}  

          {loop $info $v}  

              <!--图片-->  

              <div class="img_top">  

              {if $v[thumb]==null}  

                  <img src="{thumb($v['thumb'],278,198)}"/>  

                  {else} <img src="{IMG_PATH}lianmengimg/wstupianbg.jpg"/>{/if}    

              </div>  

              <!--图片-->                      

              <h3><a href="{$v['url']}" target="_blank">{str_cut($v['title'],55)}</a></h3>  

              <div class="ws_text">  

              <p>{$v['description']}</p>  

              </div>  

          {/loop}  

{/pc}  

 

 

用php代码来实现,其实是这样的。

<?php if(defined('IN_ADMIN')  && !defined('HTML')) {echo "<div class=\"admin_piao\" pc_action=\"content\" data=\"op=content&tag_md5=0fbcb24c67cefe51efba7d05ace80da0&action=lists&catid=12&num=1&order=id+DESC&return=info\"><a href=\"javascript:void(0)\" class=\"admin_piao_edit\">编辑</a>";}$content_tag = pc_base::load_app_class("content_tag", "content");if (method_exists($content_tag, 'lists')) {$info = $content_tag->lists(array('catid'=>'12','order'=>'id DESC','limit'=>'1',));}?>  

                <?php $n=1;if(is_array($info)) foreach($info AS $v) { ?>  

                    <!--图片-->  

                    <div class="img_top">  

                    <?php if($v[thumb]==null) { ?>  

                        <img src="<?php echo thumb($v['thumb'],278,198);?>"/>  

                        <?php } else { ?> <img src="<?php echo IMG_PATH;?>lianmengimg/wstupianbg.jpg"/> <?php } ?>    

                    </div>  

                    <!--图片-->                      

                    <h3><a href="<?php echo $v['url'];?>" target="_blank"><?php echo str_cut($v['title'],55);?></a></h3>  

                    <div class="ws_text">  

                    <p><?php echo $v['description'];?></p>  

                    </div>  

                <?php $n++;}unset($n); ?>  

                <?php if(defined('IN_ADMIN') && !defined('HTML')) {echo '</div>';}  

?>    


还有一个关于if,else的例子:

{pc:content action="lists" catid="42" order="id DESC" num="5" }  

  1. {loop $data $n $r}  
  2. <li>·<a href="{$r['url']}" title="{$r['title']}"{title_style($r[style])}>{str_cut($r[title],39,'')}</a> {if time()-$r[updatetime]<24*180*60}<img src='/image/new.gif' />{else}<span class="ind_tim2">{date('m-d',$r[inputtime])}</span>{/if}</li>  
  3. {/loop}  
  4. {/pc}  


在列表页如果想实现分布功能需要加上page="$page":

 

{pc:content  action="lists" catid="$catid" order="prorder ASC" thumb="2" num="6"  page="$page" return="info"}   

<div id="pages" class="text-c">{$pages}</div>  

{/pc}  

如何在category页调取所有子栏目列表

 

{pc:content action="category" catid="$catid" num="25" siteid="$siteid" order="listorder ASC"}  

<ul>  

{loop $data $r}  

<li><a href="{$r[url]}">{$r[catname]}</a></li>  

{/loop}  

</ul>  

{/pc}