当前位置: 首页 > 工具软件 > 玥雅CMS > 使用案例 >

phpcms 二次开发 (1)

充培
2023-12-01
下载 安装


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


进入前台 -- 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">首页</a></li>

{loop $data $r}
    <li><a href="{$r[url]}" 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']}"><img src="{$p['setting']['1']['imageurl']}"/></a></li>';
           {else}
              str+='<li><a href="{$p['setting']['1']['linkurl']}"><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]}">更多详情</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 }  /* 定义php 的变量*/
      <ul  class="wz" id="wz">
        {loop $wordlist $key $word}
          {php $i++}  
           {if $i == 1} /*如 $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,'........')}  /*截取函数  以及使用 php 函数*/
           </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}
 类似资料: