organic groups介绍教程

论坛: 

organic groups视频教程1--介绍

这是该系列中的第一个视频。

在这个系列中,我将带您通过群组的7.x- 2.x版。这个模块允许您创建组。一个群组是单纯的内容或人的集合。群组有三个基本组成部分:

 群组类型
    群组成员
    群组内容

群组类型表示该部分内容将处理为组。我会在《视频1-群组设置》里告诉你如何创建一个组内容类型。

通过用户订阅该组或被分配给该组,一个组可以有一个或多个相关的用户。我们将把这些用户作为组成员,我们将在《视频9--群组成员》讨论更多关于群组成员。

最后一个组件是群组内容。这指的是发布在组中的文章或其他内容类型。我们先来看看如何将内容添加到我们的群组《视频4-为群组“创建内容链接”而配置群内容类型》 。

我们还将讨论群组的角色,权限,如何使用面板来布局我们的群组等等...

organic groups视频教程2--群组模块安装

安装模块

    Organic Groups
    Entity API
    Entity reference (需要: Organic groups 模块和 Organic groups UI模块)
    Ctools
    Views
    Views Bulk Operations ( 需要Organic groups UI模块)
        注意: 请一定下载与Views模块兼容的 VBO模块。

启用模块

    Go to "Modules" (admin/modules) and enable:
        Chaos tools
        Entity reference
        Organic Groups (OG)
        Organic Groups UI
        Entity API
        View Bulk Operations (VBO)
        Views

    (Save Configuration)

创建群组类型

当我们安装并启用模块之后,我们就准备好了!首先,我们将创建一个用于组的内容类型。如下:

    Go to "Structure => Content types => Add content type" (admin/structure/types/add)
        Name: Group
        Description: A group can be private or public and have its own set of roles and permissions.
        Click "Comment Settings"
            Default comment setting for new content: Hidden
        Click "Organic groups" (在这里,我们可以指定或设置内容类型为组或组内容.)
            Select "Group" (这样就定义内容类型是群组. 我们来看看另一种方式来为群组定义内容类型,在视频7 - 高级私密群组)

    (Save content type)

配置群组内容类型

现在,我们有了我们的群组内容类型,我们可以配置文章内容类型是群组类型。
注意:有两种方法可以做到这一点,我会立即展示给你一个办法,另一个你会在"创建私人群组"视频中学习。

    Go to "Structure => Content types" (admin/structure/types)
    Edit the content type: "Article"
        Click "Organic Group"
            Check "Group Content"
            Target bundles: Group
    (Save content type)

添加内容: Group #1

现在让我们创建我们的第一个组。

    Go to "Content => Add Content => Group" (node/add/groups)
        Title: Group #1
        Body: (Lorem Ipsum)
        Click "Menu settings"
            Select provide a menu link
    (Save)

现在我们查看该组。请注意,它说:“你是组管理员”,如果这里是“request group membership”链接表示此用户不是该组的成员。

这个小组目前是公开组,公开内容,但会员须组管理员批准。
我会告诉你如何建立开放的群组,用户可以注册,而无需批准(Video 10 - Global OG Group Permissions)。
我还会告诉你如何设置组或组内容是私有或者公开(Video 7 - Advanced Private Groups)(Video 8 - Advanced Public Groups)。

现在,让我们为该组发表一篇文章
发表一篇文章到群组

    Go to "Content => Add Content => Article" (node/add/article)
        Title: Article #1
        Body: (Lorem Ipsum)
        Groups audience: Choose "Group #1" (你会看到,我有关于组的两个字段。第一个组我是一个成员。这个字段大多数用户将看到。因为我也是一个“组管理员”所以有设立组的选项,我不是一个成员。大多数用户不会看到这个第二个字段。)
    (Save)

现 在我们查看文章,它发布到“Group#1”。如果我们单击“Group#1”,我们取得了该组的页面。你会注意到,在这里我们没有看到任何提及的文章, 那是因为我们还没有配置我们组的显示。我们将在《Video 3 - Organic Groups Layout》讨论。

organic groups视频教程3--organic groups views

在这个视频中,我将向您展示如何来为群组(Organic Groups)配置视图窗格(view panes),并添加一个新的视图,列出网站上的所有群组。我也将向你介绍没有包含在OG 7.x-1.x版的新views(视图),即OG的所有用户组的内容, OG的内容和OG成员管理的视图(views)。
启用模块

