在index.php中的网站信息在后台配置问题?
发布于:2022-01-17 09:50:54
#1 小双
在index.php中配置如下:
$spConfig = array(
// 网站配置
'shopzc_defined' => array(
'sitename' => '武汉汽车厂', // 网站名称
'siteintro' => 'sdfsdfsdf', // 网站介绍
'template' => 'default', // 默认模板
'copyright' => 'shopzc', // 版权信息
),
}
可是我想让这些静态值换成读取数据库的,比如
网站名称 '武汉汽车厂' 可以换成 $sitename 吗?$sitename为数据库读取的值,这个要怎么做?
2010-03-19 12:29:00
#2 jake
楼主的想法我大致清楚了。不过如果是把这些相当于“全局配置”的值换成用数据库来存,那么就不用或不需要在index.php的程序配置内进行定义了。
建议的做法是在控制器父类的构造函数内进行这些网站配置的读取,然后赋值给这个控制器父类的某个变量(或者是给$GLOBAL数组),这样也是可以做到楼主的想法的。
2010-03-19 13:29:40
#3 yuanjianhua
问题解决了吗?我也想知道是怎么做的
2010-03-20 11:41:19
#4 jake
嗯,我再结合微博的例子来说说。
在model内的lib_domain里面,可以看到有个叫enter的方法,这个方法在配置中被定义成是在路由之前执行的
'router_prefilter' => array(array('lib_domain','enter')),
看看这个方法,里面是通过分析网址,得出二级域名的字符串(也就是用户名),然后通过lib_user来查询用户名是否存在,存在就证明这次访问是二级域名的访问,所以会改变控制器和动作的值,来达到转向路由的目的。
结合本贴的想法,我们可以在enter方法(也就是路由前的挂靠方法)里面,进行以下操作:
1. 读取数据表中的站点配置信息
2. 将这些配置信息赋值给全局变量$GLOBALS,比如说$GLOBALS['mysite'] = spClass('setting')->findAll();
3. 在应用程序中就可以直接用$GLOBALS['mysite']['sitename']来用了
2010-03-20 15:32:00
#5 yuanjianhua
谢谢,明白怎么做了
2010-03-20 23:14:41
#6 yuanjianhua
回复 4 jake 不过,这里面有个问题,
$GLOBALS['mysite'] = spClass('setting')->findAll();
spClass('setting')->findAll();这里查询出来的是一个数组,
在$GLOBALS['mysite']['sitename']这里调用会没有数据,所以调用的时候$GLOBALS['mysite'][0]['sitename'],(只有当数组有值的时候,这样才能进行这样的调用),
2010-03-23 10:31:19
#7 jake
回复 jake
不过,这里面有个问题,
$GLOBALS['mysite'] = spClass('setting')->findAll();
spClass('s ...
yuanjianhua 发表于 2010-3-23 10:31
嗯,很细心的朋友,你说的对,是要加个0的
这类型的站点配置,如果要保存到数据库的话,表结构方面我建议是类似WordPress的option表一样
那表的结构类似:
name | value'sitename' | '武汉汽车厂'
'siteintro' | 'sdfsdfsdf'
'template' | 'default'
'copyright' | 'shopzc'
2010-03-23 11:18:26