用户
 找回密码
 入住 CI 中国社区
搜索
查看: 97891|回复: 116
收起左侧

【新版修订】DiliCMS新手学习帖 2.0Final

    [复制链接]
发表于 2011-12-27 14:39:11 | 显示全部楼层 |阅读模式
本帖最后由 jeongee 于 2012-11-7 12:31 编辑

【本帖子内容安装教程是旧版的,新版的安装教程参看下载包里的README】
2012.09.11 下载DiliCMS最新版,发现有些东东有了变化,修订一下...
2012.03.07 其实看完这个帖子之后,做简单的小站是没问题的,祝大家学习顺利...
2012.02.22 学了一段时间后,在多语言上卡壳了,也没能解决。希望大家又做出的拿来分享一下吧。唉!发现岁数大了,就懒了...drupal学习中,懒啊...

首先感谢jeongee 给大家带来这么好的东东...感谢HEX老大加精!
刚开始学习CI,一边学一边写下过程吧,方便新手学习,也以免日后忘记。
希望jeongee 能及时帮忙指正错误,谢谢...谢谢老大的评分!

测试机环境:WindowsXP   XAMPP 1.7.7
服务器目录:D:\xampp\htdocs
Apache端口:80
DiliCMS版本:DiliCMS 2.0Final

快捷通道:
一楼. 下载与安装
二楼. CI设置
三楼. 模型管理学习 创建内容模型、分类模型,并在views页面显示出来
四楼.插件学习
五楼.做好了静态页模板,怎么放进DiliCMS做views?


一.下载与安装
1.下载:到Github下载最新版2.0Final https://github.com/DiliCMS/DiliCMS


2.安装:解压到dilicms文件夹,路径:D:\xampp\htdocs\dilicms,地址栏输入http://127.0.0.1/dilicms/
(1).新建数据库dilicms,并导入db.sql
(2).配置application/config/database.php
PHP复制代码
 
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '数据库密码';
$db['default']['database'] = 'dilicms';
 
复制代码

(3).运行http://127.0.0.1/dilicms/index.php/initialize ,初始化系统。完成后可以登录。http://127.0.0.1/dilicms/index.php/admin
初始用户名:admin   密码:dilicms

3.文件夹说明:
2.0Final版本改动比较大,jeongee把后台管理所使用的东东都整理到了admin目录下,更方便管理。
-admin    后台界面主题(DiliCMS)
  +templates 后台主题存放目录  
    +default   后台界面默认主题
-application  这个就是咱们自己网站要放的地方,捡用的说...
  +config    配置文件都在这里,config.php,database.php,autoload.php刚学就用到了这几个...
  +controllers    传说中的控制器  
  +core    自己定义的核心文件
  +libraries  自己的类库,这里面已经有了DiliCMS的类库
  +models  传说中的模型
  +views     传说中的视图,DiliCMS在controller设置用不用这个目录
+extensions
   +fields   
   +plugins      这个以后存放插件,也是DiliCMS 加的
+shared        这是DiliCMS 加的
+settings    这是DiliCMS的设置文件
+system    CI默认
+templates      这是DiliCMS 加的,放前台页面模板,跟application\views作用相同,有兄弟问“模板扩展时,怎么用templates 或者view路径”的问题,老大的解释是“class test extends CI_Controller还是原来的views路径,extends Front_Controller路径默认被改为templates/default。”问题帖:http://codeigniter.org.cn/forums/thread-11344-1-1.html

评分

参与人数 5威望 +29 收起 理由
keysarjan + 3 很给力!
Hex + 5 赞一个!
百城易购 + 5 赞一个!
低调man + 1 很给力!
jeongee + 15 原创贴,支持,欢迎多多分享。.

查看全部评分

发表于 2015-1-13 16:43:54 | 显示全部楼层
xiehao 发表于 2011-12-27 14:42
三.模型管理学习帖
刚接触这个“模型管理”,还真有点乱,因为“内容模型”、“分类模型”的管理界面相同, ...

还需要在文件controllers/welcome.php中的index()加上一行
$this->load->database();
以便载入并初始化数据库

发表于 2018-5-9 14:50:34 | 显示全部楼层
请问一下大家,为什么我安装dilicms的时候会出现卡在第一步“关于dilicms”的界面?
 楼主| 发表于 2011-12-27 14:41:29 | 显示全部楼层
本帖最后由 xiehao 于 2012-9-11 09:19 编辑

二.CI设置

1.URI中去掉index.php
(1).在D:\xampp\htdocs\dilicms,下创建.htaccess文件,内容如下

  1. RewriteEngine on
  2. RewriteBase /dilicms
  3. RewriteCond $1 !^(index\.php|images|robots\.txt|admin|templates|extra|plugins|attachments)
  4. RewriteRule ^(.*)$ index.php/$1 [L]
复制代码

(2).配置application/config/config.php,将其中的index.php删掉
PHP复制代码
$config['index_page'] = 'index.php';
复制代码

这时候,试试看这个地址是不是能访问了。http://127.0.0.1/dilicms/admin

2.自动加载常用类库
配置application/config/autoload.php ,自动加载常用的类库,以免在控制器中每次加载。
PHP复制代码
 
$autoload['libraries'] = array('database');
$autoload['helper'] = array('url','form','html');
 
复制代码

3.修改默认首页
配置application/config/routes.php ,这里给个值,CI的默认值是welcome,DiliCMS这里空着了。我们给写上welcome
PHP复制代码
 
$route['default_controller'] = "welcome";
 
复制代码

小试一下:
以上改好后,在application/controllers下建一个welcome.php,内容如下
PHP复制代码
 
<?php
    class Welcome extends CI_Controller
    {
        function index()
        {
                        $data['site'] = $this->db->get('dili_site_settings')->row();
                        $this->load->view('welcome_message',$data);
        }  
    }
 
 
 
复制代码


修改application/views/welcome_message.php,修改为如下内容。
PHP复制代码
 
<!DOCTYPE html>
<html lang="zh-cn">
<head>
        <meta charset="utf-8">
        <title><?=$site->site_name?></title>
</head>
<body>
<div id="container">
        <h1><?=$site->site_name?></h1>  
</div>
</body>
</html>
 
 
复制代码


浏览器地址栏输入网址http://127.0.0.1/dilicms/   看一下吧
接触CI的大家应该知道这个网址的完整样子应该是http://127.0.0.1/dilicms/welcome/index,welcome是控制器,index是控制器里面定义的那个function,看看对不对。可以把welcome.php里面的function index改成blog或者其它名字试试,网址输入http://127.0.0.1/dilicms/welcome/blog,是不是一样能看到这个页面?


 楼主| 发表于 2011-12-27 14:42:09 | 显示全部楼层
本帖最后由 xiehao 于 2011-12-28 13:53 编辑

三.模型管理学习帖
刚接触这个“模型管理”,还真有点乱,因为“内容模型”、“分类模型”的管理界面相同,还以为他俩的功能一样呢,后来瞎鼓捣一番,才算明白了。当时的问题帖http://codeigniter.org.cn/forums/thread-11353-1-1.html

创建分类模型,其实就是建了个dili_u_c_xxxxx的表
创建内容模型,其实就是建了个dili_u_m_xxxxx的表

举例:网站需要3个导航菜单,一是主导航栏,二是页面底部导航,三是侧栏导航。当然不会去创建3个表,只要创建一个表来存放内容,一个表来存放类别就可以了。(其实存放类别的这个表看自己喜好,要不要都行吧?)

【分类模块】:导航菜单nav,已有默认字段classid,那只需加个说明性的字段,如nav_name
【内容模块】:导航菜单nav,加个nav_title字段命名,加个nav_url字段链接,还要加个classid对菜单进行分类,而这个classid就可以获取分类模块里的信息。填写:nav|nav_category  (分类模块名|字段名)

具体操作一下,看看。接着上面的例子,我们需要两个表,使用DiliCMS不用跑到phpmyadmin去建表,Dili就做了。我们先创建一个分类模型。

1.在“分类模型管理”-“添加新分类模型”中添加nav模型


2.在分类模型管理,点击nav行的“字段管理”-“添加新字段”


3.这里我们只需要添加一个字段就可以了,命名为nav_category吧,设置为单行文本框,50字节就可以啦。


4.上述动作完成后,点击“内容管理”-“菜单分类”-“添加”


5.添加“主导航”,“底部导航”,“侧栏导航”三个分类

6.看一下数据库里面发生了什么情况,多了一个表,dili_u_c_nav,结构如下:


7.接下来我们创建内容模型,在“内容模型管理”-“添加新内容模型”中添加nav模型。
我当时有疑问,这个模型标识跟分类模型的名称一样行不行?答案是行的,因为它们生成的表名不一样。
分类模型的表名:dili_u_c_nav
内容模型的表名:dili_u_m_nav
可以自己用phpmyadmin去看一下。


8.点击模型列表nav行的“字段管理”-“添加新字段”


9.这里要添加的字段有:分类ID-classid,链接名称-nav_title,链接地址nav_url。
我们的菜单类别这里要放个下拉菜单,用来选择链接属于“主导航”,“底部导航”,“侧栏导航”
这里的字段类型选择“下拉菜单(模型数据)”,它的值应该是“分类模型名|字段名”,如图。



10.三个字段都添加完成后,我们到内容管理去添加菜单项


11.这时候,菜单类别的下拉列表,就会...哦,如果你发现没有出现这种情况的话,请先清理一下缓存,嘿嘿




12.我们去看一下数据表dili_u_m_nav的结构,前三个字段是默认生成的,后三个字段是我们添加的。



这样一步步做下来,算是明白了。
暂时不会写model,就在views里面页面的对应位置加入一个导航栏吧,可以在welcome_message.php试试。代码如下:
PHP复制代码
 
<div class="mainNav">
    <ul>
    <?php
          //导航菜单表dili_u_m_nav  主导航classid=1  底部导航classid=2
          $menu_query = $this->db->query('SELECT * FROM dili_u_m_nav WHERE classid=1')->result();
          foreach ($menu_query as $row){
                echo "<li>".anchor($row->nav_url,$row->nav_title)."</li>";
          }
        ?>
    </ul>
    </div>
 
 
复制代码


照着这个例子,我自己再做一个“新闻模型”,用于网站发布新闻,这里就不分类了,根据实际需要而定。

还要做“博客模型”等等...


而且我看到dilicms的权限管理那里,也是按模型分配权限的。
 楼主| 发表于 2011-12-27 17:14:04 | 显示全部楼层
本帖最后由 xiehao 于 2011-12-27 17:14 编辑

四.插件学习帖
这里先放个插件,使用方法见jeongee的原帖
【插件】随变编辑器---DiliCMS第一个官方插件发布啦
http://codeigniter.org.cn/forums/thread-10172-1-1.html
 楼主| 发表于 2011-12-27 17:16:30 | 显示全部楼层
本帖最后由 xiehao 于 2012-3-21 16:55 编辑

要做个多语言站,应该处理哪些问题?已经发帖请教了,请高手做个详细教程吧...问题贴http://codeigniter.org.cn/forums/thread-11371-1-1.html找了一个比较不错的教程,试了一下,可以用,待整理后会发布上来。
http://heshiwenxiang.blogbus.com/logs/128636817.html

【基础】做好了静态页模板,怎么放进DiliCMS里面做前台页面?

首先,明白controller、views是怎么工作的,这里先把数据处理层的models省略掉吧,学习进度有点慢,鼻子塞了,有点感冒。

做好的静态页包括html、css、js、图片等文件,我们应该把它们放在哪里呢?
我们把html文件转成php文件,html中公用的部分,如底部的版权可以单独做成footer.php文件,统一放在application\views下,
在站点根目录下建立名为assets的文件夹存放其他文件(你可以随意命名这个文件夹,assets的意思是“资产、有用的东西”,用这个名字比较好记嘛,意思是有用的东西都在这里啦,哈哈,想用abc也可以),把css放在assets\css下,把js放在assets\js下,把图片放进assets\images下。这样的目的是方便文件管理。
-application
    +views       存放.php文件
-assets           有用的东西都在这里
    +css           存放css文件
    +images     存放图片
    +js             存放js文件

如果你的文件夹结构跟我的一样,嘿嘿,那views里面那些.php文件包含的图片、css、js路径都要修改喽。示例如下,index.php调用css的代码:
PHP复制代码
 
<link rel="stylesheet" href="<?=base_url();?>assets/css/style.css" type="text/css" />
<?=link_tag('assets/css/style_index.css');?>
 
复制代码

这两行代码其实输出是一样的,详见参考手册:
URL helper http://codeigniter.org.cn/user_guide/helpers/url_helper.html
HTML helper http://codeigniter.org.cn/user_guide/helpers/html_helper.html

把application\controller\welcome.php中的index修改为 $this->load->view('index');
然后浏览器打开http://127.0.0.1/dili/ 看一下,是否显示正常呢?

如果还是不正常,看看.htaccess里面的RewriteCond是不是没有添加|assets|呢,解决。


这样,静态页就放到了views里面,当做views使用,我们再用dilicms创建个内容类型,写几句读取数据库的代码,那这些views不就可以成为动态站点前台页面了吗,呵呵呵...接下来继续...



点评

注:对我新手是用了,不知道别人会不会忘记,加载CSS出错的原因还有一个就是要用到$this->load->helper('url');  发表于 2012-8-7 15:52

评分

参与人数 1威望 +5 收起 理由
pursuitvy + 5 赞一个!

查看全部评分

发表于 2011-12-27 17:54:43 | 显示全部楼层
好支持 坚决的支持 那啥 兄弟辛苦了
 楼主| 发表于 2011-12-27 17:59:07 | 显示全部楼层

中英双语站的实现 2012.03.23

本帖最后由 xiehao 于 2012-3-23 13:57 编辑

鼓捣了很久双语站了,其实后来向ionize妥协了,但还是把dilicms实现多语言站的教程写一下吧。参考教程:http://heshiwenxiang.blogbus.com/logs/128636817.html

下面的步骤,紧接着我们之前的学习帖进行...实现方式,给内容表添加相应的字段,方式参考3楼,嘻嘻,不重复了。
比如给news添加title_english字段,之前的title字段则修改为title_zh-cn。就这样,所有需要中英文显示的内容,都由两个字段来分别显示。


六. 中英双语站的实现
中文zh-cn  英文english
想用简写的朋友,不好意思,我没实现...

1. 看一下hook功能是不是已经开启了。application\config\config.php,大约第94行,配置为TRUE
PHP复制代码
$config['enable_hooks'] = TRUE;
复制代码


2.定义挂钩点。
打开application\config\hooks.php,在后面添加下面这段代码,定义pre_controller
PHP复制代码
$hook['pre_controller'] = array(
                                'class'    => 'LangClass',
                                'function' => 'set_lang',
                                'filename' => 'Langclass.php',
                                'filepath' => 'hooks'
                                );
复制代码


3.定义钩子。
在application\hooks目录下新建文件LangClass.php,内容如下:
PHP复制代码
 
<?php  
class LangClass extends CI_Controller {  
    function set_lang(){  
        //从Uri中分解出当前的语言,如'zh-cn' 或 'english'  
        $my_lang = $this->uri->segment(1);  
        //默认语言为英语english  
        if  ($my_lang =='zh-cn' || $my_lang =='english' )  
        {  
            //动态设置当前语言  
            $this ->config->set_item('language' , $my_lang );  
            //为方便,配置做后缀的当前语言,如_english
            $this ->config->set_item('post_lang' , '_' .$my_lang );  
        }
                else{
                        $this ->config->set_item('language' , 'zh-cn' );  
            $this ->config->set_item('post_lang' , '_zh-cn');
                }
        $this ->load->helper('language' );  
    }  
}  
 
 
复制代码


4.配置路由规则,application\config\routes.php,修改如下,其实只添加了后面两行:
PHP复制代码
 
$route['default_controller'] = "welcome";
$route['admin'] = "admin/login";
$route['404_override'] = '';
$route ['(zh-cn|english)(:any)' ] = "$2" ;  
$route ['zh-cn|english' ] = "welcome" ;  
 
 
复制代码


5. ...

发表于 2011-12-27 23:25:09 | 显示全部楼层
很好,我昨晚还在研究,没有想到你就发帖出来,真是及时雨啊~!有最新资料发出来大家共同研究研究。谢谢了~
 楼主| 发表于 2011-12-28 08:03:51 | 显示全部楼层
xiesq008 发表于 2011-12-27 23:25
很好,我昨晚还在研究,没有想到你就发帖出来,真是及时雨啊~!有最新资料发出来大家共同研究研究。谢谢了~ ...

大家共同学习,进步更快,呵呵。我也一直在看帖学习,CI社区的老大们都很热心的在帮助我们
发表于 2011-12-28 10:45:20 | 显示全部楼层
你有新进展就贴出来 大家学习学习

本版积分规则