我们需要做的第一件事是让一对模块。

    Go to "Modules" (admin/modules) and enable:
        Views Content Panes
        Views UI

    (Save Configuration)

OG 视图

    Go to "Structure => Views" (admin/structure/views)

OG 所有用户组内容

此视图显示当前用户所属的所有组的内容。这可能是一个作为一个网页来使用的很好的视图,或者稍加修改,可以放在用户的个人资料页面。
OG 内容

显示组中的所有内容。我们将以后布置我们组的页面时使用这个。
Organic groups 组员

该视图列出最近的当前群组成员。该视图配备了一个区块显示(block),以及一个内容窗格。如果您选择不使用面板(Panels)模块,您可以通过标准的“Blocks区块”页面放置群组区块。不过,我会使用面板组布置群组,所以我就使用内容窗格工作。正如你可以看到的,它在默认情况下列出最近5个用户。您可以更改为任何适合您的需求。

注意:我们将在《Video 3 - Organic Groups Layout》展示这个。
OG 组员管理

这是当你点击一组中的“人物”选项卡的默认视图。

注意:在《Video 16 - Organic Groups Settings》我们将看到在这里我们可以为人物”选项卡选择不同的视图“。
OG用户组
OG 用户组

这是登录用户是其成员的所有的群组列表。你可以在这里更改默认设置,但我觉得默认值很好,所以我会离开而不更改他们。
Organic group 名单列表

以前版本的Organic group自带所有群组的列表。如果你想创建所有的群组列表以便用户可以找到或浏览可用的群组,你就要设置一个视图。让我们继续,现在实现这一点。

    Go to "Structure => Views" (admin/structure/views)
    Click "Add new view"
        View name: OG List
        Show: Content of type Group
    [x] Create a page
        Path:og-list (可以查看组的列表的导航菜单)
        Display format: Table
        (Continue & edit)
        Under Page Settings, Click “No menu” to add a menu item
        Type: Choose "Normal menu entry"
        Title: All Groups
        Description: List of Groups
        Menu: Click drop down and choose "Main menu"
        Click "Apply"
    (Save)

现在,我们可以通过单击“view Page”查看页面。在这里,我们看到了组,和我们创建其他组,它们将被列在此表中。

organic groups视频教程4--organic groups 布局(用Panels)

organic groups视频教程5--配置group内容类型-“新建内容”链接

为了让一个内容类型来显示在“内容创建链接”区域,我们需要配置每个内容类型。现在让我们配置“文章”的内容类型。

    Go to “Structure => Content types => Article => Manage fields” (admin/structure/types/manage/article/fields)
    Click “edit” next to “Groups audience”

如果我们向下滚动一点点,我们将看到“Additional Behaviors其他行为”一节。在这里,我们需要启用“实体引用预填充(Entity reference prepopulate)”选项将此内容类型显示在我们的“内容创建链接”列表中。

    [x] Entity reference prepopulate
        Action: Do nothing (我们在这里有几个选项,你要确保选择最适合你的内容类型和网站的行为,我会在短短一分钟内演示每个选项.)
        [ ] Apply action on edit (设置是否在编辑内容时动作应仍然适用。我们在短短一分钟内将看看它是如何工作的。)
        Fallback behaviour: Do nothing (这是当通过URL提供任何值将会发生什么,例如,当用户进入到“内容= >创建内容= >正文” “Content => Create content => Article”时. 我会在一分钟内展示这些,“Do nothing“会离开现场,和往常一样编辑。)
        Skip access permission(跳过访问权限): - None - (设置为“Administer Content”可能是有用的,为了演示,我暂时设置为none。)
    (Save settings)

现在,让我们将回到我们的小组,看看我们的创建链接的存在。果然,他们在那里!

现在,点击“文章”发表新的文章到该组。

当我们向下滚动,你会看到“Groups Audience”节将“Group #1”自动选择。让我们改变“Action行为”,并在文章内容类型的“Fallback behaviour后援行为”设置来看看其他选项。
Other “Action” Options其它“动作”选项
隐藏字段

    Go to “Structure => Content types => Article => Manage fields => Groups audience” (admin/structure/types/manage/article/fields/og_group_ref)
        Action: Hide field
        Fallback behaviour: Do nothing
    (Save settings)

现在,返回组,然后单击“文章”创建链接,其组字段是隐藏的。但是,如果我去“内容= >添加内容= >文章” ((node/add/article))我可以选择“Group #1 ” 。这是因为“回退行为”设置为“不执行任何操作” ,留下了编辑。我们在短短一分钟来看看其他后备选项。
禁用字段

     转到“结构= >内容类型= >文章= >管理栏= >群组观众” (admin/structure/types/manage/article/fields/og_group_ref)
        动作:禁止字段
    (保存设置)

