PHPCMS代码详细讲解

合集下载

Phpcms V9 首页,列表页调用文章点击量及评论数量方法

Phpcms V9 首页,列表页调用文章点击量及评论数量方法

Phpcms V9 首页,列表页调用文章点击量及评论数量方法很多朋友在用Phpcms做站时,具体需要在列表页、首页调用文章列表调用文章的点击量和评论排行,那么怎么才能做到在Phpcms v9首页、频道页、列表页、推荐位等页面获取文章浏览量和评论统计呢?原因起于phpcms官方默认的模版没有在列表页面调用过文章点击量和评论数量,而且文章的内页调用浏览量hit的方法不适用于列表页。

下面是新源网络工作分享的代码:一、Phpcms列表页面取得文章点击量及评论数量:{pc:content action="lists" catid="$catid" num="25" order="id DESC" page="$page" moreinfo="1"} {loop $data $r} {php $db =pc_base::load_model('hits_model'); $_r =$db->get_one(array('hitsid'=>'c-'.$modelid.'-'.$r[id])); $views = $_r[views]; } {php $comment_tag =pc_base::load_app_class("comment_tag", "comment"); $comment_total =$comment_tag->count(array('commentid'=>'content_'.$ca tid.'-'.$r[id].'-'.$modelid));} <li><spanclass="rt">{date('Y-m-dH:i:s',$r[inputtime])}</span>·<a href="{$r[url}" target="_blank"{title_style($r[style])}>{$r[title]}</a>点击:{$views} 评论数:{if $comment_total}{$comment_total} {else}0{/if}</li> {/loop} {$pages}{/pc}二、Phpcms 频道页面取得文章点击量及评论数量:{pc:contentaction="lists" catid="$v[catid]" num="5" order="id DESC"} {loop $data $v} {php $db =pc_base::load_model('hits_model'); $_r =$db->get_one(array('hitsid'=>'c-'.$modelid.'-'.$v[id])); $views = $_r[views]; } {php $comment_tag =pc_base::load_app_class("comment_tag", "comment"); $comment_total =$comment_tag->count(array('commentid'=>'content_'.$v[ catid].'-'.$v[id].'-'.$modelid));} <li><ahref="{$v[url]}"target="_blank"{title_style($v[style])}>{$v[title]}</a>点击:{$views}评论数:{if$comment_total}{$comment_total}{else}0{/if}</li>{/loop}{/pc}三、Phpcms首页面取得文章点击量及评论数量:{pc:content action="lists" catid="$r[catid]" num="5" order="id DESC" return="info"} {php $categorys =getcache('category_content_'.$siteid,'commons');}<ul class="list lh24 f14"> {loop $info $v} {php $category = $categorys[$v[catid]];}{php $modelid = $category['modelid'];}{php $db = pc_base::load_model('hits_model'); $_r =$db->get_one(array('hitsid'=>'c-'.$modelid.'-'.$v[id])); $views = $_r[views]; } {php $comment_tag = pc_base::load_app_class("comment_tag", "comment"); $comment_total =$comment_tag->count(array('commentid'=>'content_'.$v[ catid].'-'.$v[id].'-'.$modelid));}<li>·<a href="{$v['url']}" target="_blank"title="{$v['title']}"{title_style($v[style])}>{str_cut($v['title'], 40)}</a> 点击:{$views} 评论:{if$comment_total}{$comment_total}{else}0{/if}</li> {/loop} </ul> {/pc}四、Phpcms 推荐位取得文章点击量及评论数量:{pc:contentaction="position" posid="2" order="listorder DESC" num="4"} {php $categorys =getcache('category_content_'.$siteid,'commons');} {loop $data $r} {php $category = $categorys[$r[catid]];} {php $modelid = $category['modelid'];} {php $db =pc_base::load_model('hits_model'); $_r =$db->get_one(array('hitsid'=>'c-'.$modelid.'-'.$r[id])); $views = $_r[views]; } {php $comment_tag =pc_base::load_app_class("comment_tag", "comment"); $comment_total =$comment_tag->count(array('commentid'=>'content_'.$r[ catid].'-'.$r[id].'-'.$modelid));} <h4 class="blue"><a href="{$r[url]}"title="{$r[title]}">{str_cut($r[title],36,'')}</a> 点击:{$views} 评论:{if$comment_total}{$comment_total}{else}0{/if}</h4><p>{if $n==1}<img src="{thumb($r[thumb],90,60)}" width="90"height="60"/>{/if}{str_cut($r[description],112)}</p> <div class="bk20 hr"><hr /></div>{/loop}{/pc}。

phpcms 中文手册

phpcms 中文手册

PHPCMS中文手册简介PHPCMS是一款基于PHP语言开发的内容管理系统(CMS),它提供了丰富的功能和灵活的扩展性,适用于各种网站的建设和管理。

本手册将详细介绍PHPCMS的安装、配置、使用方法以及常见问题解答,帮助用户快速上手并充分发挥其功能。

安装1.下载PHPCMS安装包,并解压到web服务器根目录下。

2.创建一个MySQL数据库,并导入PHPCMS提供的安装SQL文件。

3.打开浏览器,访问安装目录下的install.php文件。

4.根据提示完成数据库配置、管理员账号设置等步骤。

5.完成安装后,删除install.php文件以确保安全性。

配置1.打开PHPCMS根目录下的phpcms.ini.php文件。

2.配置数据库连接信息,包括数据库地址、用户名、密码等。

3.配置网站基本信息,如网站名称、描述、关键字等。

4.根据需要配置其他功能模块,如会员系统、广告管理等。

后台管理1.打开浏览器,访问网站域名后添加/admin.php进入后台登录页面。

2.输入刚才设置的管理员账号和密码进行登录。

3.进入后台管理界面,可以进行网站设置、内容发布、用户管理等操作。

内容发布1.在后台管理界面,选择“内容”菜单下的“添加内容”。

2.选择需要发布的栏目,并填写相应的标题、关键字、描述等信息。

3.在编辑器中输入内容,并可以插入图片、链接等元素。

4.配置好其他相关选项后,点击“保存”按钮即可发布内容。

模板管理1.在后台管理界面,选择“模板”菜单下的“模板风格”。

2.可以查看已有的模板风格和自定义模板风格,并进行切换和编辑。

3.在“模板文件”一栏中,可以编辑网站前端显示的各个页面模板。

