yourphp常用标签
引入页面:
<include file="Home:header"/>
首页链接:
{$site_url} {$site_url}/en
面包屑导航:
<div class="pos">{:L(catpos)} <a href="{:URL()}">{:L(home_font)}</a> >
<YP:catpos catid="catid" space=" > " />
</div>
幻灯片调用:
<YP:flash flashid="2" />
碎片调用:
<YP:block pos="golf" /> 文本调用
<YP:block pos="financial" type="image"/> 图片调用
if/else语法:
{if $catid==51}{elseif $catid==52}{else}{/if}
栏目调用
上级目录名称:{$Categorys[$parentid]['catname']}
{$Categorys[51][url]}、{$Categorys[40][catname]}、{$Categorys[$catid][image]}
分别读取子栏目下的文章列表,该示例为3级分类,第一级catid 为 1
<YP:subcat catid="1">
<div class="notice fl box2 ovh" style="width:363px;">
<div class="title"><p><a href="{$r.url}">{$r.catname}</a></p></div>
<div class="noticelist">
<ul>
<YP:list sql="select * from rf_article where catid in ($r[arrchildid]) order by id desc limit 10" id="res">
<li>
<span>[{$res.createtime|toDate=###,'m-d'}]</span>
<a href="{$res.url}">{$res.title|str_cut=###,36}</a>
</li>
</YP:list>
</ul>
</div>
</div>
</YP:subcat>
子栏目
<YP:subcat catid="8">
<li>
<a href="{$r.url}">{$r.catname}</a>
</li>
</YP:subcat>
参数说明:
catid="8"为定义取栏目id为8的所有子栏目
self="1" 为1时同时在结果中加入本身栏目数据,为0为只取其所有子栏目
key="n"定义数据结果键值名称
id="r"定义数据查询的结果存放变量名称
列表页
1、列表页不指定栏目id
<volist name="list" id="r">
{$r.createtime|toDate=###,'Y-m-d'}
{$r.title|str_cut=###,15}
</volist>
标题图片:{$r.thumb|thumb=###,219,135,1}
其中thumb=###,219,135,1为用thumb函数处理标题图片###为当前值在函数中的位置,
后面三个值分别设置为缩略图的宽度,高度,是否自动裁剪(1为自动裁剪0为不裁剪)
{$r.title|str_cut=###,15} str_cut=###,15 ,15为设置标题截取15个字符 str_cut=###,15,'...' 后面可加截取后缀
{$r.createtime|toDate=###,'Y-m-d H:i:s'} toDate=###,'Y-m-d H:i:s'为格式化时间
2、指定栏目ID
<YP:list order="id desc" catid="6" limit="10" posid="1">
<li><a href="{$r.url}">{$r.title|str_cut=###,15}</a></li>
</YP:list>
catid="8"设置调取那些栏目数据.多个栏目用半角逗号分开3,4,5,10当设置为大栏目ID时
取此栏目下所有子栏目数据.也可为变量$catid
posid="1" 设置数据推荐位
id = "r" 定义数据查询的结果存放变量
key = "i" 返回数据主键变量名称
where ='' 数据筛选条件
order = 'id desc';排序方式
limit ="10" 调用条数 默认10条
field="*" 调用那些字段
thumb="1" 值为1时调用有标题图片的数据
name="Article" 设置模型名称
sql="" 自定义sql语句查询
3、取第2到第5条
<YP:list order="id desc" catid="1" limit="1,4">
<li {if $i<=2 }class="first_li"{else}class="others_li"{/if}>
<a href="{$r.url}" class="fl">{$r.title|str_cut=###,30,''}</a>
<span class="fr ffas f10">[{$r.createtime|toDate=###,'Y-m-d'}]</span>
</li>
</YP:list>
4、list标签sql语句调用
<YP:list order="id desc" sql="select * from rf_xhzhongxin where dingji=$catid or chaoji=$catid">
<li><a href="{$r.url}" >{$r.title}</a></li>
</YP:list>
详情页
{$title}标题、{$content}内容、{$createtime|toDate=###,'Y-m-d'}发布时间、{$hits}点击次数
上一篇/下一篇
{:prevnext($module_name,$id,$catid)}
组图调用
<volist name="pic" id="r">
<li>
<a href="{$r.filepath}">
<img src="{$r.filepath}" height="80" />
</a>
</li>
</volist>
其他
友情链接
<YP:link typeid="2" linktype="2" >
<li>
<a href="{$r['siteurl']}" target="_blank" title="{$r['name']}">
<img src="{$r['logo']}" alt="{$r['name']}">
</a>
</li>
</YP:link>
参数说明:
typeid="2" 为友情链接所属类别ID
linktype="2" 设置调用什么类型的链接 1为文字链接.2为图片链接
下拉表单(类别管理中添加相关条目)
<select class="slect j-reset" name="model">
<option value="0" selected>请选择</option>
<YP:list sql="select * from bangju_type where parentid = '2'">
<option value="{$r.typeid}">{$r.name}</option>
</YP:list>
</select>
{:Form::select(array('field'=>'module','options'=>$search_module),$module)}
添加表单
1.添加相应模型,并增加相应字段,
2.在表单模板中指定action的提交地址index控制器中如:index.php?a=golf。
3.在index控制器添加处理方法
function golf() {
$mod = M("golf");
$_POST = get_safe_replace($_POST);
if(false!==$mod->create()){
$mod->status = 1;
$mod->lang = 1;
$mod->createtime = time();
$mod->updatetime = time();
$mod->add();
$this->success("提交成功");
}else{
$this->error("提交失败");
}
}
※开启手机版
----------------------------------------------------------------------------------
①打开文件E:\wwwroot\zhongyi\Core\Lib\Core\App.class.php
static public function init() {
//加入判断手机的代码
if(mobile()){
C('DEFAULT_THEME', 'Mobile') ;
C('DEFAULT_HOME_THEME', 'Mobile');
}
// 页面压缩输出支持
if(C('OUTPUT_ENCODE')){
$zlib = ini_get('zlib.output_compression');
if(empty($zlib)) ob_start('ob_gzhandler');
}
...
}
※表单验证,验证码
-----------------------------------------------------------------------------------
①前台部分
<script src="js/validate.js" type="text/javascript"></script>
js引入验证码js:<load href="__PUBLIC__/Js/my.js"/>
<input type="text" name="verifyCode"/>
<img src="{:U('Home/Index/verify')}" onclick="javascript:resetVerifyCode();" class="checkcode" align="absmiddle" title="点击更换验证码" id="verifyImage"/>
<script>
$("#myform").validate();
</script>
<form action="index.php?a=message" id="myform" method="post">
<input type="text" name="username" value="" data-rule-required="true" data-msg-required=""/>
</form>
②后台控制器
function message(){
$mod = M("message");
$verifyCode = trim($_POST['verifyCode']);
if($_SESSION['verify'] && $this->sysConfig['ADMIN_VERIFY'] && md5($verifyCode) != $_SESSION['verify']){
$this->error("验证码错误!");
}
$_POST = get_safe_replace($_POST);
if(false!==$mod->create()){
$mod->status = 1;
$mod->lang = 1;
$mod->createtime = time();
$mod->updatetime = time();
$mod->add();
$this->success("提交成功");
}else{
$this->error("提交失败");
}
}
※全国省市联动筛选
--------------------------------------------------------------------------------------
①导入全国省市表area到数据库
②复制后台模型内容录入的默认模板'Content_edit.html',如'Store_edit.html',修改内容如下:
注:目前只调用到省市,地区暂时没调用
在需要进行添加筛选的模型表中加入省市区字段,目前只加入pid,cid
后台模型信息录入模板文件
<script src="/Public/Js/yourphp.js"></script>
<script>
area_change(0,0,'province','city','area','{$vo[pid]}','{$vo[cid]}');
</script>
<if condition="!empty($r['status'])">
<!--加入到字段address的下面-->
{if $r['field']=='address'}
<tr>
<td width="10%" >省市</td>
<td width="90%" id="">
<select name="pid" class="messageItem_select" id="province" onChange="area_change(this.value,1,'province','city','area');" >
<option value="">请选择省份...</option>
</select>
<select name="cid" onChange="area_change(this.value, 2,'province','city','area');" id="city" class="messageItem_select" >
<option value="">请选择城市...</option>
</select>
</td>
</tr>
{/if}
<tr>
<td width="10%" ><if condition="$r['required']"><font color="red">*</font></if>{$r.name}</td>
<td width="90%" id="box_{$r['field']}">
{$r|getform=$form,###}
</td>
</tr>
</if>
前台调用省市
<script>
area_change(0,0,'province','city','area','{$_GET[pid]}','{$_GET[cid]}');
</script>
<form action="{$Categorys[11][url]}" method="get">
<div class="sea-form">
<div class="province">
<select name="pid" class="messageItem_select" id="province" onChange="area_change(this.value,1,'province','city','area');" >
<option value="">请选择省份...</option>
</select>
</div>
<div class="city">
<select name="cid" onChange="area_change(this.value, 2,'province','city','area');" id="city" class="messageItem_select" >
<option value="">请选择城市...</option>
</select>
</div>
<div class="search-sub">
<input id="addr" type="text" name="address" value="{$_GET['address']}"/>
<input id="sub" type="submit" value=""/>
</div>
</div>
</form>
后台控制器部分
BaseAction.class.php
public function index($catid = '', $module = '')
{
...
$where = " status=1 ";
if ($cat['child']) {
$where .= " and catid in(" . $cat['arrchildid'] . ")";
} else {
$where .= " and catid=" . $catid;
}
//添加条件过滤代码
$pid = $_GET['pid'];
$cid = $_GET['cid'];
$address = $_GET['address'];
if ($module == "Store" && $pid && $cid && $address) {
$where .= " and pid = '$pid' and cid = '$cid' and address like '%$address%'";
} elseif ($module == "Store" && $pid && $cid && $address == '') {
$where .= " and pid = '$pid' and cid = '$cid'";
} elseif ($module == "Store" && $pid == 0 && $cid == 0 && $address) {
$where .= " and address like '%$address%'";
}elseif ($module == "Store" && $pid && $cid == 0 && $address) {
$where .= " and pid = '$pid' and address like '%$address%'";
}elseif ($module == "Store" && $pid && $cid == 0 && $address=='') {
$where .= " and pid = '$pid'";
}
}
※文件上传
--------------------------------------------------------------------------
①前台文件
<script type="text/javascript" src="__PUBLIC__/Js/jquery.artDialog.js?skin=default"></script>
<load href="__PUBLIC__/Js/iframeTools.js"/>
<load href="__PUBLIC__/Js/swfupload.js"/>
<script type="text/javascript">
var APP = '__APP__';
var ROOT = '__ROOT__';
var PUBLIC = '__PUBLIC__';
</script>
<tr>
<td class="tr" width="120">
<span class="red_x">*</span> 报图上传:
</td>
<td width="331">
<input size="50" class="text" style="width:285px;" id="files" type="text" value="{$vo['files']}" name="files" >
<input class="courierPage_button" value="文件上传" onclick="javascript:swfupload('files_uploadfile','files','文件上传',1,0,0,1,'zip,rar,doc,ppt,pdf,docx',20,1,'{$yourphp_auth}',up_image,nodo)"
type="button" style="cursor:pointer;width:66px;">
</td>
</tr>
②后台文件
AttachmentAction.class.php
function _initialize()
{
$this->isadmin= $_REQUEST['isadmin'] ? $_REQUEST['isadmin'] : 0;
$this->userid = 1;
...
}
BaseAction.class.php
public function _initialize()
{
...
$yourphp_auth_key = sysmd5(C('ADMIN_ACCESS').$_SERVER['HTTP_USER_AGENT']);
$yourphp_auth = authcode('1-0-0-1-zip,rar,doc,ppt,pdf,docx-20-1', 'ENCODE',$yourphp_auth_key);
$this->assign('yourphp_auth',$yourphp_auth);
...
}
※多添加筛选
-----------------------------------------------------------------------
①创建模型时,添加相关的筛选字段,然后关联到相关的类别ID(typeid)绑定条件
后台控制器
BaseAction.class.php
public function index($catid='',$module='')
{
...
...
$where = " status=1 ";
if($cat['child']){
$where .= " and catid in(".$cat['arrchildid'].")";
}else{
$where .= " and catid=".$catid;
}
//添加代码
$year = $_GET['year'];
$area = $_GET['area'];
if($module == "Case" && $year){
$where .=" and year = {$year}";
}
if($module == "Case" && $area){
$where .=" and area = {$area}";
}
...
}
前台部分 Case_list.html
<?php
$year = $_GET['year'];
$area = $_GET['area'];
?>
<div class="caseCategory_item clearfix">
<strong class="caseCategory_name">年份:</strong>
<div class="caseCategory_list">
<ul class="clearbox">
<li {if !$year}class="on"{/if}><a href="{$Categorys[$catid][url]}{if $type}?type={$type}{/if}{if $area}&area={$area}{/if}" title="不限">不限</a></li>
<YP:list sql="select * from bangju_type where parentid = '3' order by listorder desc">
<li {if $r[typeid]==$year}class="on"{/if}><a href="?year={$r.typeid}{if $type}&type={$type}{/if}{if $area}&area={$area}{/if}" title="{$r.name}">{$r.name}</a></li>
</YP:list>
</ul>
</div>
</div>
<div class="caseCategory_item clearfix">
<strong class="caseCategory_name">面积:</strong>
<div class="caseCategory_list">
<ul class="clearbox">
<li {if !$area}class="on"{/if}><a href="{$Categorys[$catid][url]}{if $type}?type={$type}{/if}{if $year}&year={$year}{/if}" title="不限">不限</a></li>
<YP:list sql="select * from bangju_type where parentid = '17' order by listorder desc">
<li {if $r[typeid]==$area}class="on"{/if}><a href="?area={$r.typeid}{if $type}&type={$type}{/if}{if $year}&year={$year}{/if}" title="{$r.name}">{$r.name}</a></li>
</YP:list>
</ul>
</div>
</div>
后台添加自定义菜单步骤:
后台-》系统设置-》后台菜单管理
①即可以根据实际情况添加一级菜单或者二级菜单,这里测试添加一级菜单:
点击添加菜单,各个参数如下:
上级:一级菜单
名称:一级菜单的命名,测试菜单
模块:一级菜单属于哪个模块,这里为Test
方法:因为是一级,此处为空
参数:为空
类型:默认后台管理
填好如上参数后,提交,则一级菜单创建完毕。
②在上面基础之上创建一级菜单的子菜单,继续点击添加一级菜单或者在需要添加子菜单的菜单点添加:
各个参数如下:
上级:测试菜单
名称:测试添加
模块:继承上级菜单,这里为Test
方法:这里为具体的操作名,如add
参数:为空
类型:默认后台管理
填好如上参数后,提交,则二级菜单创建完毕。
至此,一个一级菜单和一级菜单的子菜单即添加完毕,但没有加入到权限节点,任何人都可以直接根据地址来
访问,所以必须要加入到后台的权限节点。
后台-》会员管理-》权限节点管理
①找到之前添加的测试菜单项,发现这里有个空的菜单节点项,现在这下面添加子节点:
点击添加权限节点,各参数如下:
分组:测试菜单(大分组名称,即权限分配时看到的是在该分类下)
名称:Test
标题:测试菜单管理
上级:后台管理
②找到刚才添加的节点,点击后面的添加,即添加该节点的子节点
分组:测试菜单(大分组名称,即权限分配时看到的是在该分类下)
名称:add(具体的操作名,添加后即可加入到权限节点进行权限控制)
标题:测试添加
上级:默认测试
调试结果:
会员管理-》会员组权限-》授权查询
即可以看到添加的一个测试菜单项,此时可以给相关的网站管理员赋予相关的权限,但要注意一个问题,
此系统的权限粒度设置比较大,有个全局设置,包括了所有控制器的增删改查,如果赋予了该节点下的所有
操作,则其他控制器的这些同名操作都会被覆盖。不管你是否赋予了权限