现在,返回组,然后单击“文章”建立链接,该组字段可见,但已被禁用。这样用户就会知道,它被发布到“Group #1 ” ,但不能更改该设置。我要继续新建一篇文章来证明“在编辑时应用动作”设置。
Apply action on edit

    Title: Article #2
    Body: (Lorem Ipsum)
    (Save)

现在,我们可以看到该组中的文章。如果我们编辑它,然后向下滚动,我们会发现, “组对象”字段现在可编辑的。或许在您的网站您可能想要这种工作方式,但如果你想让动作也影响编辑页面,你需要启用“编辑时应用动作Apply action on edit”选项。现在,让我们做到这一点。

    Go to “Structure => Content types => Article => Manage fields => Groups audience” (admin/structure/types/manage/article/fields/og_group_ref)
        [x] Apply action on edit
    (Save settings)

现在,如果我们刷新编辑页面,我们会看到该字段被禁用,当我们新建文章时也是如此。
Other “Fallback behaviour” Options其他的“回退行为”选项

organic groups视频教程6
创建私有群组

organic groups视频教程7

内容发布到公开组就是公开的
内容发布到私有组就是私有的
内容同时发布到公开组和私有组是私有有,仅群组成员可见(即使是在公开群组的页面)。

organic groups视频教程8
高级私有群组
允许内容被定义为“私有”或“公共”
创建一篇私有文章
创建一篇公开文章在私有群组。

organic groups视频教程9

创建一个公开群组
创建一篇公开文章在公开群组
创建一篇私有文章在公开群组
当你有一个群组里大部分的内容是公开的,但偶尔要发布的东西只为团体会员,这是比较有用的。

organic groups视频教程10

作为一个组管理员,您可以接受挂起的组成员的请求,移除用户,甚至禁止该组的用户。
请求成为群组会员
管理群组会员

(一)概述

Organic groups是一个类似views,ubercart之类的模块集合,可以实现用Drupal搭建复杂的群组功能,再辅以一些附加的周边小模块,即可实现群组下对用户的权限控制,以及相关内容的显隐的功能。

在搭建群组之前,首选大家要明确一个概念,就是何为群组?群组的最基本要素要那些?

    群组可以理解为一个特定用户群下特定内容的集合,是著名的六度空间理论的重要实现方式。
    用户可以选择加入,或者退出某个群组。
    每个群组也应该有一个独立的主页,以显示群组内的话题,资源等。
    群组是可以被特定用户创建的同样如果在权限许可的情况下群主可以Cancel掉自己的群组。
    群组和用户之间的关系是多重的,一个用户可以同时加入好几个群组,而且在每个群组里的角色可能不同。比如可以是一个用户可以是一个群组的管理员同时又可以是另一个群组的普通用户。

(二)创建数据类型

Drupal实现群组功能,首选要开启以下模块:

    Organic groups
    Views
    Entity API
    Groups create permissions

开启后出现rebuild permissions按钮,点击后完成升级drupal核心的权限设置。

用Organic groups 建立群组,是以数据类型(content type)为基础的。我们需要建立两种新的数据类型,一种数据类型用于展现群组的主页,另一种用于显示群组的内容。

打开后台中结构选项,建立新数据类型,类型名为group-page,并在页面下端的group标签里点选radio按钮“group type”和“not a group content type"。这样一个展示群组主页的数据类型就建立了。

接着,我们在后台选择配置(configuration)选项,在group标签下选择”Group field settings“,对群组主页的字段进行设置具体设置方法:

在”Group field settings“页面中

点选“bundles”下拉菜单中的“Group”,点选“fields”下拉菜单中的“group visbilty”,然后点击“add field”按钮。这样我们为刚刚建立的群组类型“group-page”增加了一个群组可见性的选择的字段,用来设置群组的公有和私有性。