4.可以根据需要修改页面布局、样式和脚本等。

扩展功能PHPCMS提供了丰富的扩展功能,可以通过插件、模块和标签来实现。

以下是一些常见的扩展功能:1.插件:通过安装插件,可以增加网站功能,如留言板、在线支付等。

2.模块:在PHPCMS后台管理界面中,可以安装和启用各种功能模块。

PHPCMS V9开发文档

PHPCMS V9开发文档
命名规范
PHPCMS 其自身的一定规范。下面是使用 PHPCMS 做二次开发中应该遵循的命名规范:
类文件需要以.class.php 为后缀(这里是指的 phpcms 的系统类库文件和模块中的类库文 件,第三方引入的不做要求),例如 http.class.php。
函数文件需要以.func.php 为后缀(第三方引入的不做要求),例如 mail.func.php。 类名和文件名一致,例如 phpcmsapp 类的文件命名是 phpcmsapp.class.php。 数据模型需要以“数据表名称_model.class.php”为形式,类名称与文件名必须相同。
} $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])) {
入口程序
PHPCMS 是采用 MVC 设计模式开发,基于模块和操作的方式进行访问,采用单一入口模式 进行项目部署和访问,无论访问任何一个模块或者功能,只有一个统一的入口。 入口程序是在前期处理用户请求的引导程序。它是唯一一个可以被最终用户可以直接请求运 行的。
phpcms v9 的入口程序包含如下几行:
如果您创建了一个 mytest.php 在 test 模块下,那么我们在浏览器里面输入 URL:
/index.php?m=test&c=mytest 下面是一个控制器类的基本格式,在构建模块部分会具体讲解

phpcms v9 代码分析(一)

phpcms v9 代码分析(一)

1. 程序入口文件 /index.php1 2define('PHPCMS_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR); include PHPCMS_PATH.'/phpcms/base.php'; pc_base::creat_app();3只有 3 行代码,定义 PHPCMS_PATH 常量,后面的一些文件查找依赖此变量,一般该变量就是项目根路 径。

接着引入项目下/phpcms/base.php 文件, pc_base 是 base.php 里定义的类, 调用类方法 create_app。

管理后台的入口文件是/admin.php,就一行代码1header('location:index.php?m=admin');可见, 一样是使用 index.php 作入口, 只是多传入一个参数 m=admin, 代表要进入的 module 是 admin。

2. phpcms 框架入口文件 /phpcms/base.php• •定义了 phpcms 框架使用的各种常量,比如静态 css,javascript 文件路径等等 加载系统公用函数库,加载路径是/phpcms/libs/functions/global.func.php, /phpcms/libs/functions/extention.func.php。

•定义类 php_base,此类定义了各种加载函数,用于加载数据模型,系统函数,插件类库等等。

其中的 creat_app 函数在程序入口文件中被调用。

1 2 3public static function creat_app() { return self::load_sys_class('application'); }此函数加载/phpcms/libs/classes/application.class.php 文件,创建 application 对象。

phpcms 模板

phpcms 模板

phpcms 模板PHPcms模板是一种用于PHP网站开发的模板系统,它可以帮助网站开发者快速构建具有吸引力和功能性的网站。

本文将介绍PHPcms模板的基本概念、使用方法以及一些常见的问题解决方案。

一、基本概念。

PHPcms模板是基于PHP语言开发的一种模板系统,它使用Smarty模板引擎来实现模板和数据的分离。

通过PHPcms模板,开发者可以将网站的页面结构、样式和逻辑代码分离开来,使得网站的维护和管理更加方便。

二、使用方法。

1. 下载安装。

首先,开发者需要从官方网站下载最新版本的PHPcms模板,并将其解压到网站的模板目录中。

然后,通过后台管理系统进行模板的安装和配置。

2. 创建模板。

在PHPcms模板中,开发者可以通过Smarty模板引擎来创建模板文件。

模板文件通常包括头部文件、尾部文件和主体内容文件。

开发者可以根据网站的需求来设计和创建不同类型的模板文件。

3. 编辑模板。

通过编辑模板文件,开发者可以对网站的页面结构、样式和逻辑进行定制。

PHPcms模板提供了丰富的模板标签和函数,开发者可以通过这些标签和函数来实现网站的个性化定制。

4. 模板调用。

在网站的后台管理系统中,开发者可以选择所需的模板,并将其应用到网站的不同页面中。

通过模板调用,开发者可以实现网站页面的动态生成和显示。

三、常见问题解决方案。

1. 模板兼容性。

在使用PHPcms模板时,开发者需要注意不同浏览器和设备的兼容性。

可以通过CSS样式和JavaScript脚本来解决不同浏览器的兼容性问题。

2. 模板安全性。

为了保障网站的安全性,开发者需要注意模板文件的安全性。

可以通过对模板文件进行权限控制和输入过滤来提高网站的安全性。

3. 模板性能优化。

为了提高网站的性能,开发者可以对模板文件进行性能优化。

可以通过减少HTTP请求、压缩和合并资源文件等方式来提高网站的加载速度。

四、总结。

通过本文的介绍,我们了解了PHPcms模板的基本概念、使用方法以及一些常见的问题解决方案。

phpcms搜索功能

phpcms搜索功能

phpcms搜索功能随着互联网的发展和信息爆炸的时代,人们对于信息的获取变得越来越迫切。

作为网站开发者,提供一个高效的搜索功能对于用户来说是至关重要的。

在本文中,我们将介绍如何使用Phpcms搭建一个强大的搜索功能。

Phpcms是一款基于PHP开发的开源内容管理系统。

它不仅提供了搭建网站的基本功能,还提供了丰富的插件和模块,包括搜索功能。

下面我们将以一个新闻网站为例,介绍如何使用Phpcms实现搜索功能。

首先,在Phpcms后台进入“系统管理”-“模型管理”,点击“添加模型”,输入模型的名称和表名,点击“下一步”进入模型字段设置。

在这里,我们需要添加一些字段,比如新闻标题、新闻内容、发布时间等。

这些字段将用于搜索结果的展示。

在模型设置完成后,返回模型管理页面,点击“添加内容”,输入新闻的标题、内容等信息,点击“保存”即可添加新闻。

接下来,我们需要在网站前台添加搜索框并处理搜索请求。

在Phpcms的模板中,我们可以使用以下代码添加搜索框:````<form action="" method="get"><input type="text" name="keyword" placeholder="请输入关键字"><input type="submit" value="搜索"></form>````在用户提交搜索请求后,我们可以通过以下代码处理搜索请求并展示搜索结果:````<?php$keyword = isset($_GET['keyword']) ? $_GET['keyword'] : '';if(!empty($keyword)) {// 进行关键字匹配搜索$where = "title like '%$keyword%' or content like'%$keyword%'";$news = phpcms_model('news')->select($where);// 展示搜索结果foreach($news as $item) {echo "<h2>{$item['title']}</h2>";echo "<p>{$item['content']}</p>";}}>````以上代码首先获取用户输入的关键字,并进行模糊匹配搜索。

phpcms 中文手册

phpcms 中文手册

phpcms 中文手册
PHPCMS中文手册是一本介绍PHPCMS软件的完整教程,全书主要内容有:PHPCMS 介绍、PHPCMS 操作指南、PHPCMS 网站构建等等。

一、PHPCMS 介绍
PHPCMS是一款专为中文用户设计的CMS内容管理系统,由PHP 语言编写,拥有功能完善的模板系统及十分易用的后台,可实现快速搭建中文网站及网站管理。

二、PHPCMS 操作指南
1. 安装PHPCMS
在安装PHPCMS之前,需要先确认环境符合PHPCMS的规定,包括要求PHP版本在5.2及以上,MySQL版本4.1.0及以上等。

安装完成之后,可以进入PHPCMS后台直接开始使用。

2. 创建站点
从PHPCMS后台进入“网站管理--站点管理--添加站点”,输入网站名称,网站域名,创建缓存目录,选择模板,设置网站根索引页“index.html”文件的生成路径等,即可开始搭建站点。

三、PHPCMS 网站构建
1. 网站构建流程
创建网站后,需要进行网站构建,完整构建流程如下:
(1)配置信息:完成站点基本信息的配置;
(2)模板设置:建立模板,读取模板文件;
(3)栏目设置:设置栏目,编辑、删除栏目;
(4)内容设置:建立内容,读取内容,编辑内容;
(5)URL规则:根据需要设置URL规则;
(6)SEO设置:进行SEO优化工作;
(7)安全设置:完善网站安全防护。

2. 设置文件上传
在完成网站构建后,需要进行文件上传设置,可以在PHPCMS后台的“系统设置--上传设置”里设置文件上传的类型、大小等,以确保上传的文件安全。

phpcms 的api调用方法

phpcms 的api调用方法

phpcms 的api调用方法PHPcms是一款开源的内容管理系统,具有强大的功能和灵活的扩展性。

通过PHPcms的API调用方法,可以实现对系统的各种操作和功能的调用和使用。

本文将介绍PHPcms的API调用方法,并给出一些常用的API调用示例。

一、API调用方法的概述PHPcms的API调用方法主要通过调用系统提供的API函数来实现。

API函数是系统提供的一组封装好的函数,通过这些函数可以实现对系统的各种操作和功能的调用和使用。

API函数的调用方法一般为:函数名(参数1, 参数2, …)。

二、常用的API调用示例1. 获取站点信息通过调用API函数get_site_info(),可以获取当前站点的基本信息,如站点名称、站点URL、站长邮箱等。

示例代码如下:```$siteInfo = get_site_info();echo "站点名称:" . $siteInfo['site_name'];echo "站点URL:" . $siteInfo['site_url'];echo "站长邮箱:" . $siteInfo['site_admin_email'];```2. 获取栏目列表通过调用API函数get_category_list(),可以获取当前站点的栏目列表。

示例代码如下:```$categoryList = get_category_list();foreach ($categoryList as $category) {echo "栏目名称:" . $category['cat_name'];echo "栏目URL:" . $category['cat_url'];}```3. 获取文章列表通过调用API函数get_article_list(),可以获取指定栏目下的文章列表。

phpcms模板

phpcms模板

phpcms模板PHPcms模板。

PHPcms是一款非常流行的内容管理系统,它为网站开发者提供了丰富的功能和灵活的模板系统。

在PHPcms中,模板是网站的外观和用户体验的重要组成部分,因此选择合适的模板对于网站的成功至关重要。

本文将为大家介绍PHPcms模板的相关知识和使用方法。

首先,PHPcms模板的基本结构包括头部、主体和底部三个部分。

头部通常包括网站的logo、导航菜单等内容,主体是网站的主要展示内容,底部则包括网站的版权信息、联系方式等内容。

在制作PHPcms模板时,我们需要按照这个结构来设计和布局模板,以确保网站的整体风格和布局统一。

其次,PHPcms模板的制作需要掌握一定的HTML、CSS和JavaScript知识。

HTML用于搭建网页的结构,CSS用于设置网页的样式,JavaScript用于实现网页的交互效果。

在制作模板时,我们需要灵活运用这些知识,编写出符合网站需求的模板代码。

另外,PHPcms模板的制作还需要考虑到响应式布局和移动端适配。

随着移动互联网的发展,越来越多的用户通过移动设备访问网站,因此我们需要确保模板在不同设备上都能够良好展示,提供良好的用户体验。

此外,PHPcms模板的定制化也是非常重要的。

通过对模板进行个性化定制,我们可以为网站赋予独特的风格和特色,吸引更多的用户。

在定制模板时,我们可以根据网站的主题和定位,选择合适的配色方案、字体样式等,打造出与众不同的网站外观。

最后,为了提高模板的质量和效率,我们还可以考虑使用PHPcms模板框架或者模板生成器。

这些工具可以帮助我们快速搭建模板的基础结构,节省制作模板的时间和精力,提高工作效率。

总之,PHPcms模板在网站开发中起着至关重要的作用。

通过本文的介绍,相信大家对PHPcms模板有了更深入的了解,希望能够帮助大家更好地制作和应用PHPcms模板,为网站开发增添新的亮点和活力。

cms源码

cms源码

cms源码CMS(内容管理系统)源码详解绪论内容管理系统(Content Management System,简称CMS)是用于创建、编辑和发布网站内容的一种软件应用。

它为非技术人员提供了简单易用的界面,用于管理网站的各个方面,如页面布局、文章发布、用户管理、权限控制等。

CMS旨在帮助网站管理员和内容创作者轻松地管理和维护网站,同时提供良好的用户体验。

一、CMS源码的基本结构CMS源码通常由前端和后端两部分组成。

前端负责展示和用户交互,包括网站的页面设计、布局和样式;后端负责处理数据存储、业务逻辑和用户权限等问题。

1. 前端前端部分通常由HTML、CSS和JavaScript等语言编写。

它负责网站的整体界面设计和用户交互效果。

HTML主要用于定义网页结构,CSS负责网页样式的设计,而JavaScript则负责网页的交互行为。

通过这三种语言的组合,前端开发者能够创建出美观、功能强大的网站界面。

2. 后端后端部分通常由服务器端脚本语言编写,如PHP、Java、Python 等。

它负责处理各种业务逻辑和数据的持久化存储。

一般情况下,后端开发者会使用数据库来存储和管理网站的各种信息,例如文章内容、用户信息和权限设置等。

后端还负责处理用户请求并返回相应的页面或数据,以实现网站的正常运行。

二、CMS源码的功能模块1. 用户管理用户管理模块负责管理网站的用户信息和权限设置。

它允许管理员创建、编辑和删除用户账号,并为不同的用户角色分配不同的权限,从而实现对网站内容和功能的精确控制。

用户管理模块还包括用户注册、登录和找回密码等功能,以提供更好的用户体验。

2. 文章管理文章管理模块是CMS中最核心的功能之一,它允许管理员创建、编辑和删除网站上的文章。

通过文章管理模块,管理员可以方便地发布新闻、博客、产品说明和公告等各种类型的文章。

文章管理模块通常提供分类、标签、搜索和评论等功能,以便用户更好地浏览和参与讨论。

3. 页面管理页面管理模块负责管理网站的静态页面。

phpcms开发手册教程

phpcms开发手册教程

PHPCMS二次开发教程/try/201109/1187_1.htm文件目录结构根目录| – api 接口文件目录| – phpcms phpcms框架主目录| – languages 框架语言包目录| – libs 框架主类库、主函数库目录| – model 框架数据库模型目录| – modules 框架模块目录| – templates 框架系统模板目录| – caches 缓存文件目录| – configs 系统配置文件目录| – caches_* 系统缓存目录| – phpsso_server phpsso主目录| – statics 系统附件包| – css 系统css包| – images 系统图片包| – js 系统js包| – uploadfile 网站附件目录| – admin.php 后台管理入口| – index.php 程序主入口| – crossdomain.xml FLASH跨域传输文件| – robots.txt 搜索引擎蜘蛛限制配置文件| – favicon.ico 系统icon图标PHPCMS V9 核心文件说明模块与控制器模块:phpcms v9框架中的模块,位于phpcms/modules目录中每一个目录称之为一个模块。

即url访问中的m。

访问content模块示例:/index.php?m=content控制器:phpcms v9的控制器就是模块的类文件,位于phpcms/modules/模块/目录下面。

类名成就是文件名+.php,例如一个名为abc的控制器,那么他的命名为abc.php即可。

控制器类默认继承系统的函数库,可以直接使用。

控制器类的类名称与控制器文件名必须相同。

如果您创建了一个abc.php在 test模块下,那么我们在浏览器里面输入URL:/index.php?m=test& c=abc二次开发技巧如果要对已存在的控制器进行二次开发,为了方便升级不建议直接对内核文件直接修改该,您可以通过“MY_*.php”的形式进行二次开发。

phpcms v9学习文档

phpcms v9学习文档

Phpcms v9学习手册1、添加全局变量我用了SKIN_JS、SKIN_CSS、SKIN_IMG来定义模板的三个文件夹,如果你不喜欢,修改文件中涉及的这三个变量名可自行修改。

第一步:打开phpcms\modules\admin\templates\setting.tpl.php搜索:$("#img_path").formValidator({onshow:"<?php echo L('setting_input').L('setting_img_path')?>",onfocus:"<?php echo L('setting_img_path').L('setting_end_with_x')?>"}).inputValidator({onerror:"<?php echo L('setting_img_path').L('setting_input_error')?>"}).regexValidator({regexp:"(.+)\/$",oner ror:"<?php echo L('setting_img_path').L('setting_end_with_x')?>"});复制代码在其后加入:$("#skin_js").formValidator({onshow:"<?php echo L('setting_input').L('setting_skin_js')?>",onfocus:"<?php echo L('setting_skin_js').L('setting_end_with_x')?>"}).inputValidator({onerror:"<?php echo L('setting_skin_js').L('setting_input_error')?>"}).regexValidator({regexp:"(.+)\/$",onerror :"<?php echo L('setting_skin_js').L('setting_end_with_x')?>"});$("#skin_css").formValidator({onshow:"<?php echo L('setting_input').L('setting_skin_css')?>",onfocus:"<?php echo L('setting_skin_css').L('setting_end_with_x')?>"}).inputValidator({onerror:"<?php echo L('setting_skin_css').L('setting_input_error')?>"}).regexValidator({regexp:"(.+)\/$",onerr or:"<?php echo L('setting_skin_css').L('setting_end_with_x')?>"});$("#skin_img").formValidator({onshow:"<?php echo L('setting_input').L('setting_skin_img')?>",onfocus:"<?php echo L('setting_skin_img').L('setting_end_with_x')?>"}).inputValidator({onerror:"<?php echoL('setting_skin_img').L('setting_input_error')?>"}).regexValidator({regexp:"(.+)\/$",onerr or:"<?php echo L('setting_skin_img').L('setting_end_with_x')?>"});复制代码搜索:<tr><th width="120"><?php echo L('setting_upload_url')?></th><td class="y-bg"><input type="text" class="input-text" name="setconfig[upload_url]" id="upload_url" size="50" value="<?php echo $upload_url?>" /></td></tr>复制代码在其后加入:<tr><th width="120"><?php echo L('setting_skin_js')?></th><td class="y-bg"><input type="text" class="input-text" name="setconfig[skin_js]" id="skin_js" size="50" value="<?php echo $skin_js?>" /></td></tr><tr><th width="120"><?php echo L('setting_skin_css')?></th><td class="y-bg"><input type="text" class="input-text" name="setconfig[skin_css]" id="skin_css" size="50" value="<?php echo $skin_css?>" /></td></tr><tr><th width="120"><?php echo L('setting_skin_img')?></th><td class="y-bg"><input type="text" class="input-text" name="setconfig[skin_img]" id="skin_img" size="50" value="<?php echo $skin_img?>" /></td></tr>复制代码第二步:打开phpcms\modules\admin\functions\global.func.php搜索:if(in_array($k,array('js_path','css_path','img_path','attachment_stat','admin_log','gzip','err orlog','phpsso','phpsso_appid','phpsso_api_url','phpsso_auth_key','phpsso_version','conne ct_enable', 'upload_url','sina_akey', 'sina_skey', 'snda_enable', 'snda_status', 'snda_akey', 'snda_skey', 'qq_akey', 'qq_skey'))) {复制代码改为(也就是添加了'skin_js','skin_css','skin_img',):if(in_array($k,array('js_path','css_path','img_path','skin_js','skin_css','skin_img','attachme nt_stat','admin_log','gzip','errorlog','phpsso','phpsso_appid','phpsso_api_url','phpsso_auth _key','phpsso_version','connect_enable', 'upload_url','sina_akey', 'sina_skey', 'snda_enable', 'snda_status', 'snda_akey', 'snda_skey', 'qq_akey', 'qq_skey'))) {复制代码第三步:打开phpcms\languages\zh-cn\ng.php搜索:$LANG['setting_upload_url'] = '附件URL访问路径';复制代码在其后加入:$LANG['setting_skin_img'] = '模板图片路径';$LANG['setting_skin_js'] = '模板JS路径';$LANG['setting_skin_css'] = '模板CSS路径';复制代码第四步:打开phpcms\base.php搜索:define('APP_PATH',pc_base::load_config('system','app_path'));复制代码在其后加入://模板js、css、img路径define('SKIN_JS',pc_base::load_config('system','skin_js'));define('SKIN_CSS',pc_base::load_config('system','skin_css'));define('SKIN_IMG',pc_base::load_config('system','skin_img'));2、分类信息列表页怎样实现各个栏目的各自的内容function structure_filters_sql($modelid,$cityid='',$catid) { //这里加上$catid $sql = $fieldname = $min = $max = '';$fieldvalue = array();$modelid = intval($modelid);$model = getcache('model','commons');$fields = getcache('model_field_'.$modelid,'model');$fields_key = array_keys($fields);//TODO$sql = "`status` = 99 AND `catid`='$catid'"; //这里也加上,单引变双引你有木有看见,99的反斜杠也不见if(intval($cityid)!=0) $sql .= ' AND `city`=\''.$cityid.'\'';foreach ($_GET as $k=>$r) {if(in_array($k,$fields_key) && intval($r)!=0 && ($fields[$k]['filtertype'] || $fields[$k]['rangetype'])) {if($fields[$k]['formtype'] == 'linkage') {$datas = getcache($fields[$k]['linkageid'],'linkage');$infos = $datas['data'];if($infos[$r]['arrchildid']) {$sql .= ' AND `'.$k.'` in('.$infos[$r]['arrchildid'].')';}} elseif($fields[$k]['rangetype']) {if(is_numeric($r)) {$sql .=" AND `$k` = '$r'";} else {$fieldvalue = explode('_',$r);$min = intval($fieldvalue[0]);$max = $fieldvalue[1] ? intval($fieldvalue[1]) : 999999;$sql .=" AND `$k` >= '$min' AND `$k` < '$max'";}} elseif($fields[$k]['boxtype']=='checkbox' || $fields[$k]['boxtype']=='multiple'){ //这里也改啦$sql .= " AND `$k` LIKE '%,$r,%'"; //为的是复选或多选的筛选} else {$sql .=" AND `$k` = '$r'";}}}return $sql;}复制代码前台调用就要改写了,如下:{php $sql = structure_filters_sql($modelid,$cityid,$catid)}还有,你不要手欠,把pc标签里catid="$catid"去掉,会出事的吆3、修复站群模式下子站点【栏目页】【内容页】采用动态页面时候url 由于APP_PATH 问题导致的内容页url 域名错误指向主站问题问题由来:原小波方案无效,请大家测试/forum.php?mod=viewthread&tid= 270400&highlight=%D5%BE%C8%BA我的修复如下:一、首先修复站群模式下子站点【栏目页】采用动态页面时候url 由于APP_PATH 问题导致的内容页url 域名错误指向主站问题(1.)打开phpcms\modules\admin\category.php找到函数repair436 行注释掉://$url = $this->update_url($catid);//$url = APP_PATH.$url;再下面添加代码://txb 修复站群模式下【栏目页】动态页面时候url 由于APP_PATH 问题导致的内容页url 域名错误问题本帖隐藏的内容$url = $this->update_url($catid);//cat 数组在前面foreach 处定义$txbsiteid=$cat['siteid'];$this->sitedb = pc_base::load_model('site_model');$siteinfo=$this->sitedb->get_one(array('siteid'=>$txbsiteid));$url = $siteinfo['domain'].$url;二、首先修复站群模式下子站点【内容页】采用动态页面时候url 由于APP_PATH 问题导致的内容页url 域名错误指向主站问题(1)、首先打开phpcms\modules\content\classes\url.class.php找到函数show()在91行左右注释掉原代码://txb 此处为原来代码,注释掉换成新修改的!// $url_arr[0] = $url_arr[1] = APP_PATH.$urls;在其下添加//txb 修复站群模式下【内容页】动态页面时候url 由于APP_PATH 问题导致的内容页url 域名错误问题本帖隐藏的内容//txb $category 数组入口处定义,已经获得某栏目siteid$txbsiteid=$category['siteid'];$this->sitedb = pc_base::load_model('site_model');$siteinfo=$this->sitedb->get_one(array('siteid'=>$txbsiteid));$url_arr[0] = $url_arr[1] = $siteinfo['domain'].$urls;最后在绑定的二级域名的根目录下加上index.php文件其内容是:(绑定的二级域名的目录在网站的根目录下)<?phpinclude '../index.php';?>或者是:(绑定的二级域名的目录在网站的默认html文件夹下的文件夹下)<?phpinclude '../../index.php';?>西部数码服务器学习链接:/faq/list.asp?unid=514。

PHPCMS教程

PHPCMS教程

PHPCMS教程,手把手教你建网站本文是我亲自用PHPCMS搭建网站的全过程,适合从零开始学习PHPCMS建站的朋友,旨在帮助正在或准备使用PHPCMS建站却一头雾水的朋友,让其入门,少走一些弯路,对与高手可能价值不大。

本人没有文采,也很少在网上写文章,一切就本着简单、通俗易懂的特点与大家分享经验。

好,废话不多说,现在开始。

为了方便说明开发过程,本文以我的新站51笑话网:http:为例来说明,方便说事,便于说明我的思路,同时方便大家参考。

该站是用最新版本phpcms2008 sp4搭建的,但我觉得只要搞懂了原理,什么版本并不重要。

一.开发前的准备1.帮助教程:到官网上下载。

下好后,如果你有耐心可以通读一般,如果你像我一样看上10分钟就头晕的话,只要看看“功能简介”、“安装帮助”就行了,其他的开发时候再来查看。

2.本地开发环境搭建:按照“安装帮助”,可以轻松的搭建好PHPCMS开发环境,但前提是要有PHP和MySQL。

3.如果你像我一样,英语太烂,就找个翻译工具,比如Google翻译(/)就很不错。

4.进入PHPCMS根目录,了解一下目录结构,不知道哪个文件夹下装的是什么,或者哪个文件是干什么用的,就把名称赋值—> 翻译一下,在配合“功能简介”你就能够猜出个八九不离十,开发的时候你才知道该到哪里改代码。

我把特别重要的PHPCMS目录说一下:admin -------------------后台管理目录,里面全部是实现后台功能的include------------------这个系统所需的函数、类都在里面include/config.inc.php---网站的配置信息,每一个配置项都很重要data---------------------数据,相当于文件数据库,数据库重要、频繁访问的数据都缓存在这里;还有一些编译好的文件*.tpl.phpdata/cache/common.php----如果你要研究代码,这个文件会经常涉及到templates/default/-------PHPCMS模板存放目录,我们开发的重心就集中在这里面了,你90%的时间都在这里忙乎,进一步讲,模板位于phpcms子目录(其他模块在相应的文件夹下,如member是会员模块),css样式位于skins/default子目录5.登录后台:http://localhost:88/xiaohua/admin.php(88是端口,xiaohua是phpcms根目录),大概了解一下后台,重点了解“系统设置”、“内容管理”。

最详尽的PHP整站代码解析

最详尽的PHP整站代码解析

用到这两个变量多。所以干脆定义为常量。方便使用。再多说一个技巧: 定
$CONFIG[rootpath] 但是最好不要这样。为什么呢。因为PHP引擎会先判断 rootpath 是不是常量。如果不是才会认 $CONFIG[rootpath] 是数组。 这样性能上就差了一点点了。 再多说一个技巧: 为什么程序多数都用 引号呢而不用 "" 双引号呢。因为这样效率好, "" 双引号。 php 引擎还会先检查里面是否有变量,如果有就解释。而 '' 单引号不会做这一步的检查。而直接就当成字符窜了。所以效 率上也会有一点点影响哦。 */ $CONFIG['enablephplog'] ? set_error_handler('phpcms_error') : error_reporting(E_ERROR | E_WARNING | E_PARSE); /** $CONFIG['enablephplog'] 是否开启错误日志设置。这个设置在全局配置文件里面.config.inc.php 。 这里使用了 算符 偶最喜欢用了。一些简短的逻辑判断。可以使用 ?: ; 来实现比较简洁 三目运
PHPCMS 整站代码分析讲解(一)
首先我对 PHPCMS 的 头程序文件开始讲解 : include/common.inc.php
这个文件是程序启动的核心文件. [Copy to clip<?php /** 代码讲解分析: 逆雪寒. 2007 - 12 - 20 */ $mtime = explode(' ', microtime()); $phpcms_starttime = $mtime[1] + $mtime[0]; /** 计算脚本开始运行的时间。很常见的写法。最后结算还在程序运行的终点位置。讲到了在给各位说。 */ unset($LANG, $_REQUEST, $HTTP_ENV_VARS, $HTTP_POST_VARS, $HTTP_GET_VARS, $HTTP_POST_FILES, $HTTP_COOKIE_VARS); /** 把 $HTTP_ENV_VARS $HTTP_POST_VARS 全局变量设置为 NULL 因为 php4.1.0 以上默认以 $_POST 来替代。unset 后 防止程序运行在低版本会出现安全等问题。比如变量注入 */ set_magic_quotes_runtime(0); //地球人都知道。关了字符窜入库自动转意 比如 my name is on'x 们关掉吧~哈哈 define('IN_PHPCMS', TRUE); /** 程序入口标记。为什么需要这个东西呢。就好比你进一个小区,保安大哥哥肯定要你签字或是挂个鸟牌证明你是从正门进来 的。防止你翻墙进入去偷东西搞破坏。这个入口标记也有这个功能。 在这里定义了一个常量 IN_PHPCMS 为 TRUE ,然 后我在其他程序文件里面检查这个标记。如果不存在或不为真, 那么就基本可以肯定你这个家伙是个小偷来的。 人可能翻墙进入。但程序怎么翻墙呢。只要在 php.ini 文件里面激活 allow_url_fopen 选项,include() 就可以包含 URL 地址了。你想下如果你有个 放密码的 PHP 文件。如果给人家 include 了 以后。你怕不怕。 */ define('PHPCMS_ROOT', str_replace("\\", '/', substr(dirname(__FILE__), 0, -8))); /** 为了程序产品的跨平台。自动获取程序的安装目录路径 ,定义为 PHPCMS_ROOT 常量。方便以后程序使用。建议大家都这 样做哦 */ require PHPCMS_ROOT.'/include/global.func.php'; /** 包含 全局函数 global.func.php 文件。里面放了些程序全局都有需要用的函数.大家看到了吧。 常量 PHPCMS_ROOT 已 经发挥作用。 这样程序给人家发布到了 二级目录下。也不需要人家手动改整站根目录路径了。 自己好好理解下。。。。。 */ $search_arr = array("/ union /i","/ select /i","/ update /i","/ outfile /i","/ or /i"); 1 转成 my name is on \'x 为了最大的程序性能所以我

phpcms v9模板代码解析-首页

phpcms v9模板代码解析-首页

phpcms v9模板解析
首先来到content模块下面的header.html
1.首页顶部推荐位
对于content下面的position
参数名是否必须默认值说明
posid 是null 推荐位ID
catid 否null 调用栏目ID
thumb 否0 是否仅必须缩略图
order 否null 排序类型
num 是null 数据调用数量
相关查询
Posid 后台-内容-推荐位管理
Catid 后台-内容-栏目管理
2.在分类下面进行查询
这里是取缓存文件里面的东西,具体这个怎么生成的缓存,和专题,研究中?
3.下面是首页导航的代码
对于category
参数名是否必须默认值说明
catid 否0 调用该栏目下的所有栏目,默认0,调用一级栏目$siteid 否 1 默认调用系统站点
order 否null 排序方式、一般按照listorder ASC排序,即栏目的添加顺序如果要使用下级标签,使用get标签调用数据库调出
4.首页左侧头条推荐推荐信息
对应源代码
这个解释和position 一样这里就不多说了
5.首页焦点图推荐
6.下面看到争议这一块
首先找到他的标签
7.首页图片新闻推荐
8.首页顶级栏目循环
这里的代码为
这里的含义是显示一条图文浏览的,显示5条依次下来的信息其中subcat为系统主函数下面的
这里面主要是找缓存文件,其实后台更新栏目后也随即更新了缓存文件9.公告
10.订阅
11.专题页面
这里的elite为是否为推荐
12热点、评论、关注
13.调查问卷,这是后台调用的js文件
14.友情链接。

phpcms标签整理_当前栏目调用(phpcms手册)

phpcms标签整理_当前栏目调用(phpcms手册)

<div id="nxfl"><h2>内训分类</h2>{loop subcat($catid) $c}<ul class="box"><h4><a href="{$c[url]}">{$c['catname']}</a></h4>{if $c['child']}{php $child = subcat($c['catid']);}{loop $child $catc}<li><a title="{$catc['catname']}" href="{$catc['url']}" target="_blank">{$catc['catname']}</a></li>{/loop}</ul>{/if}{/loop} </div>1.phpcms v9 所有当前栏目信息标签下面做总结,方便大家找到在内容页想调用的东西当前栏目id: {$catid}当前栏目名: {$CA TEGORYS[$catid][catname]}当前栏目目录名: {$CA TEGORYS[$catid][catdir]}当前栏目url: {$CA TEGORYS[$catid][url]}当前栏目位置(面包屑导航):首页> {catpos($catid)} 正文当前栏目描述:{$CATEGORYS[$catid][description]}当前栏目图片:<img src="{$CATEGORYS[$catid][image]}" />当前栏目的内容数: {$CATEGORYS[$catid][items]}当前栏目的点击数: {$CATEGORYS[$catid][hits]}当前栏目的上级栏目id: {$CA TEGORYS[$catid][parentid]}可以放在内容页的任何位置显示效果如下:{pc:get sql="select * from v9_category where parentid = 19 order by listorder asc limit 0,6 --"}{loop $data $v}{$v[url]}{/loop}{/pc}2.标签phpcms v9{template “content”,”header”} ———- 调用根目录下phpcms\template\content\header 文件{CHARSET} ————————————-字符集(gbk或者utf-8){if isset($SEO['title']) && !empty($SEO['title'])}{$SEO['title']}{/if}{$SEO['site_title']}{$SEO['keyword']}{$SEO['description']}———————————–标题和标题seo优化{CSS_PATH} ———————————–地址替换为根目录下\statics\css{JS_PA TH}————————————–地址替换为根目录下\statics\js{pc:content action=”position”posid=”9″order=”id”num=”10″cache=”3600″} pc标签{pc:content 参数名=”参数值”参数名=”参数值”参数名=”参数值”}{loop $data $k $v}<li><a href=”{$v[url]}”>{$v[title]}</a></li>{/loop}pc标签值action=”position”————-对话框的类型=“内容推荐位列表”posid=”9″——————–推荐位ID=“9”order=”id”——————–排序类型=“id”num=”10″——————-数据调用数量=“10”cache=”3600″—————-缓存=”3600″毫秒{APP_PATH}—————–项目地址{get_siteid()}—————-{IMG_PA TH}—————–action=”hits”排行,热点等action=”lists”主要用于列表等。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

PHPCMS 整站代码分析讲解(一)首先我对PHPCMS 的头程序文件开始讲解: include/common.inc.php 这个文件是程序启动的核心文件.[Copy to clipboard][ - ] CODE:<?php/**代码讲解分析:逆雪寒. 2007 - 12 - 20*/$mtime = explode(' ', microtime());$phpcms_starttime = $mtime[1] + $mtime[0];/**计算脚本开始运行的时间。

很常见的写法。

最后结算还在程序运行的终点位置。

讲到了在给各位说。

*/unset($LANG, $_REQUEST, $HTTP_ENV_VARS, $HTTP_POST_VARS, $HTTP_GET_VARS,$HTTP_POST_FILES, $HTTP_COOKIE_VARS);/**把 $HTTP_ENV_VARS $HTTP_POST_VARS 全局变量设置为NULL 因为php4.1.0以上默认以$_POST 来替代。

unset后防止程序运行在低版本会出现安全等问题。

比如变量注入*/set_magic_quotes_runtime(0);//地球人都知道。

关了字符窜入库自动转意比如 my name is on'x 转成 my name is on \'x 为了最大的程序性能所以我们关掉吧~哈哈define('IN_PHPCMS', TRUE);/**程序入口标记。

为什么需要这个东西呢。

就好比你进一个小区,保安大哥哥肯定要你签字或是挂个鸟牌证明你是从正门进来的。

防止你翻墙进入去偷东西搞破坏。

这个入口标记也有这个功能。

在这里定义了一个常量IN_PHPCMS 为TRUE ,然后我在其他程序文件里面检查这个标记。

如果不存在或不为真,那么就基本可以肯定你这个家伙是个小偷来的。

人可能翻墙进入。

但程序怎么翻墙呢。

只要在php.ini文件里面激活allow_url_fopen选项,include() 就可以包含URL 地址了。

你想下如果你有个放密码的PHP 文件。

如果给人家include 了以后。

你怕不怕。

*/define('PHPCMS_ROOT', str_replace("\\", '/', substr(dirname(__FILE__), 0, -8)));/**为了程序产品的跨平台。

自动获取程序的安装目录路径,定义为PHPCMS_ROOT 常量。

方便以后程序使用。

建议大家都这样做哦*/require PHPCMS_ROOT.'/include/global.func.php';/**包含全局函数global.func.php 文件。

里面放了些程序全局都有需要用的函数.大家看到了吧。

常量PHPCMS_ROOT 已经发挥作用。

这样程序给人家发布到了二级目录下。

也不需要人家手动改整站根目录路径了。

自己好好理解下。

*/$search_arr = array("/ union /i","/ select /i","/ update /i","/ outfile /i","/ or /i");/**("/ union /i") 这个是正则的写法?不懂正则的自己百度找教程来学。

这里不详细说了*/$replace_arr = array(' union ',' select ',' update ',' outfile ',' or ');/**看这个意思很明了。

union :连接两条SQL语句。

outfile : 主要用来导出数据库资料到其他介质上。

干啥字要定义这两个变量呢?在global.func.php 文件(前面已经加载)里面有个函数strip_sql() 各位可以看下。

function strip_sql($string){global $search_arr,$replace_arr;return is_array($string) ? array_map('strip_sql', $string) : preg_replace($search_arr, $replace_arr, $string);}函数里面定义了这两个变量为global全局变量。

那么函数里就可以直接使用了。

先讲解下这个函数吧。

顾名思义这个函数是过滤字符窜里面的SQL语句使得关键的SQL语句单词失效。

主要过滤那些SQL语句呢。

主要是这几个关键字: union select update outfile or 等。

因为这几个SQL 字是极度容易在$_GET传输中给截注.这个函数写得实在精妙。

is_array 来判断$string 是否为数组。

如果是就array_map() 函数来递归过滤$string数组里面的每一个单元. 每个单元是一个字符窜吧?当递归调用strip_sql() 以后is_array()判断$string 肯定为假了,因为$string已经不是数组而是字符窜。

所以执行preg_replace()函数。

这个函数很好理解了。

就是替换了。

*/$_POST = strip_sql($_POST);$_GET = strip_sql($_GET);$_COOKIE = strip_sql($_COOKIE);/**使用strip_sql()函数来过滤$_POST $_GET $_COOKIE;一般不是开源的站。

很少过SQL关键字过滤。

不过这个也是冒很大风险的。

*/unset($search_arr, $replace_arr);/**unset 使用过但以后不需要的变量。

这个是很好的习惯。

第一不会浪费内存。

如果变量存了大量的数据字节,而后你的程序是一直不需要用的。

那么就会很浪费内存。

拉底程序性能 . 哈哈。

真很书面。

反正是好习惯我们都要学习的拉。

*/$magic_quotes_gpc = get_magic_quotes_gpc(); // get_magic_quotes_gpc()检测gpc是否系统自动转意。

gpc 是什么呢?GET POST COOKIE 来来去去就这几个东西罗。

会返回真或假if(!$magic_quotes_gpc){$_POST = new_addslashes($_POST);$_GET = new_addslashes($_GET);}/**判断一下系统是否打开了自动对gpc进行转意这个选择。

如果是的话,就不需要我们自动转意了。

如果不是那么还是要老百姓的手段。

自己动手丰衣足食。

来看下也是在global.func.php 文件里面定义的这个函数:其实是一个封装好的php的addslashes() 函数的函数。

PHP都自己有了为什么还要自己封装成函数呢?理由很简单。

为了以后的扩展更改容易罗。

如果我们一开始就全部用addslashes() 这个函数来对' 进行转意的话。

那么以后随着程序的发展。

我可能想多过滤个^ * ( )之类的那如何是好呢?所以为了以后孩子的成长。

我们还是最好封起来吧。

记住:以后有可能会边的东西。

最好都封装成模块。

函数。

类。

这样程序的灵活度就上去了。

function new_addslashes($string){if(!is_array($string)) return addslashes($string);foreach($string as $key => $val) $string[$key] = new_addslashes($val);return $string;}这个函数也是写得贼好。

也是同时考虑过滤字符窜或数组,也是使用了传归。

看下就应该明白了吧。

这个不用说了。

我们要学下这个思路这个方法方式哦。

这样才能进步。

哈哈。

我们要懂模仿。

*/@extract($_POST, EXTR_OVERWRITE);@extract($_GET, EXTR_OVERWRITE);/**嘿。

extract 前面加个@鸡蛋做什么呢??抑制错误的。

还不懂的话。

自己百度了。

为什么用extract()函数呢. 平时我们程序是不是要常使用 $_POST $_GET来获取传递的变量呀。

是不是感觉贼麻烦呀。

比如$_POST['xx'] 这样接受是挺好。

但写多了很麻烦是吧。

我是感觉麻烦。

我现在想直接就 $xx就可以获取传递过来的东西。

那怎么办呢。

就用了extract()函数来实现这么一个技巧。

这个技巧在discuz 论坛上也有应用。

*/unset($_POST, $_GET);/**unset() 好处不用说了吧。

释放$_POST $_GET 数组,因为已经不需要他们了。

*/?>明天放假了.今天在写点罗.放假没空写了.要陪老婆,大家看了有什么不明白的.可以跟帖问.我懂的我会回答.谢谢PHPCMS 整站代码分析讲解(二)[Copy to clipboard][ - ] CODE:/**代码讲解分析:逆雪寒. 2007 - 12 - 21*/require PHPCMS_ROOT.'/config.inc.php';/**加栽整站的配置参数文件。

一般的程序都会有这个文件。

做什么的呢?比如一些数据库连接地址。

用户名,密码等。

需要用到的参数都定义在这个文件里面。

这样以后配置变了。

我们只要改动下这个文件里面的变量值就好。

是不是很方便呢。

呵呵. 在这里说下require() 这个加载函数。

require 和include 都是用来加载其他PHP文件用的。

但他们是有区别的。

require 函数:是"预解释"函数。

就是程序一加载,就执行了require函数。

而include 呢。

是个过程加载函数。

我们可以在逻辑里比如:if 里面使用include 来动态的加载其他程序片段。

而require 就不行。

*/require PHPCMS_ROOT.'/languages/'.$CONFIG['language'].'/ng.php';/**顾名思义:这个就是加载语言包了。

PHP的国际化目前做得最多的。

就是直接用PHP文件来实现。

在ng.php 文件里面定义程序中要用到的中文信息。

然后在程序一开始就加载。

那里程序里面就可以使用这个文件里面的变量和一切。

相关文档
最新文档