十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
该变量是当前栏目id,可以用 $navclassid 或 $GLOBALS[navclassid] 都可以。
10年积累的成都网站设计、做网站、成都外贸网站建设公司经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站制作后付款的网站建设流程,更有涪城免费网站建设让你可以放心的选择与我们合作。
$GLOBALS 是 php 中的超全局变量,你在页面中 var_dump 输出看看就知道了。
$class_r[$nid]就很明显了,$class_r存着所有栏目的数据,通过栏目id(也就是问题中的$nid)拿到当前栏目的所有的值。
几种方式:
1、直接在帝国定义的userfun.php中扩充你自己定义的函数,然后在相应的程序页面中直接引用函数即可;
2、在列表模版可以勾选“使用程序代码”,然后写入PHP代码;
3、在相应的页面模版中直接嵌入PHP代码;
4、单独写PHP程序,放在某个目录下作为扩展,然后在帝国相应程序页面中引用。
帝国CMS 6.6版新增自定义扩展变量功能,用户可以自定义公共的程序使用变量,为用户扩展系统带来便利。比如可以增加像系统$public_r[newsurl]这样的变量,还比如扩展了某个系统模型,需要增加设置项都可以用扩展变量来实现...等等。
自定义扩展变量功能介绍:
(1)、扩展变量支持按分类归类及显示。删除相应分类会删除分类下的变量。
(2)、变量支持是否写入缓存,如果写入缓存,在任意php或模板中用$public_addr['add_变量名']可取得变量内容。
(3)、内置变量返回函数(数据库读取变量内容):ReturnPublicAddVar(变量名)。取多个变量内容可用逗号隔开,例子:
取得单变量内容:$value=ReturnPublicAddVar('myvar'); //$value就是变量内容。
取得多个变量内容:$value=ReturnPublicAddVar('myvar1,myvar2,myvar3'); //$value['myvar1']才是变量内容。
自定义扩展变量功能的强大在于为二次开发和插件开发提供了便利,再6.5及其以前想要设置类似于$public_r[newsurl](网站地址)这样的的全局变量,我们就必须要更改系统源文件和修改数据表,从而造成升级不不方便。
备注:
1.后台-系统设置-系统参数设置 所有设置记录在数据表phome_enewspublic
2.$public_r缓存数组记录的是数据表phome_enewspublic大部分设置(6.5及其以前) 6.6应该有个分表记录用户设置(猜测)
3.$public_r缓存记录在e/class/config.php中
4.e/class/connect.php包含了e/class/config.php (包含就是require() 或者 include())
5.所有的控制器均包含/引用了e/class/connect.php (控制器就像e/enews/index.php e/DoInfo/ecms.php 这样的文件,根据对应的表单使用对应的函数和引用对应的文件)
6.非控制器比如e/class/functions.php 或者是是e/data/下的木板缓存文件 默认包含他们的文件都包含了e/class/connect.php存在了,所以$public_r成了全局变量();使用如上图
7.除了$public_r还有e/class/config.php文件里你能看到的 e/class/connect.php function db_connect()上方的 比如$navinfor,是不是很熟系在内容也里$navinfor[title] $navinfor['字段']
自定义扩展变量可以不用到应用扩展上,来简单点的
1.来个SEOtitle
2.来个备案号(我朝特色,备案号命名统一的话分享模板都不用改备案号了)
3.来个统计代码(大众公共效应之后也不用该模板板了)
n.....
当然这些模板公共变量也可以做到
首先global $public_r;首先定义一个全局变量$public_r,这个变量是一个数组,里面存了一些系统设置,如网站域名等,在这里$public_r['canposturl']是系统设置里面的“前台允许提交的来源地址”,每一列是一个地址,比如
让我们一行一行分析:
if($public_r['canposturl']){ //如果设置了前台允许提交的来源地址
$r=explode("\r\n",$public_r['canposturl']); //按照换行\r\n切分为一个数组$r,结果应该是
$r = array('', '');
$count=count($r);//使用数组的count方法统计有多少条地址
$b = 0; //这个变量是当作一个标志,用来判断
for($i=0;$i$count;$i++) //
$_SERVER['HTTP_REFERER'] //这个得到的是页面的来源地址,比如我从点击一个链接到,那么使用$_SERVER['HTTP_REFERER'] 得到的就是
for($i=0;$i$count;$i++)
if(strstr($_SERVER['HTTP_REFERER'],$r[$i]))
这个将页面的来源地址循环和“前台允许提交的来源地址”数组$r里面的每一条对比,如果存在就跳出循环并设置$b=1,如果不存在就继续循环,循环结束看$b的值,只有在存在的情况下才会得到$b=1,否则$b=0,当$b=0的时候,使用错误跳转函数printerror,'NotCanPostUrl'是一个错误常量,在e\data\language\gb\pub\q_message.php中,表示'请从网站提交数据'。
这个函数就是用来判断前台提交的表单是不是从指定的网站发来的,防止有人修改表单恶意注册等等之类的。