【问题标题】:Joomla Extension InstallationJoomla 扩展安装
【发布时间】:2012-10-15 09:23:57
【问题描述】:

我正在开发一个扩展(模块),如果可能的话,我希望与 Joomla 1.5、2.5 和 3.0 兼容。我的主要问题是解决所需的不同 XML 文件。我决定为 Joomla 1.5 创建一个带有 <install> 标签的 manifest.xml 文件和一个带有 <extension> 标签的 Joomla 2.5/3.0 的 mod_mymodule.xml 文件,其中 mod_mymodule.xml 包含字段集等,而 manifest.xml 包含<params>

我的问题是我的扩展在 Joomla 3.0(在本地主机上)上安装得非常好。然而,在 Joomla 2.5 上安装时,参数下没有任何显示。 Joomla 2.5 的优先级是什么?为什么它使用带有安装标签的manifest.xml 文件而不是mod_mymodule.xml 文件?

Joomla 2.5 是否将 XML 文件顶部的 <install> 标签优先于同一目录中带有 <extension> 标签的另一个 XML 文件?

清单文件:

<?xml version="1.0" encoding="utf-8"?>
<install type="module" client="site" method="upgrade" version="1.5">
    <name></name> 
    <author>George Wilson</author> 
    <creationDate>05-Mar-2012</creationDate> 
    <copyright></copyright> 
    <license>http://www.gnu.org/licenses/gpl-3.0.html</license> 
    <authorEmail></authorEmail> 
    <authorUrl></authorUrl> 
    <version>1.1.1</version> 
    <description></description>
    <files>
            <filename module="mod_mymodule">mod_mymodule.php</filename>
            <filename>manifest.xml</filename>
            <filename>index.html</filename>
            <filename>helper.php</filename>
            <folder>assets</folder>
            <folder>tmpl</folder>
    </files>

    <languages>
        <language tag="en-GB">language/en-GB/en-GB.mod_mymodule.ini</language>
    </languages>

    <params>
        <param name="blah" type="text" default="5" label="Label" description="Description" />
    </params>
</install>

mod_mymodule.xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<extension type="module" client="site" method="upgrade">
    <name></name> 
    <author>George Wilson</author> 
    <creationDate>05-Mar-2012</creationDate> 
    <copyright></copyright> 
    <license>http://www.gnu.org/licenses/gpl-3.0.html</license> 
    <authorEmail></authorEmail> 
    <authorUrl></authorUrl> 
    <version>1.1.1</version> 
    <description>Description</description>
    <files>
            <filename module="mod_mymodule">mod_mymodule.php</filename>
            <filename>mod_mymodule.xml</filename>
            <filename>index.html</filename>
            <filename>helper.php</filename>
            <folder>assets</folder>
            <folder>sql</folder>
            <folder>tmpl</folder>
    </files>

    <languages>
        <language tag="en-GB">language/en-GB/en-GB.mod_mymodule.ini</language>
        <language tag="en-GB">language/en-GB/en-GB.mod_mymodule.sys.ini</language>
    </languages>

    <install>
        <sql>
            <file driver="mysql" charset="utf8">sql/install.mysql.utf8.sql</file>
        </sql>
    </install>
    <uninstall>
        <sql>
            <file driver="mysql" charset="utf8">sql/uninstall.mysql.utf8.sql</file>
        </sql>
    </uninstall>

    <config>
        <fields name="params">
            <fieldset name="basic">
                <field name="moduleclass_sfx" type="text" default="" label="COM_MODULES_FIELD_MODULECLASS_SFX_LABEL" description="COM_MODULES_FIELD_MODULECLASS_SFX_DESC" />
            </fieldset>                 
        </fields>
    </config>
</extension>

错误: 下方位置参数: ( ! ) 注意:尝试在第 50 行的 ROOT\administrator\components\com_modules\views\module\tmpl\edit.php 中获取非对象的属性

在排序参数下方 ( ! ) 注意:尝试在第 61 行获取 C:\wamp\www\joomla25\administrator\components\com_modules\views\module\tmpl\edit.php 中非对象的属性

底部还有Module XML data not available

更新:经检查,我希望 Joomla 2.5 使用的肯定是 manifest.xml 文件,而不是 mod_mymodule.xml

