分类 技术宅的演示性文稿 下的文章

调用栏目下最新文章,很简单,action="postion"改为"lists",一定要加上catid

{pc:content action="lists" catid="72" num="8" order="id DESC"}
<UL>
{loop $data $r}
<LI><a href="{$r[url]}" target="_blank">{str_cut($r[title],36,'')}</a></LI>
{/loop}
</UL>{/pc}

 

Phpcms默认不支持调用全站最新文章,需要修改文件:\phpcms\modules\content\classes\content_tag.class.php,找到以下函数:

  1. /**
  2.       * 列表页标签
  3.       * @param $data
  4.       */
  5.      public function lists($data) {
  6.          $catid = intval($data['catid']);
  7.          if(!$this->set_modelid($catid)) return false;
  8.          if(isset($data['where'])) {
  9.              $sql = $data['where'];
  10.          } else {
  11.              $thumb = intval($data['thumb']) ? " AND thumb != ''" : '';
  12.              if($this->category[$catid]['child']) {
  13.                  $catids_str = $this->category[$catid]['arrchildid'];
  14.                  $pos = strpos($catids_str,',')+1;
  15.                  $catids_str = substr($catids_str, $pos);
  16.                  $sql = "status=99 AND catid IN ($catids_str)".$thumb;
  17.              } else {
  18.                  $sql = "status=99 AND catid='$catid'".$thumb;
  19.              }
  20.          }
  21.          $order = $data['order'];
  22.          $return = $this->db->select($sql, '*', $data['limit'], $order, '', 'id');
  23.          //调用副表的数据
  24.          if (isset($data['moreinfo']) && intval($data['moreinfo']) == 1) {
  25.              $ids = array();
  26.              foreach ($return as $v) {
  27.                  if (isset($v['id']) && !emptyempty($v['id'])) {
  28.                      $ids[] = $v['id'];
  29.                  } else {
  30.                      continue;
  31.                  }
  32.              }
  33.              if (!emptyempty($ids)) {
  34.                  $this->db->table_name = $this->db->table_name.'_data';
  35.                  $ids = implode('\',\'', $ids);
  36.                  $r = $this->db->select("`id` IN ('$ids')", '*', '', '', '', 'id');
  37.                  if (!emptyempty($r)) {
  38.                      foreach ($r as $k=>$v) {
  39.                          if (isset($return[$k])) $return[$k] = array_merge($v, $return[$k]);
  40.                      }
  41.                  }
  42.              }
  43.          }
  44.          return $return;
  45.      }

修改为:

  1. /**
  2.       * 列表页标签
  3.       * @param $data
  4.       */
  5.      public function lists($data) {
  6.          $catid = intval($data['catid']);
  7.          if(isset($data['where'])) {
  8.              $sql = $data['where'];
  9.          } else {
  10.              $thumb = intval($data['thumb']) ? " AND thumb != ''" : '';
  11.              if(!emptyempty($catid)) {
  12.                  if(!$this->set_modelid($catid)) return false;
  13.                  if($this->category[$catid]['child']) {
  14.                      $catids_str = $this->category[$catid]['arrchildid'];
  15.                      $pos = strpos($catids_str,',')+1;
  16.                      $catids_str = substr($catids_str, $pos);
  17.                      $sql = "status=99 AND catid IN ($catids_str)".$thumb;
  18.                  } else {
  19.                      $sql = "status=99 AND catid='$catid'".$thumb;
  20.                  }
  21.              }
  22.              else {
  23.                  $sql = "status=99".$thumb;
  24.              }
  25.          }
  26.          $order = $data['order'];
  27.          $return = $this->db->select($sql, '*', $data['limit'], $order, '', 'id');
  28.          //调用副表的数据
  29.          if (isset($data['moreinfo']) && intval($data['moreinfo']) == 1) {
  30.              $ids = array();
  31.              foreach ($return as $v) {
  32.                  if (isset($v['id']) && !emptyempty($v['id'])) {
  33.                      $ids[] = $v['id'];
  34.                  } else {
  35.                      continue;
  36.                  }
  37.              }
  38.              if (!emptyempty($ids)) {
  39.                  $this->db->table_name = $this->db->table_name.'_data';
  40.                  $ids = implode('\',\'', $ids);
  41.                  $r = $this->db->select("`id` IN ('$ids')", '*', '', '', '', 'id');
  42.                  if (!emptyempty($r)) {
  43.                      foreach ($r as $k=>$v) {
  44.                          if (isset($return[$k])) $return[$k] = array_merge($v, $return[$k]);
  45.                      }
  46.                  }
  47.              }
  48.          }
  49.          return $return;
  50.      }

