Joomla语言过滤插件&更改前端的语言字段

时间:2017-04-26 21:54:15

标签: joomla

我尝试让Akeeba的Releasemaker运行,并将发布/项目的语言设置为All (*)。但是可以假设这种问题应该发生在尝试使用Site文件夹中的代码设置数据库字段language的任何类型的代码中。

如果您有多语言网站,则可能正在运行插件“系统 - 语言过滤器”。此插件将$_REQUEST['language']值设置为特定语言。每次。因此,像$data = $app->input->getData()这样的代码将获得$_REQUEST值的语言值而不是$_POST数组中的值,因此您无法使用通常的{{1}设置该语言字段操作。

您是否也遇到过这个问题?你有什么解决方案?

1 个答案:

答案 0 :(得分:0)

我为自己找到了解决方案。我实际上可以用两种方法来解决这个问题。一方面,您可以重命名从客户端传输到服务器的language参数,并在持久层中执行神奇的操作。另一方面,您可以尝试修复语言过滤器插件的工作。由于我不想更改组件,因此我选择了第二种方式并添加了一个系统插件,以根据需要将请求中的语言值重置为*。当然,也可以从POST数据中读取该值。该插件尽可能严格地执行该魔术,以免其他内容崩溃。

class PlgSystemLanguagefixer extends JPlugin
{

    public function onAfterRoute() {
        // Get the application object.
        $app = JFactory::getApplication();

        $option = $app->input->get('option');
        $format = $app->input->get('format');
        $task = $app->input->get('task');
        $view = $app->input->get('view');

        if ($option == 'com_ars' && $task=='save' && $format == 'json' && ($view=='releases' || $view='items')) {
            $app->input->set('language', '*');
        }


    }
}

请注意,这个问题仍然可以获得更好的答案:)