在index.php中的网站信息在后台配置问题?

#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