Content management system 从浏览器在Plone中编辑buildout.cfg

Content management system 从浏览器在Plone中编辑buildout.cfg,content-management-system,plone,buildout,diazo,Content Management System,Plone,Buildout,Diazo,我正在使用Plone 4 CMS编辑一个网站。我当前使用的Plone实例由我无权访问的服务器托管(即,我无法通过FTP将此服务器发送到服务器并编辑PHP文件) 虽然我没有托管此网站的服务器,但我想访问buildout.cfg文件。有没有一种方法可以通过登录我的Plone网站来编辑此文件,或者我需要有凭据才能使用FTP操作整个站点实例 当我登录时,我可以进入一个名为Site Setup的页面(提供了屏幕截图)。我可以从这一页解决我的问题吗 你不能。buildout.cfg文件用于安装/构建应用程序

我正在使用Plone 4 CMS编辑一个网站。我当前使用的Plone实例由我无权访问的服务器托管(即,我无法通过FTP将此服务器发送到服务器并编辑PHP文件)

虽然我没有托管此网站的服务器,但我想访问
buildout.cfg
文件。有没有一种方法可以通过登录我的Plone网站来编辑此文件,或者我需要有凭据才能使用FTP操作整个站点实例

当我登录时,我可以进入一个名为Site Setup的页面(提供了屏幕截图)。我可以从这一页解决我的问题吗


你不能。
buildout.cfg
文件用于安装/构建应用程序。因此,在站点设置中,您已经在使用要重新配置的正在运行的应用程序


您将编辑
buildout.cfg
,然后运行
/bin/developer rb
来重建它,然后(重新)启动应用程序实例。例如,此时,您将从站点设置/加载项(您在buildout.cfg的eggs/zcml/versions部分添加的加载项)中看到可用于激活它们的新加载项。

理论上,下面的代码示例显示了使用浏览器视图的原型,调用该视图时:

  • 读取给定页面的内容
  • 将内容写入构建配置
  • 更新实例
实际上:

  • 您需要先访问文件系统,才能安装带有浏览器视图的附加组件
  • 人们永远不会希望在生产中这样做,因为如果出现错误,您将 那我就无能为力了

import os
from Products.Five.browser import BrowserView


class View(BrowserView):

    def __call__(self):

        # Let's assume these paths exist:
        instance_path = '/path/to/instance'
        buildout_config_path = instance_path + 'buildout.cfg'
        page_path_in_site = 'front-page'

        # Read buildout-config of page in site:
        page = self.context[page_path_in_site]
        config_content = page.getText()

        # Write buildout-config to filesystem:
        with open(buildout_config_path, 'w') as fil:
            fil.write(page.getText())

        # Run buildout, so changes in config take effect:
        os.system(instance_path + 'buildout')

        # Restart server, so python- and zcml-files get
        # (re-)compiled, respectively loaded:
        os.system(instance_path + 'bin/instance restart')