首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Joomla!3.0中创建特定于用户的内容?

如何在Joomla!3.0中创建特定于用户的内容?
EN

Stack Overflow用户
提问于 2014-04-15 18:45:51
回答 3查看 7K关注 0票数 4

我需要创建一个特定于用户的内容页面,我已经注册了用户,我需要创建一个模块/页面/菜单/提要或者任何只显示一个或一些用户的文章。

例如,在我的网站上,我向公众展示了一些项目(文章被修改为一些架构化项目),例如:新闻、完成的项目等,有些人注册并访问其他为注册用户准备的内容,例如:只有注册客户才感兴趣的新项目,到目前为止,我成功地完成了这项工作,但现在,我有一些工作是针对特定用户的,他/她只能在他/她的提要中看到,例如:我们制作的他们的项目的状态,一些带有正在进行中的工作照片的画廊,等等。

因此,这个提要必须是一个模块/页面/菜单,它显示带有特定类别的文章,并为注册用户提供。但我希望能够发布一篇文章,该文章只针对特定用户或一组用户,并显示在这个feed (模块)中,或者至少有一个新模块显示特定于用户的内容,而不必为每个用户创建一个类别和访问级别。

有没有一个分机或插件可以帮我做这件事?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-04-15 19:22:59

你需要做两件事:

  • 将一个新的用户组(用户->用户组)作为注册的子组。将需要特殊权限的用户添加到此组。
  • 创建一个新的访问级别(用户->访问级别),并将您的新用户组添加到此访问级别。
  • 在要限制访问的项目上设置访问级别。

模块应该在向用户显示访问级别之前检查访问级别,并且只向拥有正确权限的用户显示受限制的项目。

票数 2
EN

Stack Overflow用户

发布于 2014-04-27 19:16:34

系统并不真正支持您所要求的内容,但是您可以使用以下设置:

制作一个内容插件(plugin)。在事件onContentPrepareForm中,您可以修改created_by_别名字段,以便为允许查看这篇内容文章的特殊用户使用它。

代码语言:javascript
复制
function onContentPrepareForm($form, $data){
    // first check that context is right
    // Then change the type of the field. This should allow to select 
    // the user when you create the article. 
    $form->getField('created_by_alias')->__set('type', 'user'); 
}

在onContentPrepareData事件中,检查created_by_alias中的数据是否引用了用户组中的有效用户。

代码语言:javascript
复制
public function onContentPrepare($context, $article, $params, $page){
    // first check that context is right
    //Then fetch the user data: 

    if(is_int($article->created_by_alias)){ // ( Optionally check if the article is in a specific category )
        $db=JFactory::getDbo(); 
        $currentuser=JFactory::getUser(); 
        $allowedgroup=2; // the registered users group
        $sql="select u.id from #__users inner join #__user_usergroup_map ug (u.id=ug.user_id) where ug.group_id={$allowedgroup}";  
        $db->setQuery($sql);
        $user=$db->loadObject();  
        if($user->id==$currentuser){
            $data->user=$user; 
        }
        else{
            //Unset the article content to prevent unothorized users from seeing the content. 
            unset($article); 
        }
}

最后,创建一个为特定用户提供文章的模块(module),其中至少包含:

代码语言:javascript
复制
$list=array(); 
$user=Jfactory::getUser(); 
if($user->id>0){
    $sql="select * from #__content where created_by_alias={$user->id}"; 
    // ( also add sql to check that the user has access, 
    // the article is published, the correct category etc)
    $db=Jfactory::getDbo(); 
    $db->setQuery($sql); 
    $list=$db->loadObjectList(); 
    if(!count($list)) return; 
}
else return; 
print_r($list); // Prints the content articles

此方案应保护未经授权的用户不查看特定用户的文章内容。模块应该(在很好地输出您想要显示的内容之后)为登录的旅店用户显示一个文章列表。模块可以以正常的方式链接到文章,授权用户可以访问。因此,它应该是“足够安全的”,并提供您需要的功能,没有太多的麻烦。

票数 2
EN

Stack Overflow用户

发布于 2014-05-07 14:46:03

我将在这里尝试另一个:您只需在您的站点上安装一个messageing系统即可。UddeIM就是这样的一个系统。这将允许您为用户提供特定的内容。可以配置UddeIM,因此只有管理员才能发送消息。该组件还有一些模块,用于显示最新消息等。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23091911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档