下面我们为数据类型“group-page”创建一个实体,点添加内容,数据类型选择“group-page”,title项写为"test group" 。因为我们刚刚为“group-page”绑定了一个新的字段,所以我们这时能在body输入框下方看到多出了一个group visbilty项,在此项下我们根据自己具体需求选择"public“ 或是 private。即选择新建的群组是公有群组还是私有群组。那这两者有何区别呢?大家马上就可以看到效果。首选选择公有群组pubilc,并在最下方的标 签中设置此内容推送到首页,然后点击完成。返回首页就能我们能看到一个”test group”标签。点击此标签就进入了”test group”的内容页,这个页面其实就是群组”test group”的首页。和我们熟悉的facebook或是linkedin,qq等某个特定群组首页一样,它可以呈现”test group”里群组成员提交的话题,动态,成员列表,最新加入等等与此群组相关的内容,当然这是后话。现在只呈现了一个基础页面。如果我们创建是 选择私有private的话,也就是说,群组只对组成员可见。创建私有群组后,当我们以游客身份或非本组成员账户访问网站时,我们将看不到这个私有 的”test group”。

接着我们创建群组数据类型,为了简化流程,我们直接在已有数据类型下"Article"下创建。打开数据类型,选择“article”,选择编辑, 在编辑页面下端的“group”标签中选择“not a group type”和“ a group content type".现在aticle可以用于呈现群组的内容了。这时添加新内容,内容类型选择“article”,title项写为“test article”,在 ”group audience“选项里选择我们刚刚创建的群组"test group" 。选择保存,即创建了一个新node,标题为“test article”。刷新页面后我们发现了问题,我们的目标是要创建内容,尽在相关选定群组里显示,而在组外不显示,可我们现在创建的“test article”仅仅是一个公有的文章,群组"test group" 的主页上也显示不了。因此我们需要进一步的配置,使之符合我们的要求。趁热打铁,我们现在马上开始。

第一步:设置文章“test article”为组”test group”的私有内容

首先选择配置,在group标签下选择”Group field settings“。

在”Group field settings“页面中,点选“bundles”下拉菜单中的“article”,点选“fields”下拉菜单中的“group content visbilty”,然后返回编辑文章“test article”,在编辑内容页中“group content visbilty”里选择“private---accessable only to group members” 这样就是设置了此篇内容仅对test group的组内成员显示。保存后,我们以游客身份或非test group组内成员账户访问网站时,文章“test article”将不可见。

第二步:我们已经控制了文章“test article”特定群组的私有性。但是如何把它呈现在”test group”的主页上呢?我们现在开始重复再次选择配置,在group标签下选择”Group field settings“。

在”Group field settings“页面中,点选“bundles”下拉菜单中的“group”,点选“fields”下拉菜单中的“group views”,然后返回设置内容类型,选择编辑数据类型”group-page",这时能发现这此数据类型下多了个字段"group views“,点击管理字段,选择"group views“项的编辑,进入编辑页面后选择"default value"为”og_nodes(default)“,点击保存。然后在”manage display“中选择"group views“对应的格式为"group views“。点击保存。

然和再编辑刚才创建的群组”test group“页,"group views“的选项选择为”og_nodes(default)"。
经过稍显复杂的操作后,全部数据类型方面的设置全部完成。现在保存后,我们以游客身份或非test group组内成员账户和组成员账号访问网站时将看到效果,内容“test article”针对”test group“私有,并且呈现在”test group“的页面上。游客和组外部成员无法看到”test group“下的任何内容。

转载自龙马网站

dashan 答复于

