新手问题 想问下做个 cms 网站管理系统,那个栏目管理部分怎么做

nicetyler · 2017年07月24日 · 最后由 bastengao 回复于 2017年08月02日 · 1892 次阅读

想问下这个栏目管理模块的树形结构应该怎么做,还有哪里有比较好的 cms 源码

共收到 15 条回复

管理模块的导航(就是你指的树形结构),通常是固定(静态)的(毕竟你写程序能提供的功能是确定的),那么,任何一个前端框架,Bootstrap、Foundation 之类都会提供支持,那么,随便去翻翻这些前端框架的文档,抄过来,问题就解决了

jasl 回复

rails 里面有没有什么直接能用的插件可以做树形结构,就是做那种栏目可以打开的什么一二级栏目

nicetyler 回复

这和前端关系比较大

nicetyler 回复

应该有,自己搜就是了,但是越偏向具体业务的 Gem,使用起来就越不靠谱

pathbox 回复

是啊,树结构我是用的 gem closure_tree,但是不知道前端表格怎么弄

jasl 回复

我树结构写了一个星期还没搞出来,头都要写爆了😭 😭 我在 view/menus 下写了个 index.json.jbuilder 文件,内容如下,我知道这里面返回的是 json 格式,怎么渲染和调用这个文件啊

json.array!(@menus) do |m|
  json.id m.id
  json.pId m.parent_id
  json.name m.name
end
nicetyler 回复

这种其实根本原因是你编程思维还没有建立起来,渲染一个多层级的树,显然需要通过一个递归算法来解决。

不考虑前后端分离的方案,纯渲染视图的伪码形如:

menu.html.erb

<%= render partial: 'item', locals: {item: @menu} %>

_item.html.erb

<section>
  <p><%= item.name %></p>
  <% if item.has_children? %>
    <ul>
    <%= render partial: "item", collection: item.children, as: item %>
    </ul>
  <% end %>
</section>

@nicetyler 可以看看这个 https://ruby-china.org/topics/33241 其实可以把目录和页面看成是父子关系,目录下有子目录,目录下有页面,但最终是一个树。在 blacksand 里目录页是个页面,页面有子页面,那个这个页面就是目录了。

jasl 回复

很感谢,我照你这个基本上写出来了

bastengao 回复

yml 应该可以内嵌 erb 的,如果链接可以插入 Rails 的 Routes Helper 就最好了

bastengao 回复

我看了下,就是这个东西,我参考下然后写成自己的,非常感谢

ancestry 这是一个树的 gem,几年前用过,不知道现在还在更么。

dandananddada 回复

楼主是不会渲染层次结构,ancestry 还在更的,还是很好用的

bastengao 回复

我照着这个装不了,是不是要在 linux 系统下面装

# source 'http://gems.ruby-china.org'
source "https://rails-assets.org"

git_source(:github) do |repo_name|
  repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
  "https://github.com/#{repo_name}.git"
end

gem 'blacksand', github: 'microwisesystem/blacksand', branch: 'v2.5.0'

一开始是 ssl 验证,然后我把 s 去掉了,之后就报这个错误

J:\pratice\black>bundle install
Fetching https://github.com/microwisesystem/blacksand.git
Fetching source index from http://rails-assets.org/

Retrying fetcher due to error (2/4): Bundler::HTTPError Could not fetch specs from http://rails-ass
ets.org/
Retrying fetcher due to error (3/4): Bundler::HTTPError Could not fetch specs from http://rails-ass
ets.org/

nicetyler 回复

https://rails-assets.org 这个可能需要翻墙。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册