我正在编写一个与插件结合使用的模块,为网站创建上下文背景。
前提是:如果用户在主页上,则背景图像是插件参数中指定为默认值的任何内容。
如果用户在类别列表页面上,则背景图像是(自定义)组件参数中指定为默认值的任何内容。
如果用户在文章列表页面上,则背景图像是(自定义)类别参数中指定为默认值的任何内容。
如果用户在文章页面上,则背景图像是(自定义)文章参数中指定为默认值的任何内容。
为了让这更有趣,我编写了自己的组件来显示个人资料而不是文章。它们的工作方式完全相同,但可能不包含 Content 组件所做的所有编码。我编写自定义组件的原因超出了这个问题的范围。
该插件创建并向页面添加基本标记,这在整个站点中都可以正常工作。主页完全按照我的要求工作。
该模块应该添加样式表等。到文档的标题,这很好。问题是模块应该首先确定上下文,然后从给定的上下文中加载参数。这是我的问题:我找不到代码来确定上下文并按照上述规则读取参数。
我尝试将它作为一个插件(没有模块的帮助),但作为一个内容插件它在主页上不起作用,作为系统插件它无法访问内容参数。我也考虑过让两个插件一起工作,但这似乎是不好的做法。也许一个新插件既不是内容也不是系统,但可以访问两种上下文?
附加信息:
我编写了许多代表不同实体组的组件。每个组件都有自己独特的参数,但在所有组件中也有一些共同的参数。每个组件都具有以与核心 Joomla 'banner' 和 'contact' 组件相同的方式“实例化”的功能。常见参数的一个示例是“gallery”参数;每个组件都有一个“画廊”参数,每个“实例”都可以选择拥有自己的值。“gallery”参数包含文件夹的文件夹 URL,该文件夹包含与特定组件实例相关的图像。
这一切应该如何结合在一起的一个例子:
我有一个名为“驱动程序”的组件,它将充当 - 你猜对了 - 驱动程序的容器。在组件管理菜单中,我可以添加驱动程序,指定其名称、年龄等,并且可以包含驱动程序的照片和画廊 URL。
当站点端的用户加载驱动程序页面时,我希望代码加载画廊文件夹中的所有图像,并在后台旋转。我希望能够随时添加/删除/替换图像,而无需参考驱动程序的选项页面。更复杂的是,在加载每个背景图像时,会从图像中读取 EXIF 元数据,并在页面底部的前景中以缩略图的形式显示。
现在,这一切都在站点的根目录中完美运行,并且大部分都在整个站点中运行。下降的部分是通过模块从驱动程序“实例”中检索变量。当然,我可以编写一些整洁的 SQL 和 db 调用,但肯定有一种方法可以让模块检索组件、类别和文章参数吗?