PHPCMS建站经验分享
在这里不对模型、模板设置、category,list,show等静态页面引入、配置文件(caches\configs\database.php 和 caches\configs\system.php)、缓存清理、附件地址替换、等逻辑讲解。
安装CMS-》删除所有栏目-》拷贝default文件夹-》配置文件夹里面的config文件-》后台重新配置站点,选模板风格-》开始引入HTML、JS、建立模型、建立栏目,为栏目选择模板、、、
只是罗列一些数据标签,比如如何获取当前栏目的上级的上级栏目url或者栏目名称、或者站点常量等常用数据标签总结,方便查阅。
网页title信息:
<title>{if isset($SEO['title']) && !empty($SEO['title'])}{$SEO['title']}{/if}{$SEO['site_title']}</title>
站点地址:
<a href="{siteurl($siteid)}" class="logo"> <img src="{IMG_PATH}img/logo.png" alt=""> </a>
获取栏目ID为1下面所有的栏目信息:
获取某一栏目下的所有栏目信息:
{pc:content action="category" catid="1" num="25" siteid="$siteid" order="listorder ASC" return="data"} <?php $i = 1; ?> {loop $data $k $v} <a href="{$v[url]}"; class="navOption navOption{$i} <?php if($i<=3){echo "fl";}?> <?php if($i>3){echo "fr";}?>"><span class="en">{$v[catdir]}</span><span class="cn">{$v[catname]}</span></a> <?php $i++; ?> {/loop} {/pc}
获取指定栏目ID下面的指定某一条信息:
此时如何获取ID为2的里面的内容:
<div class="textWrp"> 附近的车站:<br><br> {pc:content action="lists" catid="2" num="25" siteid="$siteid" order="listorder ASC" return="data"} {loop $data $k $v} <?php if($k==2){ ?> <span>{$v[description]}</span> <?php }?> {/loop} {/pc} 10 </div>
此时是获取栏目ID为2也就是公共设置下面的ID为2的内容。
action为list或者category,一个是获取栏目信息,一个是获取栏目下面的内容信息。而order之中的排序,listorder是可以设置的,上面的排序左边那个可以输入排序ID进行排序。
数据表之中自带的在主表,自己设置的字段默认在副表,二者一并查出需要加上moreinfo="1".
在点击某一栏目下面的某一篇文章详情的时候,页面跳转,此时不需要在用PC标签进行查询数据,直接就是酱紫的
<div class="content"> <h2>{$title}</h2> <p>{$content}</p> </div>
页码切换(show页面):
<div class="changeArticle clearfix"> <a href="{$previous_page[url]}" class="prev_article fl">上一篇:{$previous_page[title]}</a> <a href="{$next_page[url]}" class="next_article fr">下一篇:{$next_page[title]}</a> </div>
获取某一栏目下的所有内容信息:
比如此时我们要获取到公司简介(栏目下面已经没有栏目)栏目下面的所有内容(一共四篇文章):
数据标签:
<div class="bg"> <div class="imgl"> <img src="{IMG_PATH}img/img06.jpg" width="204" height="504" alt=""> </div> <ul class="showArea"> {pc:content action="lists" catid="$catid" moreinfo="1" num="25" page="$page"} <?php $i = 1; ?> {loop $data $v} <li class="<?php if($i==1){echo "now";}?>"> <div class="title"> <h2>{$v[title]}</h2> <h3>{$v[en_name]}</h3> </div> <div class="content"> {$v[content]} </div> </li> <?php $i++; ?> {/loop} {/pc} </ul> </div>
指定栏目对应的url:
<a href="{$CATEGORYS[7][url]}" class="backToList" >查看更多</a>
此时点击查看更多就相当于点击顶部导航栏的 “工程案例”。
假如地址栏上的catid是38,而我们想获取38的上级栏目的名称:
{$CATEGORYS[$CAT[parentid]][catname]} //上级 {$CATEGORYS[$catid][catname]} //当前栏目名称
如何获取当前栏目ID的父栏目下面的所有子栏目信息:
{pc:content action="category" catid="$CATEGORYS[$catid][parentid]" num="25" siteid="$siteid" order="listorder ASC" return="data"} <?php $i = 0; ?> {loop $data $k $v} <li style="<?php if($i==0){echo "border:none";}?>">{$v[catname]} <i class="{if $v[catid]==$catid} cur {/if}"></i> </li> <?php $i++; ?> {/loop} {/pc}
时间处理:
<h3 class="data_box"> <i>{date('d', $v['inputtime'])}</i> <em>{date('Y-m', $v['inputtime'])}</em> </h3>
获取当前栏目的父栏目下面的其中某一特定栏目的栏目信息:
{pc:content action="category" catid="$CATEGORYS[$catid][parentid]" num="25" siteid="$siteid" order="listorder ASC" return="data"} {loop $data $k $v} <?php if($k==39){ ?> 4 <dt>{$v[catname]}<i>{$v[description]}</i><em><b>首页</b> > <b>{$CATEGORYS[$catid][catname]}</b></em></dt>//这里有获取当前内容所属栏目的栏目名称 <?php } ?> {/loop} {/pc}
上面呢,是获取当前栏目的父栏目下面的ID为39的子栏目的栏目信息;
{template "content","footer"}
包含某个公共部分。
分页的页码:
{$pages} 但是在PC标签里面需要加上: page="$page"
拷贝default目录,然后一点点替换content文件夹里面的文件,与数据标签,选用哪个模板文件夹,在站点配置里面设置,扩展-》菜单管理可以设置后台菜单。
如何取出数组data之中的第六个数值:
{pc:content action="lists" catid="21" moreinfo="1" num="25" page="$page"} <?php $key=1;?> {loop $data $k $v} <?php if($key==6){ ?> <div class="hb" id="multi" style="background-image:url({$v[shouyezhanshitupian]});"> <a href="{$v[url]}"> <div class="li_box liz li_h1" > <h1>{$v[shouyexiaobiaoti]}</h1> <p>{$v[chanpingongneng]}</p> </div> </a> </div> <?php } ?> <?php $key++;?> {/loop} {/pc}
或者数组之中的任意个元素
如何加载页面时候根据有无page数据(GET参数)来选择是否调用JS方法:
<script type="text/javascript"> if(<?php echo $_GET['page'] ? $_GET['page'] : 0; ?>){ c_tab('#left_tab3','au3','au_nav'); } </script>
后台登陆首页:
Phpcms->modules->admin->templates->login.tpl.php
<?php defined('IN_ADMIN') or exit('No permission resources.'); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET;?>" /> <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> <title><?php echo L('phpcms_logon')?></title> <style type="text/css"> html{ background: #524B8E; } body{ font-family: "Microsoft YaHei", "微软雅黑", Arial, Helv, Helvetica, sans-serif;} div {overflow: hidden;*display: inline-block;} div {*display: block;} .login_box { /*background: url(<?php echo IMG_PATH?>admin_img/login_bg.jpg) no-repeat;*/ position: absolute; left: 50%; top: 50%; margin-left: -375px; margin-top: -150px; width: 750px; height: 300px; background: #fff; overflow: hidden; box-shadow: 0 0 25px 0px rgb(34, 29, 81); } .login_iptbox { padding: 50px 0 0 301px; font-size: 12px; overflow: visible; } .admin_logo{ position: absolute; left: 0; top: 0; width: 301px; } .admin_logo img{ width: 301px; height: 301px; } .login_iptbox .ipt { height: 30px; width: 195px; /*background: url(<?php echo IMG_PATH?>admin_img/ipt_bg.jpg) repeat-x;*/ *line-height: 24px; overflow: hidden; border: 1px solid #C9C7E1; font-size: 25px; text-align: center; } <?php if(SYS_STYLE=='en') { ?> .login_iptbox .ipt { width: 100px; margin-right: 12px; } <?php } ?> .login_iptbox label { width: 150px; text-align: right; font-size: 13px; display: inline-block; *display: inline; *zoom: 1; } .login_iptbox .ipt_reg { width: 75px; /*background: url(<?php echo IMG_PATH?>admin_img/ipt_bg.jpg) repeat-x;*/ *overflow: hidden; padding: 2px 0 2px 2px; font-size: 16px; font-weight: bold; text-align: center; } .login_tj_btn { margin: 0 auto; padding: 10px 0; /*background: url(<?php echo IMG_PATH?>admin_img/login_dl_btn.jpg) no-repeat 0px 0px;*/ background-color: #6961AB; color: #fff; width: 250px; height: 37px; border: none; cursor: pointer; padding: 0px; display: block; font-family: "Microsoft YaHei", "微软雅黑", Arial, Helv, Helvetica, sans-serif; } .yzm { height: 36px; display: inline-block; *display: inline; *zoom: 1; } .yzm img{ width: 110px; height: 36px; vertical-align: middle; } .cr { font-size: 12px; font-style: inherit; text-align: center; color: #ccc; position: absolute; bottom: 5px; left: 473px; } .cr a { color: #ccc; text-decoration: none; } </style> <script language="JavaScript"> <!-- if(top!=self) if(self!=top) top.location=self.location; //--> </script> </head> <body onload="javascript:document.myform.username.focus();"> <div id="login_bg" class="login_box"> <a class="admin_logo" href="#"><img src="<?php echo IMG_PATH?>admin_img/admin_logo.jpg" alt="" /></a> <div class="login_iptbox"> <form action="index.php?m=admin&c=index&a=login&dosubmit=1" method="post" name="myform"> <label><?php echo L('username')?>:</label> <input name="username" type="text" class="ipt" value="" /> <br/> <br/> <label><?php echo L('password')?>:</label> <input name="password" type="password" class="ipt" value="" /> <br/> <br/> <label><?php echo L('security_code')?>:</label> <input name="code" type="text" class="ipt ipt_reg" onfocus="document.getElementById('yzm').style.display='block'" /> <span class="yzm"><?php echo form::checkcode('code_img')?></span> <br/> <br/> <!-- <div id="yzm" class="yzm"><?php echo form::checkcode('code_img')?><br /><a href="javascript:document.getElementById('code_img').src='<?php echo SITE_PROTOCOL.SITE_URL.WEB_PATH;?>api.php?op=checkcode&m=admin&c=index&a=checkcode&time='+Math.random();void(0);"><?php echo L('click_change_validate')?></a></div> --> <input name="dosubmit" value="登 录" type="submit" class="login_tj_btn" /> </form> </div> <div class="cr">Power By <a href="#">广州承胜</a></div> </div> </body> </html>
前台表单:
然后将前台提交信息的表单name属性改成跟后台一样的;
改成这样,隐藏输入值也要传进去的
前台表单action改成那个调用的javascript代码;
当点击进去新闻内页时候,显示的上一篇下一篇按钮
<div class="changeArticle clearfix"> <a href="{$previous_page[url]}" class="prev_article fl">上一篇:{$previous_page[title]}</a> <a href="{$next_page[url]}" class="next_article fr">下一篇:{$next_page[title]}</a> </div>
页码一般在list页面,直接{$page}就OK了,
page="$page"记得在Pc标签加上这一句话就好了,还有就是搜索功能的实现:
思路就是照着官方的发送搜索信息的表单改action还有hidden的数值:
首先当然是需要建立搜索字段了
主要建立了搜索分类时候,得到的typeid要是正确的,了解???发送表单要的
<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="54" id="typeid"/> <input type="hidden" name="siteid" value="1" id="siteid"/> <input type="text" name="q" id="q"/> <input type="submit" value="搜 索" class="button" />--> <!-- {php $j=0} {php $search_model = getcache('search_model_'.$siteid, 'search');} {loop $search_model $k=>$v} {php $j++;} <a href="javascript:;" onclick="setmodel({$v['typeid']}, $(this));" style="outline:medium none;" hidefocus="true" {if $j==1 && $typeid=$v['typeid']} class="on" {/if}>{$v['name']}</a>{if $j != count($search_model)}<span> | </span>{/if} {/loop} {php unset($j);} --> <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="54" id="typeid"/> <input type="hidden" name="siteid" value="1" id="siteid"/> <input type="text" class="text" name="q" id="q"style="float:left"/> <input type="submit" value="搜 索" class="button" style="float:left"/> </form>
主要看看URL有没拼接正确,
然后就是找到搜索结果展示的页面,找到数据表单(搜索结果数据)并且改成自己网站的页面就OK了
这个就是搜索结果页面了,大兄弟,这TM还没思路吗,我TM都给你做完了好吗!!!
PHPCMS建站经验分享的更多相关文章
- 从零Wordpress建站经验分享,内附耗时间及成本
5月末回国,工作进入空档期. 每天上班没有任务压身,日子过得反而更加难熬. 一直自己做一个网站,却总下不定决心,总是懒得迈出第一步. 正巧朋友需要建设一个宣传用网站. 外面的公司给他报价很高. 反正我 ...
- Discuz建站教程:本地安装discuz网站
网站建目前都很简单,建站容易,管理难,网站做大优化更难.本人有建站经验,目前给大家分享一下如何建站,当然,目前使用的是本地建站,因为非本地建站需要购买域名和网站空间,当然,朋友们想真正建站的,对于一些 ...
- 转型?还是延伸?开源建站系统近乎推整套SNS社区解决方案
转型?还是延伸?开源建站系统近乎推整套SNS社区解决方案 近乎(英文:Spacebuilder),作为.net领域的SNS社区建站系统代表之一,一直在技术开发领域算是兢兢业业,在Discuz!和Php ...
- 用WordPress建立专业网站教程 (一步步建站, 一步也不少)
最新美国域名中心US Domain Center: http://www.usdomaincenter.com/ 建站教程 (10分钟上线, 无需备案): https://www.qiyewp.com ...
- GoDaddy商务主机建站具有的优势
GoDaddy是世界第一域名注册服务商,近年来凭借着优异的性能受到国内站长的欢迎,其中Godaddy商务主机得到了很多站长的喜爱,那么为什么GoDaddy商务主机可以受到那么多站长的喜爱呢?下面就带大 ...
- 外贸建站之图片预加载JS代码分享
外贸建站之图片预加载JS代码分享 function preloadimg() { setTimeout(function() { new Image().src = "images/2017 ...
- 服务器购买+建站流程教程——适合新手没有经验的人Chinar总结
服务器购买购买教程 本文提供全图文流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享.心创 ...
- phpcms 初次建站心得
最近要给客户建个网站,考虑到效率问题,直接找了个开源的phpcms,(现在被收购了,以前的时候我还知道是个开源的).由于对这个东西不熟悉,原来就是了解一些,php的建站系统,php的MVC框架.故此, ...
- WordPress建站指南
WordPress建站指南(1) 写在前面: 3月份用10天零碎时间火速完成了建站,后台95%的工作都交给了WP(WordPress).如果想偷懒的话,WP是一个绝好的选择,估计有个小半天就建完收 ...
随机推荐
- http://host:8399/arcgis/rest/services/ 访问不了
一.问题: 安装完arvserver后,rest服务http://host:8399/arcgis/rest/services/访问不了 二.问题原因: 查看了一下manager日志,其中记录了几个r ...
- HDU 3535 【背包】
题意: 给出n组数据,每组数据有一个类型. 0代表至少选择一个,1代表至多选择一个,2代表任意选择. 给出背包容量. 如果背包不能满足最基本的要求输出-1. 思路: 背包问题变相考察~ 当0的时候初始 ...
- SQL 语句转换格式函数Cast、Convert 区别
SQL 语句转换格式函数Cast.Convert CAST和CONVERT都经常被使用.特别提取出来作为一篇文章,方便查找. CAST.CONVERT都可以执行数据类型转换.在大部分情况下,两者执行同 ...
- C++primer 练习15.26
定义Quote和Bulk_Quote的拷贝控制成员,令其与合成的版本行为一致.为这些成员以及其他构造函数添加打印状态的 语句,使得我们能够知道正在运行哪个程序.使用这些类编写程序,预测程序将创建和销毁 ...
- [HDU 5135] Little Zu Chongzhi's Triangles (dfs暴搜)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5135 题目大意:给你n条边,选出若干条边,组成若干个三角形,使得面积和最大.输出最大的面积和. 先将边 ...
- maven skip tests
DskipTests=true is short form of -Dmaven.test.skip=true
- Prim算法POJ1258
http://poj.org/problem?id=1258 这道题是最简单的一个啦,,,, #include<stdio.h> #include<iostream> #inc ...
- SQL:每年每月最高的两个温度
SET QUOTED_IDENTIFIER ONGO CREATE TABLE [dbo].[Temperature]( [ID] [int] IDENTITY(1,1) NOT NULL, [Mon ...
- 二模10day1解题报告
T1.阅览室(reading) 有一个0~T时间内开放的阅览室,n个读者来读书每人k本,编号和看完所需时间在输入中.其中喜欢度降序排列(不考虑数值),每个人先看喜欢的,如果没有(被人拿走了)就继续找第 ...
- 新安装的ubuntu系统如何设置中文输入法的方案
本文是本人写的第一篇的linux博客,因为很菜,所以就把刚才自己安装中文输入法的过程给大家介绍一下,希望有所帮助. 1.首先,打开命令终端,两种方式,在Dash里面输入terminal然后enter, ...