Q:CakePHP官方文档在哪里
A:http://book.cakephp.org/cn/view/876/The-Manual
Q: 如何替换cake默认的layout(全局模板页)?
A: 把在/cake/libs/view/templates/layouts/default.ctp 复制到 /app/views/layouts/default.ctp ,然后按需修改
Q: 使用UTF8 库时出现乱码(页面和?菘舛际荱TF8,只是显示取出的数据时乱码)?
A: 在1.2x中:在/app/config/databases.php的配置中添加’encoding’ => ‘UTF8′,cake则会在执行SQL前先执行一次SET NAMES $encoding
Q: model/behavior,view/helper,controller/component 之间是什么关系?
A: model view controller是常说的MVC模式,model一般负责数据存储,view负责页面显示(一般是页面模板),controller负责控制调用哪个model以及哪个view来显示结果,其他则是他们各自的辅助部分。
Q: 如何建立一个公共的controller(如何使所有controller都有相同的属性或方法)?
A: 把/cake/app_controller.php 复制到 /app/app_controller.php ,按需修改即可。(为什么是放到/app目录下而不是/app/controllers中呢?)
Q: 如何建立一个公共的model(如何使所有model都有相同的属性或方法)?
A: 把/cake/app_model.php 复制到 /app/app_model.php,按需修改即可。(为什么是放到/app目录下而不是/app/moclels中呢?)
Q: 如何建立一个公共的helper(如何使所有helper都有相同的属性或方法)?
A: 同上,推理可得。
Q: 如何使controller不自动加载model(建立一个不需要model的controller)?
A: 在controller中添加一个空值属性:var $uses = ”;
Q: 如何建立不需要读取数据库的model?
A: 添加属性声明:var $useTable = false;
Q: 如何在controller中调用多个model?
A: 添加属性声明:var $uses = array(‘Model1′, ‘Model2′);
Q: 如何在controller中临时(手工)调用其他model?
A: How to properly create a Model instance manually
或 Creating Reusable Elements with requestAction
Q: 在controller中如何调用component?
A: 在controller中声明:var $components = array(‘Mycomponent’);,然后就可以在方法中通过 $ths->Mycomponent 来调用
Q: 如何在component中访问controller
A: 在1.1.x中可以这样:
class RequestComponent extends Object
{
var $controller;
function startup(&$controller)
{
$this->controller = &$controller;
}
}
Q: 如何使controller的方法不能直接通过URL访问?
A: 在方法名前加个_,如:function _test()
Q: 在controller的一个方法中,如何调用另一个方法的输出结果?
A: $this->render(‘另一个方法名’);,相关的还有$this->requestAction,详细见手册。
Q: 如何让view可以使用其他helper?
A: 在controller中声明:var $helpers = array(‘Form’,'Text’); (注:html是默认就有的,在1.2x中不需要再包含进去)
Q: 怎样在cake中使用smarty?
A:
Q: 如何获取由$form->input(‘var’)提交的数据?
A: 在controller中通过$this->params['url']['data'][$this->controller->modelClass]['var'] 取得
Q: 如何取得URL中如/store/buy/12 的参数值?
A: 在controller中通过$this->params['pass'][0] 取得
Q: 如何在cake中使用AJAX?
Q: 如何映射一个controller(不建立controller但可以使不同的URL指向同一个controller)?
Q: 如何在一个model中调用其他model?
Q: 如何使controller的action不调用它的view(没有view的action)?
Q: 如何动态关闭cakeSqlLog?
A: /app/config/core.php中,将Configure::write(‘debug’, 2);修改为Configure::write(‘debug’, 0);
Q: 如何在一个helper中调用另一个helper?
A: 设置var $helpers = array(‘Myhelper’); ,然后就可以在类中用$this->Myhelper来调用(注意属性大小写)
boblog在2.1.0版的一个重要更新是特别针对搜索引擎的优化,看到论坛上也有大量的朋友在问相关的问题,写一下相关的FAQ
Q:搜索引擎优化是什么?
A:搜索引擎是指针对百度和google所做的页面优化,旨在让搜索引擎更快的收录你的站点,让更多的人发现并找到你的站点,这对想拥有更多读者的blog来说更为重要。搜索引擎优化的简称为seo。
Q:boblog的搜索引擎优化是在2.1.0才开始的吗?
A:不是。boblog的搜索引擎优化很早就有了,但是在2.1.0中根据多位seo方面的专家建议进行了更多的修改,面对搜索引擎更加友好。
Q:2.1.0的seo主要体现在哪几个方面?
A:采用目录式的rewrite标准,如(http://www.example.com/post/126/);日志页面可独立设置网页别名,如(http://www.example.com/example-hostmonster-web-hosting/);日志页面采用tags作为该页面关键词;
Q:目录式的rewrite标准有什么好处吗?
A:对于搜索引擎来说,目录的权重大于页面,也就是说同样的一个页面,搜索引擎认为(http://www.example.com/post/126/)的权重要高于(http://www.example.com/post/126.html)
Q:网页别名有什么作用?
A:网页别名可以使日志内容体现在链接中,这对于seo来说是十分重要的。举例而言,即使你没有看过(http://www.example.com/example-hostmonster-web-hosting/)页面的内容,你也可以猜到这篇日志是与hostmonster的服务器空间有一定的联系。而搜索引擎在处理一个hostmonster的搜索请求时,如果链接中就存在这个词条,那么这个页面也将获得较高的权重。
Q:网页别名有什么需要注意的吗?
A: 避免使用“_”符号,尽可能使用“-”,也就是说少用下划线,多用连字符。举例来说,host-monster和host_monster对于搜索引擎来 说是完全不同的一个词组,前者搜索引擎认为是2个独立的host和monster词条,而后者搜索引擎则认为是一个host_monster的不可分离词 组。
Q:网页别名真的这么有用吗?一定要采用英文吗?
A:网页别名已经被很多seo专家所肯定,请尽量采用。网页别名不需要用全英文,你甚至可以使用拼音,事实上百度对于拼音同样能作为关键词处理,亦可获得额外的权重加分。比如(http://www.example.com/fuwuqi-wenti/),这样的链接也比纯数字的链接要好的多。
Q:日志页面采用tags作为该页面的关键词有什么作用?
A:对于搜索引擎来说,关键词依然是最为重要的seo手段。每个日志页面都采用不同的tags词条作为关键词,增加了每个单独页面被搜索到的可能,对于提升站点流量非常有用。
Q:tags的使用有什么需要注意的吗?
A: 尽你最大的可能将tags写的更细。比如你有一篇日志是写的《魔兽世界》这款游戏中的猎人心得,那么tags写为“猎人 心得 技巧 魔兽世界”远比写为“魔兽世界 网络游戏”要好的多,总而言之,尽可能的细化你的tags,并且让tags由小范围到大范围扩展,比如“魔兽世界 技巧 心得 猎人”就没有“猎人 心得 技巧 魔兽世界”好。
Q:如何打开2.1.0的rewrite规则?
A:请在后台找到“URL优化”这个菜单,按照其中的设置进行即可。
Q:为何我打开了rewrite规则提示500或者400错误?
A:你的服务器不支持rewrite规则,请联系你的空间商。
Q:如果我的空间不支持高级url优化该怎么办?
A:如果确实不支持高级URL优化,我们还是建议你采用PHP自身的URL优化,PHP自身的优化效果为(http://www.example.com/read.php/126.htm),这对seo来说同样重要。
Q:PHP自身的优化有什么用吗?
A:对于搜索引擎来说,只要链接中不存在一个“?”以及2个以上的“&”号,那么就会被认为是一个静态地址,因此(http://www.example.com/post/126.htm)和(http://www.example.com/read.php/126.htm)一样,对于搜索引擎来说没有任何差别。
Q:我的服务器是windows主机的,有办法不采用ISAPI实现rewrite吗?
A:有的,我们采用了404 rewrite的方法,请查看(http://bbs.bo-blog.com/viewthread.php?tid=12737&extra=page%3D4)。这种方法只适用于boblog的rewrite。
Q:404 rewrite是什么原理?
A:假设有一个地址为(http://www.example.com/fuwuqi-wenti/),当向服务器请求这个地址的时候,由于该地址实际并不存在,服务器会返回404错误页面,而我们将404错误页面定位到了iisrewrite.php这个文件上了,该文件获取到请求的地址,而后将其正确定位到地址上,即实现了IIS的rewrite功能。
Q:返回404?那这样搜索引擎不是收录不到了吗?
A:不会出现这样的问题,只要该地址存在,iisrewrite.php是会正确返回200的,经过近1个月的试用,对搜索引擎没有任何影响。如果是错误的地址,还是会正常返回404给搜索引擎,所以这样的担心是多余的。
Q:这样的方式会占用过多的资源吗?
A:不会,相对于ISAPI来说,404rewrite几乎不占用什么资源,请放心试用。同时由于这种方法是完全免费的,不同于ISAPI的收费,更适合个人用户。
Q:我对服务器没有设置权限,没办法定制404页面,有办法用404rewrite吗?
A:很遗憾,没办法使用。
Q:我原来在2.0.3版下使用了URL优化,现在再开启网页别名的话会影响到页面的收录吗?
A:对百度来说会有较大影响,但是从长远来说是有很大好处的。对google来说没有任何影响,因为我们将老的url地址301重定向到新地址了,google会把老页面的pr传值给新地址。
Q:我用的是apache的rewrite,可是.htaccess这个文件怎么上传?
A:请先在本机保存为htaccess.txt,上传至FTP以后再改名为.htaccess即可。
Q:2.1.0文件夹下面的robots.txt是干什么用的?
A:这个是搜索引擎的机器人文件,通知搜索引擎的spider哪些内容是可以收录的,哪些不能收录。对于一些个人隐私的页面,可以采用这样的方法限制搜索引擎访问。目前2.1.0下面的robots.txt文件十分宽松,几乎不限制收录。
Q:robots.txt该怎么写?规则是什么?
A:robots文件的规则请参考(http://www.robotstxt.org/wc/robots.html)
Q:怎么加快搜索引擎的收录?
A:除了等待没有更好的办法,seo是一个长期漫长的过程。不过你可以使用2.1.0的google ping插件,来加快google的收录速度。插件下载地址是(http://bbs.bo-blog.com/viewthread.php?tid=12991&extra=page%3D1)