本文内容基本出自Organic Groups模块的README.txt。
做此笔记(或者说翻译)的过程,也是我阅读熟悉此模块的过程。
Organic Groups模块信息及下载可参考:http://drupal.org/project/og 。

 Drupal核心只提供了简单的用户、角色、权限等功能,其中角色、权限都是全局的,没有用户组的概念,更不可能将内容发布到用户组的主页上。 Drupal被认为最擅长做社区,如果社区要按用户的爱好分成一些用户组,每个组有一个自己的小主页,成员可以发表内空到用户组的主页上,应该如何实现 呢?答案就是Organic Groups模块。
 Organic Groups模块介绍
 Organic Groups模块使用户可以创建并管理他们自己的“组”。每个组可以拥有成员,并维护一个可供成员发贴(注:“贴”应理解为广义的,不局限于论坛发的帖 子,对Drupal来说可以是blog, story, page等类型)的组主页。用户的帖子可以发布到多个组,而且可以选择是否与非组成员分享。组成员可以是开放式(open)、封闭式(closed)、编 辑审核式(moderated),也可以是只能邀请(invitation only)。Drupal的其它附加模块对组像册、组日历、组词汇表(分类系统),组事件(Drupal的一种常用内容类型叫story)等等都是有效 的。
 每个组可以选择他们自己的主题和语言。组拥有RSS Feeds和Email通知等。组管理员可以定制组主页及其它相关页面的布局与内容(需要即将到来的OG Panels module)。
 安装Organic Groups模块
 > 开启Organic groups和Organic groups Views intergration modules。如果你需要定制组内帖子的访问权限,Organic Groups access control模块也需要开启。请在启用其它OG相关模块之前确定OG已经能够正常工作。
 > 找到Administer > Organic groups configuration page,看上面的内容类型列表。点击类型旁边的edit,在随后出现的页面可以设定Organic groups usage,你可以在此指派节点类型为用户组节点。指派为用户组的节点类型应该禁用掉评论、附件功能。通常,你可能想通过admin/content /types页面创建一个新的类型用以指派为用户组节点。参考下文注意事项第一项
 > 在admin/og/og设定其它偏好。你可能需要一些试验才能得到一个满足需求的配置组合。
 > 找到Administrater > Site building > Blocks页面,开启“Group details”并拖到你的列表上方。你还可以选择是否开启其它一些“Group”的区块。
 > 在admin/user/permission页面,根据需要进行权限授权。
 > 开始创建组(node/add),加入这些组并发贴。对于非只限邀请的组,“加入”链接会出现在组描述区块。
 > 考虑开启下列与OG兼容很好的模块:Pathauto, Locale, Notifications。在你的安装能够完好工作之后,可以考虑开启更多的OG附加模块,像og_mandatory_group, og_vocab, 以及og_panels。已知这些模块工作得很好。有些集成得不好的Drupal模块可能会带来一些问题。请参考:http://drupal.org/project/Modules/category/90 。
 
注意事项
 > 此模块支持指派任何节点类型来扮演用户组的角色。这个节点类型应该由自定义模块来定义,或者通过admin/content/types页面创 建。定义好之后,此类型内容的标题即是组名,内容则是“欢迎信息”。由于所有此类型的节点都会被视为用户组,你通常不应指派标准的page, story, 或book类型为用户组。自定义类型可以指派为用户组的这一特性,使你能够为用户组设置自定义字段,甚至可以为不同类型的用户组设定不同的 CCK(Drupal的一个功能强大的模块,用于自定义节点类型)字段。
 > 路径“group”有一些便利的tabs。你可以为这些tabs添加一个导航链接。每个tab均提供了有用的RSS Feed。
 > “Administer nodes”权限是更改组管理员所必需的(更改帖子作者也是这样)。
 > “Administer nodes”权限也可以查看所有节点,无论状态是公开还是私有。
 > 所有成员管理操作都在“membership list”页面,当你访问一个组页面时,组描述区块会有相应链接。你可以验证成员请求,添加、移除用户以及设置组管理员。
 > 如果你想停用Organic groups,像其它模块一样禁用掉即可。如果你将来重新启用,你之前的组访问控制信息会被恢复。如果你想全新开始,请卸载og, og_views和og_access模块,然后重新安装。
 
开发人员与站点构建人员
 > 你可以定制自己的URLs来实现有用的特性。比如:user/register>gids[]=4 会在用户注册页面加添一个默认选中的复选框用来定阅nid=4的组。这一特性会覆盖掉组偏好设置。
 > 你可以使用hook_og_links_alter($links, $group_node)来改变组描述区块中的链接。参考og_block_details()。
 > 当前组上下文对javascript代码(Drupal.settings.og)有效。这对丰富广标签和分析组访问信息比较有用。
 > 可以用Views Bulk Operations模块来大批量更新用户的组员关系和内容从属。
 
主题
 你可能想定制含有OG模块属性的节点的样式。
 > 公开与私有帖子的区分请使用$node->og_public (og_access提供了私有帖子)。
 > 此模块包提供了两个模板文件,默认会同时用于组和组内帖子。这可当作你自定义的开始:把它们(之一或全部)复制到你的主题目录下,并按 需求编辑。你的主题目录必须同时覆盖实现node.tpl.php。你也可以使用og_panels模块来实现自定义组主页及其它相关页面,并允许组管理 员设计它们。
 
集成
 > 建议开启Notifications/Messaging模块的cron功能。有了cron功能,组邮件通知会在cron运行时发送,而不是有新内容时立即发送。这会大大加快较大用户组内的发帖速度。这个延时也给了作者修正打字错误的时机。
 > 此模块暴露一个API,用来通过PHP函数[og_save_subscription()]及通过XMLRPC接收和管理组员。

dashan 答复于