修改代码后,即能调取全站最新文章。
调用方法:{pc:content action="lists" num="10" order="id DESC" cache="3600"}

以前做项目都没有遇到过使用readonly和disabled的情况,最多也只最多disabled是让input无法编辑而已。

今天在做项目的时候,突然发现,input里面的数据无法get以及post,然后使用了disabled的input也无法使用click还有各种事件了。

当时觉得很奇怪,后来在查了相关资料以后,发现了另一个属性readonly

后来经过试验,发现两者的区别是,disabled是完全禁用input,无法点击、编辑、post或get里面的数据。而readonly则只是无法编辑而已,还是可以正常post这些数据的!

$(".online").click(function(){
$(this).find("input").attr("readonly",false);
$(this).find("input").focus();//捕获焦点
$(this).find("input").blur(function(){
$(this).attr("readonly",true);
//并且ajax动态更新数据库
var num = $(this).parent().siblings("td:last").attr("id");
});

 

以上这段代码大概意思为,点击类为online的dom,然后查找到下面的input标签,并且解除readonly属性,获取到焦点。焦点丢失的时候,查找到类为online的父节点,然后查找到最后一个td,获取他的ID。

问题来了,点击1次,可以正常获取。

但是点击2次的话var num = $(this).parent().siblings("td:last").attr("id");会被获取2次,也就是点多少次,这个就会获取多少次。我不知道这个是clikc事件引起的,其他什么原因引起的。

:(   等我找到原因以后再来说下是什么情况。。。

以下为一些使用方法

Jquery的api中提供了对元素应用disabled和readonly属性的方法,在这里记录下。如下:
1.readonly
$('input').attr("readonly","readonly")//将input元素设置为readonly
$('input').removeAttr("readonly");//去除input元素的readonly属性

if($('input').attr("readonly")==true)//判断input元素是否已经设置了readonly属性

 

对于为元素设置readonly属性和取消readonly属性的方法还有如下两种:
$('input').attr("readonly",true)//将input元素设置为readonly
$('input').attr("readonly",false)//去除input元素的readonly属性

 

$('input').attr("readonly","readonly")//将input元素设置为readonly
$('input').attr("readonly","")//去除input元素的readonly属性
2.disabled
$('input').attr("disabled","disabled")//将input元素设置为disabled
$('input').removeAttr("disabled");//去除input元素的disabled属性

if($('input').attr("disabled")==true)//判断input元素是否已经设置了disabled属性

对于为元素设置disabled属性和取消disabled属性的方法还有如下两种:
$('input').attr("disabled",true)//将input元素设置为disabled
$('input').attr("disabled",false)//去除input元素的disabled属性

 

$('input').attr("disabled","disabled")//将input元素设置为disabled
$('input').attr("disabled","")//去除input元素的disabled属性

在js里面插入本汉化包即可&……

jQuery(function($){
$.datepicker.regional['zh-CN'] = {
clearText: '清除',
clearStatus: '清除已选日期',
closeText: '关闭',
closeStatus: '不改变当前选择',
prevText: '<上月',
prevStatus: '显示上月',
prevBigText: '<<',
prevBigStatus: '显示上一年',
nextText: '下月>',
nextStatus: '显示下月',
nextBigText: '>>',
nextBigStatus: '显示下一年',
currentText: '今天',
currentStatus: '显示本月',
monthNames: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
monthNamesShort: ['一','二','三','四','五','六', '七','八','九','十','十一','十二'],
monthStatus: '选择月份',
yearStatus: '选择年份',
weekHeader: '周',
weekStatus: '年内周次',
dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
dayNamesMin: ['日','一','二','三','四','五','六'],
dayStatus: '设置 DD 为一周起始',
dateStatus: '选择 m月 d日, DD',
dateFormat: 'yy-mm-dd',
firstDay: 1,
initStatus: '请选择日期',
isRTL: false};
$.datepicker.setDefaults($.datepicker.regional['zh-CN']);
});

世界上有三样东西看不懂

医生开的处方、女人的心、程序员写的正则表达式……

一些常用的正则运算:

验证数字:^[0-9]*$
验证n位的数字:^\d{n}$
验证至少n位数字:^\d{n,}$
验证m-n位的数字:^\d{m,n}$
验证零和非零开头的数字:^(0|[1-9][0-9]*)$
验证有两位小数的正实数:^[0-9]+(.[0-9]{2})?$
验证有1-3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$
验证非零的正整数:^\+?[1-9][0-9]*$
验证非零的负整数:^\-[1-9][0-9]*$
验证非负整数(正整数 + 0)

^\d+$
验证非正整数(负整数 + 0)

^((-\d+)|(0+))$
验证长度为3的字符:^.{3}$
验证由26个英文字母组成的字符串:^[A-Za-z]+$
验证由26个大写英文字母组成的字符串:^[A-Z]+$
验证由26个小写英文字母组成的字符串:^[a-z]+$
验证由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$
验证由数字、26个英文字母或者下划线组成的字符串:^\w+$
验证用户密码:^[a-zA-Z]\w{5,17}$ 正确格式为:以字母开头,长度在6-18之间,只能包含字符、数字和下划线。
验证是否含有 ^%&‘,;=?$\” 等字符:[^%&‘,;=?$\x22]+
验证汉字:^[\u4e00-\u9fa5],{0,}$
验证Email地址:^\w+[-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
验证InternetURL:^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$ ;^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$
验证电话号码:^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$:–正确格式为:XXXX-XXXXXXX,XXXX-XXXXXXXX,XXX-XXXXXXX,XXX-XXXXXXXX,XXXXXXX,XXXXXXXX。
验证身份证号(15位或18位数字):^\d{15}|\d{}18$
验证一年的12个月:^(0?[1-9]|1[0-2])$ 正确格式为:“01”-“09”和“1”“12”
验证一个月的31天:^((0?[1-9])|((1|2)[0-9])|30|31)$

正确格式为:01、09和1、31。
整数:^-?\d+$
非负浮点数(正浮点数 + 0):^\d+(\.\d+)?$
正浮点数

^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
非正浮点数(负浮点数 + 0) ^((-\d+(\.\d+)?)|(0+(\.0+)?))$
负浮点数

^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
浮点数

^(-?\d+)(\.\d+)?

 

所谓响应式页面,就是在不同设备,不同分辨率下,显示不同的内容以及不同的样式布局.

    Bootstrap是Twitter推出的一个开源的用于前端开发的工具包。它由Twitter的设计师Mark Otto和Jacob Thornton合作开发,是一个CSS/HTML框架。Bootstrap提供了优雅的HTML和CSS规范,它即是由动态CSS语言Less写成。Bootstrap一经推出后颇受欢迎,一直是GitHub上的热门开源项目,包括NASA的MSNBC(微软全国广播公司)的Breaking News都使用了该项目。

     今天研究了一下使用Bootstrap来做一个响应式的页面,代码如下:

<!DOCTYPE html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<link href="bootstrap/css/bootstrap-responsive.css" rel="stylesheet">

<link href="style.css" rel="stylesheet">

<title>一个响应式布局的演示</title>

</head>

<body>

<div class="container">

<div class="visible-desktop mr" id="hold">大屏幕</div>

<div class="hidden-phone mr" id="hold">平板电脑和小屏电脑之间</div>

<div class="hidden-desktop mr" id="hold">横向放置的手机和竖向放置的平板之间的分辨率</div>

<div class="visible-phone mr" id="hold">横向放置的手机及分辨率更小的设备</div>

</div>

</body>

</html>


CSS如下:

@charset "utf-8";

/* 响应式布局浏览 */

/* 大屏幕 */

.mr {margin:0 auto;}

@media (min-width: 1200px) {

#hold{

background:#000;

color:#fff;

width:500px;

height:400px;}

}


/* 平板电脑和小屏电脑之间的分辨率 */

@media (min-width: 768px) and (max-width: 979px) {

#hold{

background:#960;

width:500px;

height:400px;}

}


/* 横向放置的手机和竖向放置的平板之间的分辨率 */

@media (max-width: 767px) {

#hold{background:#609;

width:500px;

height:400px;}

}


/* 横向放置的手机及分辨率更小的设备 */

@media (max-width: 480px) {

#hold{background:#9C9;

width:500px;

height:400px;}

}



大家可以自己试一下在不同设备下浏览的页面,样式发生了改变!

这只是一个demo而已,通过以上这样的布局方式可以很轻松拿下IPAD、手机、电脑的不同布局,而不用针对每一个不同的版本来写不同的源码。