【问题讨论】:

  • 哪个参数你没有看到组件或模块,你可以使用 标签但是在参数上有区别 j 1.5 支持参数使用 和 j 2.5 使用 所以试试使用这些标签或举一些您的 xmls 代码示例
  • 更新了我的问题以指定其模块。我的观点是,在 manifest.xml 中我想要 J1.5 兼容所以使用 。还有我想要的用于 J2.5/3.0 的 mod_mymodule.xml,并且正在使用
    。但是,这在 J2.5 中不起作用
  • 我能看到你的清单以及你的 2.5 模块文件结构
  • 是的,今晚当我回到我的笔记本电脑时,我会把它全部存储起来!
  • @RakeshSharma 将您请求的文件信息放上去。删除了一些细节。但是xml文件肯定没问题。因为它们在 Joomla 1.5 和 Joomla 3.0 上安装良好。并且该模块在 2.5 中安装时没有错误。但是后来我发现当我去编辑模块时没有参数和主帖子上列出的错误

标签: xml joomla joomla1.5 joomla2.5 joomla3.0


【解决方案1】:

两者的结构应该是 manifest.xml :-

<?xml version="1.0" encoding="utf-8"?>
<install type="module" version="2.5" method="upgrade">
     <name>my module</name> 
    <author>George Wilson</author> 
    <creationDate>05-Mar-2012</creationDate> 
    <copyright></copyright> 
    <license>http://www.gnu.org/licenses/gpl-3.0.html</license> 
    <authorEmail></authorEmail> 
    <authorUrl></authorUrl> 
    <version>1.1.1</version> 
    <description>Description</description>

    <!-- Installation -->   
    <!--<install>
        <sql>
            <file driver="mysql" charset="utf8">mod_mymodule/sql/install.mysql.utf8.sql</file>
        </sql>
    </install>
    <installfile>install/install.php</installfile>
    <uninstall>
        <sql>
            <file driver="mysql" charset="utf8">mod_mymodule/sql/uninstall.mysql.utf8.sql</file>
        </sql>
    </uninstall>
    <uninstallfile>install/uninstall.php</uninstallfile>

    <languages>
        <language tag="en-GB">language/en-GB/en-GB.mod_mymodule.ini</language>
        <language tag="en-GB">language/en-GB/en-GB.mod_mymodule.sys.ini</language>
    </languages>-->

    <!-- Modules -->
            <files folder="mod_mymodule">
                <filename module="mod_mymodule">mod_mymodule.php</filename>
                <filename>mod_mymodule.xml</filename>
                <!--<filename>index.html</filename>
                <filename>helper.php</filename>
                <folder>assets</folder>
                <folder>sql</folder>
                <folder>tmpl</folder>-->        
            </files>
</install>

模块文件应该是module.xml

<?xml version="1.0" encoding="utf-8"?>
<extension type="module" client="site" method="upgrade" version="2.5">
    <name>my module</name> 
    <author>George Wilson</author> 
    <creationDate>05-Mar-2012</creationDate> 
    <copyright></copyright> 
    <license>http://www.gnu.org/licenses/gpl-3.0.html</license> 
    <authorEmail></authorEmail> 
    <authorUrl></authorUrl> 
    <version>1.1.1</version> 
    <description></description>
    <files>
            <filename module="mod_mymodule">mod_mymodule.php</filename>
            <filename>mod_mymodule.xml</filename>
           <!-- <filename>index.html</filename>
            <filename>helper.php</filename>
            <folder>assets</folder>
            <folder>tmpl</folder>-->
    </files>

    <config>
        <fields name="params">
            <fieldset name="basic">
                <field name="moduleclass_sfx" type="text" default="" label="COM_MODULES_FIELD_MODULECLASS_SFX_LABEL" description="COM_MODULES_FIELD_MODULECLASS_SFX_DESC" />
            </fieldset>                 
        </fields>
    </config>
</extension>

希望这可以帮助您仅更改我的演示中的 1.5 的参数并提交如果您想包含更多文件,请创建一个模块包和您的结构应该

一个。清单.xml 湾。 mod_mymodule (dir) 和 zip 合二为一。不在模块文件夹中添加清单

【讨论】:

  • 感谢您的回复!当你说“两者的结构应该是 manifest.xml”时,这是否会像 mod_mymodule.xml 文件一样在 3.0 上工作,我看到你已经注释掉了 等部分
  • 是的,安装 manifest 知道模块需要它,它在你的端工作?
  • 我无法让它工作,所以最终拆分了 1.5 和 2.5/3.0 版本,以便我可以合并 joomla 更新功能等。不过感谢您的帮助!将其标记为正确,以便有人可以将其用作起点!
【解决方案2】:

您的第二个 xml 缺少版本(joomla!版本,而不是您的扩展名)。请看下面:

    <extension type="module" client="site" method="upgrade" version="2.5">

【讨论】:

  • 感谢您指出这一点!我试过了,但它仍然无法在 2.5 上运行——它仍在安装 manifest.xml 而不是其他 xml 文件。但是为了完整性仍然可以添加
猜你喜欢
  • 1970-01-01
  • 2011-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-06
  • 1970-01-01
  • 2016-07-17
相关资源
最近更新 更多