PHPCMS的使用

1.下载安装phpcms

下载完后解压将install_packages上传到服务器并重命名为phpcms_test:

PHPCMS的使用

更改目录文件系统权限:

chmod -R 777 phpcms_test

配置nginx访问:

server {
root C:/Users/liudaoqiang/project_test/phpcms_test/;
index index.html index.php;
server_name dev.phpcms_test.com;
# set $yii_bootstrap "index.html";
set $yii_bootstrap "index.php";

charset utf-8;

location / {
index $yii_bootstrap;
try_files $uri $uri/ $yii_bootstrap?$args;
if (!-e $request_filename) {
rewrite (.*) /index.php/$1;
}
}

location ~ ^/(protected|framework|nbproject|themes/\w+/views) {
deny all;
}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
expires 30d;
}

location ~ .*\.(js|css)?$ {
expires 7d;
}

#avoid processing of calls to unexisting static files by yii
location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
try_files $uri =404;
}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {

fastcgi_split_path_info ^(.+\.php)(.*)$;

#let yii catch the calls to unexising PHP files
set $fsn /$yii_bootstrap;
if (-f $document_root$fastcgi_script_name){
set $fsn $fastcgi_script_name;
}

#fastcgi_next_upstream error timeout invalid_header http_500 http_503 http_404;
#fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fsn;

#PATH_INFO and PATH_TRANSLATED can be omitted, but RFC 3875 specifies them for CGI
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fsn;

}

location ~ /\.ht {
deny all;
}
}

配置hosts文件:

127.0.0.1     dev.phpcms_test.com

启动php-fpm及nginx:

start nginx

nginx -s reload

访问http://dev.phpcms_test.com/install/install.php进入安装程序:

PHPCMS的使用

PHPCMS的使用

PHPCMS的使用

PHPCMS的使用

登录后台管理系统:

PHPCMS的使用

PHPCMS的使用

进入前台首页:

PHPCMS的使用

2.phpcms模板标签

pc标签:

{pc:content action="lists" catid="25" num="20" page="$_GET[page]" return="data"}

<ul>

{loop $data $n $r}

<li><a href="{$r[url]}">{$r[title]}</a></li>

{/loop}

</ul>

{/pc}

json工具标签:

{pc:json url="http://www.phpcms.cn/12.php" cache="86400"}

<ul>

{loop $data $key $val}

<li><a href="{$val[url]}">{$val['title']}</a></li>

{/loop}

</ul>

{/pc}

xml工具标签:

{pc:xml  url="http://www.phpcms.cn/12.php" cache="86400"}

<ul>

{loop $data $key $val}

<li><a href="{$val[url]}">{$val['title']}</a></li>

{/loop}

</ul>

{/pc}

get标签:

{pc:get sql="SELECT * FROM phpcms_member" cache="3600" page="$page" dbsource="discuz" return="data"}

<ul>

{loop $data $key $val}

{$val[username]}<br />

{/loop}

</ul>

{$pages}

{/pc}

例:评论模块获取评论列表并展示:

{pc:comment action="lists" commentid="$commentid"}

<ul>

{loop $data $key $val}

<li> {$val[url]}于{format::date($val[creat_at], 1)}发布,他支持{direction($v[direction])}<br>{$val[content]}</li>

{/loop}

</ul>

{/pc}

例:获取会员模块的收藏文章列表:

{pc:member action="favoritelist" userid="$userid" order="id DESC"  num="10"}

<ul class="title-list">

{loop $data $k $v}
                 <li>·<a href="{$v['url']}" target="_blank">{$v['title']}</a><span><em>{format::date($v['adddate'], 1)}</em> </span></li>
                {/loop}

</ur>

{/pc}

3.phpcms的二次开发

phpcms的目录结构:

PHPCMS的使用

phpcms的ur访问:

PHPCMS的使用

系统类库与函数库调用:

public static function load_sys_class($classname, $path = '', $initialize = 1) {
   return self::_load_class($classname, $path, $initialize);
 }
public static function load_sys_func($func) {
   return self::_load_func($func);
 }
例如:
$http = pc_base::load_sys_class('http'); //实例化http类
pc_base::load_sys_class('format', '', 0); //调用form类,不进行实例化操作
pc_base::load_sys_func('mail'); 调用mail函数包
入口文件:
<?php
 define('PHPCMS_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR);
 include PHPCMS_PATH.'/phpcms/base.php';
 pc_base::creat_app();
 ?>
命名规范:
类文件需要以.class.php为后缀(这里是指的phpcms的系统类库文件和模块中的类库文件,第三方引入的不做要求),例如http.class.php。
函数文件需要以.func.php为后缀(第三方引入的不做要求),例如mail.func.php。
类名和文件名一致,例如 phpcmsapp类的文件命名是phpcmsapp.class.php。
数据模型需要以“数据表名称_model.class.php”为形式,类名称与文件名必须相同。
 
配置文件调用:
public static function load_config($file, $key = '', $default = '', $reload = false) {
                    static $configs = array();
                    if (!$reload && isset($configs[$file])) {
                       if (empty($key)) {
                         return $configs[$file];
                       } elseif (isset($configs[$file][$key])) {
                         return $configs[$file][$key];
                       } else {
                         return $default;
                       }
                    }
                   $path = CACHE_PATH.'configs'.DIRECTORY_SEPARATOR.$file.'.php';
                   if (file_exists($path)) {
                     $configs[$file] = include $path;
                   }
                   if (empty($key)) {
                     return $configs[$file];
                   } elseif (isset($configs[$file][$key])) {
                     return $configs[$file][$key];
                   } else {
                     return $default;
                   }
                 }
例如:
$upload_url = pc_base::load_config('system','upload_url');
开发技巧:
例如您要对改phpcms/mood/index.php进行二次开发。您可以在与index.php同级的目录下建立"MY_index.php"
 
上一篇:2014第8周一JS正则小问题


下一篇:js设计模式(10)---观察者模式