`
bcyy
  • 浏览: 1826366 次
文章分类
社区版块
存档分类
最新评论

phpcms 知识总结

 
阅读更多

phpcms是一套功能很强大,智能,好用的内容管理系统,最近再做phmcms二次开发,学到了不少东西。

现在总结下,与大家分享下。


在调用多个栏目下的文章列表时,可以用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" }
{loop $data $n $r}
<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>
{/loop}
{/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}



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics