1

我在 Win XP SP3 上使用 wamp 并创建带有可变参数的 Joomla 模板。最初的消息是

参数文件\templates\ssc_2010\params.ini 是 可写的!

一旦我进行更改,一切都会按预期工作,除了现在我收到消息:

参数文件\templates\ssc_2010\params.ini 不可写!

一种解决方案是浏览目录,右键单击文件,选择属性,然后取消选中只读。该文件再次是可写的,但是一旦我再次修改参数,它就会再次变为只读。我很懒,想防止这种情况再次发生,我注意到在过去的项目中会发生这种情况,但现在我必须大量处理参数,所以像这样的体力劳动变得很无聊:P

4

2 回答 2

1

Joomla 1.5 中有一个错误会导致显示消息。

添加了一项安全功能,使模板文件在保存之前不可写,在此之前将它们设为可写、保存,然后再次设为不可写。

尝试进行更改,然后返回并检查预览。您将看到实际进行了更改。

如果要修复烦人的不可写消息,请将以下代码添加到

administrator/components/controller.php 大约在第 179 行,就在设置 FTP 凭据之后:

        $file = $client->path.DS.'templates'.DS.$template.DS.'params.ini';

    // Try to make the params file writeable
    if (!$ftp['enabled'] && JPath::isOwner($file) && !JPath::setPermissions($file, '0755')) {
        JError::raiseNotice('SOME_ERROR_CODE', JText::_('Could not make the template parameter file writable'));
    }

这将使文件在编辑加载过程中可写,并且在文件的状态发布在模板中之前。

然后为了安全起见,如果编辑屏幕关闭而不保存,请搜索以下行:

        require_once (JPATH_COMPONENT.DS.'admin.templates.html.php');
    TemplatesView::editTemplate($row, $lists, $params, $option, $client, $ftp, $template);

并在这些行之后但在右大括号之前粘贴以下代码:

        // Try to make the params file unwriteable
    if (!$ftp['enabled'] && JPath::isOwner($file) && !JPath::setPermissions($file, '0555')) {
        JError::raiseNotice('SOME_ERROR_CODE', JText::_('Could not make the template parameter file unwritable'));
    }

这将使文件再次不可写。

这与 saveTemplate() 函数中使用的代码相同。我们只是在编辑屏幕上显示文件状态之前再次执行此操作。如果该过程由于您的 Web 服务器的配置而失败,在您对模板进行大量更改之前,您将收到警告消息。:)

PS 记得单独保存这个文件的副本,以便在升级 Joomla 时可以重做更改!(如果他们自己还没有解决这个问题。)

于 2010-10-30T22:14:30.820 回答
0

这听起来像是 Windows 中的用户权限问题 - 查看您正在编辑的文件所在目录的安全权限,并检查用户“IUSR_xxx”(其中 xxx 是您的计算机名称)是否具有完整权限控制。

如果这不起作用,那么您能告诉我们您正在运行什么版本的 Windows,因为这可能会有所帮助...

马特

于 2010-05-13T23:20:15.637 回答