天天看点

phpcms 二次开发 (1)

下载 安装

进入后台 -- 生成首页 更新缓存

进入前台 -- http://127.0.0.1/phpcms/index.php

进入后台 -- 配置网站

更新模板--设置首页

 将css、images、js 文件导入到phpcms/static/下面

找到首页模块module、控制器content、视图view

 phpcms/modules/content/index.php

找到 init()  尝试打印一下   $default_style = $sitelist[$siteid]['default_style'];

可以知道当前的模板路径

 phpcms/templates/default/content 下面  重命名 之前的 index.html 并将我们的index.php 导入页面

开始页面分离

$SEO 是phpcms 的全局变量 

加载模板: 

{template "content","header"}

{template "content","footer"}

修改css路径  修改js路径   修改图片img 路径

{CSS_PATH}

{JS_PATH}

{IMG_PATH}

替换相应的路径标签

------------------------

开始做功能:

先做导航:

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

         <ul id="nav">

          <li class="nav1"><a href="{siteurl($siteid)}" target="_blank" rel="external nofollow" target="_blank">首页</a></li>

{loop $data $r}

    <li><a href="{$r[url]}" target="_blank" rel="external nofollow" target="_blank">{$r[catname]}</a></li>

   {/loop}

            </ul>

   {/pc}

   {php echo runhook('glogal_menu')}

进入后台添加导航

---------------

套首页的焦点图:

   进入后台----模块---广告---添加版位---我们新添加一个首页轮播图广告位---按照要求添加图片即可

 在首页如何调用广告图片呢? 如果模板的效果与phpcms 默认效果相同,复制phpcms的代码即可,通常情况,

二次开发 我们都会按照我们的模板样式来重新设置的。

 <script language="javascript" src="{APP_PATH}index.php?m=poster&c=index&a=show_poster&id=11"></script>

先找到 poster 模块下面的index 控制器下面的show_poster方法id 是 id=11 分析phpcms之前的数据处理层

 然后,我们测试源码,得知:

  $pinfo 是我们需要的幻灯片的数据

   include template('poster', $type); 表示 加载模板层的poster目录下面的imagechange.html  

  当我们得到模板和数据之后,就需要将我们的模板写入到imagechange.html里面.

 写模板的时候,我们需要学习一下phpcms的模板语法

1.定义变量:   {$name} 

2. 条件判断:   {if *} * {else} * {else} * {/if} 或者 {if *} * {/if} 

3. 循环 {loop $a $b} * {/loop} 或者 {loop $a $b $c} * {/loop} ,{loop $a $b} * {/loop}

   {loop $a $b} * {/loop}    $a 表示数组  $b表示value值

类似:

    foreach($a as $b){

    }

{loop $a $k $c} * {/loop}  $a 表示数组  $k 表示 key  $c 表示value值

类似:

    foreach($a as $k=>$c){

   }

 在模板中调试数据

    <?php

       echo '<pre>';

         print_r($data);

       echo '</pre>';

     ?> 

 ---------------------------

综合学习之后:我们可以得到广告幻灯片代码

var str='  <ul class="pic" id="pic">';

    {loop $pinfo $k $p}

         {if $k == 1}

              str+='<li style="z-index:1;"><a href="{$p['setting']['1']['linkurl']}" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" ><img src="{$p['setting']['1']['imageurl']}"/></a></li>';

           {else}

              str+='<li><a href="{$p['setting']['1']['linkurl']}" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" ><img src="{$p['setting']['1']['imageurl']}"/></a></li>';

        {/if}    

     {/loop}

   str+='</ul><ul class="num" id="num">';

     {loop $pinfo  $p}

         {$i++}

           {if $i == 1}

              str+='<li  class="active"><span></span></li>';

              {else}

              str+='<li><span></span></li>';

            {/if}

       {/loop}

   str+='</ul>';

   document.write(str);

解释一下上面的代码:

      $pinfo 通过我们的测试,发现该变量就是图片轮播广告图的所有信息的数据数组。

 打印该数组,去拿到我们所需要的数据显示在页面

套首页的搜索

  <form action="{APP_PATH}index.php" method="get" target="_blank">

<input type="hidden" name="m" value="search"/>

<input type="hidden" name="c" value="index"/>

<input type="hidden" name="a" value="init"/>

<input type="hidden" name="typeid" value="{$typeid}" id="typeid"/>

<input type="hidden" name="siteid" value="{$siteid}" id="siteid"/>

        <input type="text" name="q" placeholder="请输入关键字" class="text"/>

        <button class="btn"></button>

      </form>

套首页的文章内容:

  常用的全局数组:  $CATEGORYS

   $CATEGORYS 是一个二维数组,主要是用来保存当前频道或者模块以及栏目的基本配置信息

   $categorys 是系统默认自动加载的,可以在任何模块或者频道重点任何php文件、模板文件中使用

 常用的有:

   $CATEGORYS[$catid][catid]  当前页面所在的栏目的id

   $CATEGORYS[$catid][module]  当前栏目所在的模块名

   $CATEGORYS[$catid][type] 栏目的类型

   $CATEGORYS[$catid][modelid] 栏目所属的模型的id

   $CATEGORYS[$catid][catname] 栏目的名称

   $CATEGORYS[$catid][image] 栏目所对应的图片

   $CATEGORYS[$catid][catdir] 栏目的路径

   $CATEGORYS[$catid][url]  栏目所对应的url

   $CATEGORYS[$catid][parentid] 栏目所对应的父级id

   $CATEGORYS[$catid][arrparentid] 栏目所对应的所有上级栏目id

   $CATEGORYS[$catid][parentdir] 栏目所对应的父级的路径

   $CATEGORYS[$catid][child] 是否有下级栏目

   $CATEGORYS[$catid][arrchildid] 栏目的所有下级栏目的id

   $CATEGORYS[$catid][items] 栏目信息数

   $CATEGORYS[$catid][ismenu] 栏目是否显示在导航

   $CATEGORYS[$catid][hits] 栏目的点击数

