我需要创建一个特定于用户的内容页面,我已注册用户,我需要创建一个模块/页面/菜单/订阅源或任何显示仅适用于一个或一些用户的文章。
例如,在我的网站中,我向公众展示了一些项目(作为一些架构项目编辑的文章),例如:新闻,已完成的项目等,有些人注册并可以访问其他针对注册用户的内容,例如:只有注册客户会感兴趣的新项目,到目前为止,我设法完成这项工作,但现在,我的工作是针对特定用户的,他/她只能在他/她的Feed中看到它,因为例如:我们的项目状态,一些画廊中有正在进行的工作的照片等等。
因此,此Feed必须是一个模块/页面/菜单,显示具有特定类别的文章和注册用户。但我希望能够发布一篇专门针对特定用户或一组用户的文章,并在此Feed(模块)中展示,或者至少发布一个显示用户特定内容的新模块,而无需创建类别以及每个用户的访问级别。
是否有扩展程序或插件可以帮助我这样做?
答案 0 :(得分:2)
你需要做两件事:
模块应在将访问级别显示给用户之前检查访问级别,并仅将受限制的文章显示给具有正确权限的文章。
答案 1 :(得分:2)
系统并非真正支持您的要求,但您可以使用以下设置:
制作内容插件(http://docs.joomla.org/J2.5:Creating_a_content_plugin)。在onContentPrepareForm事件中,您修改created_by_alias-field以将其用于允许查看此内容文章的特殊用户。
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中的数据是否引用了您的用户所在的用户组中的有效用户
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);
}
}
最后,创建一个模块(http://docs.joomla.org/Creating_a_simple_module),为特定用户提供文章,至少包含:
$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
此方案应保护未经授权的用户不要查看特定用户的文章内容。该模块应该(在很好地输出您想要显示的内容之后)显示已登录的inn用户的文章列表。模块可以正常方式链接到文章,授权用户可以访问。所以它应该足够安全",并提供您需要的功能而不会有太多麻烦。
答案 2 :(得分:1)
我会在这里尝试另一个人: 您可以在您的站点上安装消息系统。 UddeIM就是这样一个系统。这样您就可以为用户制作特定内容。可以配置UddeIM,以便只有管理员才能发送消息。此组件还有一些模块可显示最新消息等。