如果作者对前端进行了微小的更改,则 Joomla 中的 k2 篇文章将变为未发布

Posted

技术标签:

【中文标题】如果作者对前端进行了微小的更改,则 Joomla 中的 k2 篇文章将变为未发布【英文标题】:k2 articles in Joomla become unpublished if the author makes a minor change from the Frontend 【发布时间】:2012-10-30 14:07:12 【问题描述】:

“作者”组没有任何发布权限。还行吧。因此,编辑/管理员会对任何文章进行初步批准。

如果作者决定编辑已发表的文章,就会出现问题。当他从前端点击“保存”时,该项目立即变为未发布。(因为作者组无权发布项目)。所以,这至少对我来说是个大问题。

我希望文章在管理员初步批准后保持发布,即使作者进行了调整。知道如何做这样的事情吗?

此逻辑是 Joomla Core 中的默认处理方式。

【问题讨论】:

在后台管理中,转到 K2 组件,然后是参数,然后单击权限选项卡,在作者下,尝试将“编辑状态”设置为“允许”。不能 100% 确定这是否可行,但值得一试。 不,我已经玩过所有这些设置了。除了最后两个选项“编辑任何项目”、“发布项目”之外,我的作者设置都设置为“是”。我认为这是一个逻辑问题,这里还有一个选项是任务,例如“编辑项目并保持发布” 嗯....看起来您的工作流程是反直觉的...如果作者写了一篇文章,那么它会得到管理员的批准,它就会被发布。但是,如果作者回来,他们可以更改任何他们想要的东西,做一些事情来破坏模板,添加不适当的信息或其他任何东西,但您不想重新批准他们的更改?我相信系统以这种方式设计是有充分理由的。您可能想考虑让管理员批准更改是个好主意。如果您不想重新批准更改,为什么要批准?你不妨给他们作者权限.... 很简单。我的网站是一个非营利组织的杂志,所以作者是简单的人,简单的人会犯很多语法错误/词汇/错别字。我同意你的观点,不允许作者一直发表东西是合乎逻辑的。因此,最专业的方法是允许他们进行更改,但在管理员批准之前永远不要发布(更改)。一直以来,文章都必须保留。这是我的问题。由于微小的调整而发布/未发布的项目并不酷。 我有 30 个作者,这里真正重要的是最初的批准和发布。我再说一遍,这是 Joomla 核心处理文章的默认方式。如果某些内容已发布并且作者对其进行了编辑,则它仍然是已发布的。我想要那个,但很可能我必须自定义代码。 【参考方案1】:

您应该允许作者编辑任何项目或禁用为作者编辑文章的选项。

【讨论】:

你在告诉我一些我已经知道并想避免的事情。我不想让我的作者 => 编辑,我希望他们能够随时编辑自己的项目。【参考方案2】:

您可能需要考虑从 K2 切换到其他类似 EasyBlog 的工具...或者干脆不使用 K2。似乎 K2 的默认设置是遵循与您的工作流程冲突的工作流程。

否则您可以修改 K2 以满足您的需要...我真的不建议修改扩展,因为这样您就不能再对它们进行更新,除非您计划每次更新时都进行修改(这很痛苦) .

您的问题存在于管理员/components/com_k2/models/item.php 以下几行是表单版本 2.6.1 第 785 行。

        if ($front)
        
            if (!K2HelperPermissions::canPublishItem($row->catid) && $row->published)
            
                $row->published = 0;
                $mainframe->enqueueMessage(JText::_('K2_YOU_DONT_HAVE_THE_PERMISSION_TO_PUBLISH_ITEMS'), 'notice');
            
        

如果我理解正确,您想要的更像是:

    if ($front)
    
        $row->published = 1;
        if (!K2HelperPermissions::canPublishItem($row->catid) && $row->published && $isNew)
        
            $row->published = 0;
            $mainframe->enqueueMessage(JText::_('K2_YOU_DONT_HAVE_THE_PERMISSION_TO_PUBLISH_ITEMS'), 'notice');
        
    

如果我通过在 if 语句中添加对 $isNew 的检查来正确理解他们的模型,它只会将 published = 0 应用于新条目。如果我理解你的话,这是你唯一想要影响的人。这样,如果文章已经存在并且已发布,它将始终保持发布状态,除非管理员将其更改为未发布。

我不确定这是否会按我预期的方式工作,所以请告诉我。

【讨论】:

尝试添加 $row->published = 1;在第二个 if 语句之上。【参考方案3】:

转到您的 joomla 管理,转到 k2 菜单并在 User Groups 选项卡中创建一个名为 editors 的组并授予其访问 Publish item 的权限,然后返回 Users 选项卡并放置您想要创建的用户他们是编辑组中的编辑。

确保您的编辑组用户有权访问Front-end item editingEdit any item

您的问题是因为您的编辑拥有Edit any item 访问权限,但他们无权访问Publish item

【讨论】:

如果是这种情况,为什么要创建一个新的用户组而不更改“作者”组权限?看起来不合逻辑,但我还是会试试看。 我也在谈论这里的作者。作者不应编辑或发表其他作者的文章。只是他们自己的。作者不是编辑或管理员。 @GeorgeD。转到 K2 用户组,根据需要创建尽可能多的组,您可以将它们限制为特定类别并管理其访问级别(仅添加、编辑自己的、编辑任何项目、发布等)【参考方案4】:

你要设置的权限其实在k2用户组设置里面。查找允许编辑已发布的项目并将其设置为

至少对于 k2 v. 2.6.7 来说是这样,尽管我认为自 v.2.6.0 或更早版本以来没有任何权限设置发生变化。

【讨论】:

其实他们是在我的通知之后添加到这个版本中的。

以上是关于如果作者对前端进行了微小的更改,则 Joomla 中的 k2 篇文章将变为未发布的主要内容,如果未能解决你的问题,请参考以下文章

Joomla 1064 管理错误

RESTKit:对持久存储进行细微更改

对 SQL SERVER 查询的微小更改会导致执行时间极慢

如何更改Joomla的网址!登录模块到我们的自定义页面?

Joomla K2 内容按票数排序

在自定义组件中更改 joomla 2.5 默认编辑器