比如这样一个url 

http://127.0.0.1/phpcms/index.php?m=content&c=index&a=lists&catid=10

那么  $CATEGORYS[10][catid]  

在比如:  http://127.0.0.1/phpcms/index.php?m=content&c=index&a=lists&catid=13

 {$CATEGORYS[13][catname]}   得到名称 

 {$CATEGORYS[13][url]}       得到url

下面我们来理解phpcms的pc标签应用:

  PC标签做为数据的获取的一种方式

 基本语法规则: PC标签必须以{pc}开头,并以{/pc}结尾的代码片段

 {pc:}冒号之后跟随的为模块名

{pc:模块名 参数名="参数值" 参数名="参数值" 参数名="参数值"  return=data}  默认返回的是 $data  当然这里可以改

 那么首页我们需要的是推荐位: 在后台去设置推荐位:

  后台---内容相关设置-----推荐位管理---- 你可以依据你的项目需求重新设置一个推荐,也可以使用phpcms 之前的

 推荐位置。

  比如我们点击首页头条推荐: 需要注意的是 首页头条推荐的 id 号  posId

                             在选择栏目的时候  需要注意栏目id  catID

   这两个id都是我们需要的 

  {pc:content action="position" catid="13" posid="2"  thumb="1"  num="1"  }

     {loop $data $key $value}

        <p> {$value['description']} <a href="{$CATEGORYS[13][url]}" target="_blank" rel="external nofollow" >更多详情</a> </p>

         <img src="{$value['thumb']}" />

     {/loop}

{/pc}

  这个地方可以用php 的代码直接输出 <?php  ?>

 我们这里解释一下上面的代码

  action="position"  表示推荐位

  catid="13"  表示当前文章所在栏目的id 

  posid="2"   表示推荐位的id 

  thumb="1"   表示是否需要缩略图

  num="1"     表示显示多少条

  下面我们来套 相关产品的搜索,产品推荐的图片也是我们的推荐的一部分。所以我们在后台管理面板中的内容

---- 推荐位管理---新增推荐位----有5种产品,那么我们就新增5种推荐位,我们在后台操作完成后,那么问题也来了。

 在前台如何循环查询呢? 这里有两种方法,第一种:模仿pc内容标签  在  /modules/content/classes/content_tag.class.php

  可以参考phpcms的标签仿照写代码

   第二种: 在模板层直接查询sql 然后使用 loop 循环  phpcms万能标签get调用sql

  phpcms 万能标签 get 语法规则

   {pc:get  sql=""  num=""  return="data"}

       在这里可以循环

   {/pc}

 当我们了解到这些之后,那么我们就需要去找到表然后写sql 语句了。 通过数据库我们发现推荐表示 v9_position

 那么我们需要分析一下 需要去哪些数据呢?

    推荐位id posid   栏目id catid  缩略图地址  thumb

  因此;我们的查询语句是:  select posid,catid,thumb from  v9_position where posid in (19,20,21,22) 

        <ul>  

         <!-- 在这里循环推荐位的图片 -->

           {pc:get sql="select posid,catid,thumb from  v9_position where posid in (19,20,21,22)" num="5" return="data"}

               {loop $data $key $listpic}

                 {/pc}

                  <li><img src="{$listpic['thumb']}"/></li>

               {/loop}

         </ul>

 那么下面我们来套企业新闻列表

     我们现在来添加新闻: 添加新闻后 ---- 推荐位显示---- 这里我们可以设置某条新闻显示在哪个推荐位下面。

 也就是说: 同一个推荐位可以有多个新闻

    好, 咱们进入后台,内容管理---添加新闻-- 选择推荐位

   那么我们来在前端循环,需要找到 catid   点击管理栏目---查看新闻中心的id  

                                          点击推荐位管理---查看 首页文章推荐位 的id

 标签: 

{pc:content action="position" catid="10" posid="28"  thumb="1"  num="3"  return="wordlist" }

{loop $wordlist $key  $word}

        {/loop}     

{/pc}

   通过调试,我们去寻找我们所需要的数据  title description thumb  inputtime,通过数据分析发现

 iputtime 是一个时间戳 所以需要格式化成我们所需要的模板显示格式

  <!--  在这里查询 文章列表  -->

{pc:content action="position" catid="10" posid="28"  thumb="1"  num="3"  return="wordlist" }

      {php $i=0 }  

      <ul  class="wz" id="wz">

        {loop $wordlist $key $word}

          {php $i++}  

           {if $i == 1}

             <li class="wl"><span><b>{date('d',$word['inputtime'])}</b><br /><br />{date('Y-m',$word['inputtime'])}</span>

            <p>{$word['title']}</p>

            <br/>{str_cut($word['description'],120,'........')}  

           </li>

        {else}

          <li><span><b>{date('d',$word['inputtime'])}</b><br /><br />{date('Y-m',$word['inputtime'])}</span>

            <p>{$word['title']}</p>

            <br/>{str_cut($word['description'],120,'........')}

           </li>

      {/if}

   {/loop}

   </ul>

{/pc}