V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
echoshiki
V2EX  ›  PHP

不晓得有没有巨巨开发过这样的系统,思路不晓得对不对

  •  
  •   echoshiki · 2016-07-14 23:22:55 +08:00 · 3402 次点击
    这是一个创建于 2847 天前的主题,其中的信息可能已经有所发展或是发生改变。

    多用户自助建站,就是你的用户可以注册,然后会员中心选择新建站点,然后自己选择模板,生成自己的站点用于展示一些产品信息啥的,单用户就是大部分的 CMS ,如果是那种集群多用户的呢

    因为没有实际开发过,不晓得是不是这个思路实现的,信息这块,就是通过前台用户 ID 来关联上信息,到时候再模板上加载就行,关键是模板这块,总后台一般会预先添加大量模板供前台用户选择,前台用户在点击生成的同时,在网站空间制定位置生成一个自己用户名或者站点二级域名这样的文件夹来保存已经选择的模板文件和样式表,将路径存进数据库里,到时候通过二级域名或者 url 啥的判断出用户 /站点,读取数据库获得路径,加载模板,以及其他信息

    19 条回复    2016-07-15 09:12:44 +08:00
    eoo
        1
    eoo  
       2016-07-14 23:26:04 +08:00 via Android
    柯林
    uephp
        2
    uephp  
       2016-07-14 23:28:34 +08:00
    正好是做这个,回答一下,这里边比较复杂,我先抛几个问题:

    1.每个网站自己的附件怎么处理
    2.公有模板库好说,但想做私有模版怎么办
    3.是要给每个站点建私有库还是统一使用总库
    changshu
        3
    changshu  
       2016-07-14 23:30:17 +08:00
    多用户建站程序, 十几年前火过, 现成的源码一堆, 都死了.
    shiji
        4
    shiji  
       2016-07-14 23:34:38 +08:00
    很早很早的时候( 06 年?),有类似的东西,用的是 phpwind 搭建一大堆子论坛(有子域名,后台 admin 权限)。

    找到了,叫论群。

    然后后来关张了。
    echoshiki
        5
    echoshiki  
    OP
       2016-07-14 23:43:48 +08:00
    @uephp
    1.附件是指产品新闻的那些附件么,这些附件应该都是跟随产品 id 新闻 id 的吧,然后产品和新闻就用用户 id 来获取
    2.共有模板库不动,用户点击 copy 出一套用于私有的模板文件夹,然后这样就算加入前端自定义修改布局样式啥的,只要存入私有的模板路径以后能获取到就行
    3.应该是用的总库,通过用户 id 来标记获取到信息
    echoshiki
        6
    echoshiki  
    OP
       2016-07-14 23:45:19 +08:00
    突然反应到,这其实就是像以前点点那样自定义页面样式的多用户博客系统吧…
    kozora
        7
    kozora  
       2016-07-14 23:48:26 +08:00
    @eoo 柯林。。好像回到了 wap 时代。。
    abelyao
        8
    abelyao  
       2016-07-14 23:54:16 +08:00
    @uephp 附件这也能算“问题”?那是程序设计有问题啊……
    uephp
        9
    uephp  
       2016-07-14 23:58:29 +08:00
    @echoshiki
    1.附件是以站点为目录存储的,每个站点在新建时即建立一个目录,存放上传文件
    2.选择公有模板会在库中记录模版 ID ,纯粹使用不会拷贝,这样减少冗余。如果要修改模版,有两套方案,拷贝到站点目录,然后建立新的模版 ID ,标明私有,其他用户不会看到,或者只是拷贝,还是原有模版 ID ,在页面加载时检测站点目录是否存在私有模版,我是用的后者,这便于统计模版使用量。
    3.确实可以用总库,在数据量不高的时候还行,一般方案都是这样。 我是用的另一种,总库记录一些通用信息,站点私有数据在站点目录建立独立库,我是用的 sqlite 。
    Asimov
        10
    Asimov  
       2016-07-14 23:59:53 +08:00
    以前 Discuz 旗下有个叫 5566 (是不是这个?) 的,就可以开子论坛啊。
    echoshiki
        11
    echoshiki  
    OP
       2016-07-15 00:03:45 +08:00
    @uephp 3Q ,我在捋一下思路
    uephp
        12
    uephp  
       2016-07-15 00:04:38 +08:00
    @abelyao
    怎么说呢,如果你考虑到代理体系,和备份这些,你就知道为什么这么做了,有时候用户是想把数据备份回本地的。 不同的团队不同的设计思路。 欢迎提出更好的设计思路。
    branchzero
        13
    branchzero  
       2016-07-15 00:09:34 +08:00
    @Asimov 5d6d ,倒了好几年了。。。
    这种想法说实话灵活性并不太高,万一客户不想在你这边待了,以前找你做的东西(模板、站点源码等等)单独弄出来带走都不行=。=
    echoshiki
        14
    echoshiki  
    OP
       2016-07-15 00:11:02 +08:00
    @branchzero 是的,现在也是在考虑这样的问题…
    branchzero
        15
    branchzero  
       2016-07-15 00:29:16 +08:00
    @echoshiki
    反正我也没时间,我就说下我想的东西吧,因为有更重要的东西写,这种没时间实现的想法留着也没什么卵用,敲砖引玉吧。
    每个用户选择完预置的模块、模板,定义完二级域名之后,把对应的模板和模块和核心站点框架文件,还有环境配置文件整合起来,打个包。
    在总控制台里面生成对应的站点信息,包括勾选的模块和模板之类的,万一以后动态要加也可以动态复制过去。
    nginx 配置目录下面生成一个站点配置然后自动 reload , mysql 自动建库建用户导预置 sql 内容,然后把包解到对应站点目录,就完工了。

    总控可以控制自定义绑定域名(绑定无非就是重新生成下 nginx 的 conf )、更换模板之类的,可以不开放 FTP 给用户。
    附件根据环境配置文件里面的信息自动中转到第三方存储(对象存储的平台多了去了,随便找一家靠谱的,支持通过接口开子账户和子空间并互相绑定的),附件的话只要知道对应空间内部键名就好,想自己提供存储就比这个还要简单些,不过要考虑以后存储动态扩容的问题,自己搞容易有坑。

    这样客户想走的时候,对应他的站点的源码还有数据库还有附件,可以很方便导出来了。
    lslqtz
        16
    lslqtz  
       2016-07-15 00:44:54 +08:00 via iPhone
    @branchzero 可以将泛域名全部正则匹配上去 这样就无需修改 conf 只需要修改目录文件夹名了
    chaegumi
        17
    chaegumi  
       2016-07-15 07:37:51 +08:00
    我现在正是进行这样的工作
    echoshiki
        18
    echoshiki  
    OP
       2016-07-15 08:25:47 +08:00 via iPhone
    @branchzero 好的,感谢,我研究下
    iiduce
        19
    iiduce  
       2016-07-15 09:12:44 +08:00
    dotnetnuke ,简称 dnn ,完全符合你的要求。

    需要提醒的是,它的自定义开发、扩展是个大坑。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2284 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 10:04 · PVG 18:04 · LAX 03:04 · JFK 06:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.