2

我正在编写一个与插件结合使用的模块,为网站创建上下文背景。

前提是:如果用户在主页上,则背景图像是插件参数中指定为默认值的任何内容。

如果用户在类别列表页面上,则背景图像是(自定义)组件参数中指定为默认值的任何内容。

如果用户在文章列表页面上,则背景图像是(自定义)类别参数中指定为默认值的任何内容。

如果用户在文章页面上,则背景图像是(自定义)文章参数中指定为默认值的任何内容。

为了让这更有趣,我编写了自己的组件来显示个人资料而不是文章。它们的工作方式完全相同,但可能不包含 Content 组件所做的所有编码。我编写自定义组件的原因超出了这个问题的范围。

该插件创建并向页面添加基本标记,这在整个站点中都可以正常工作。主页完全按照我的要求工作。

该模块应该添加样式表等。到文档的标题,这很好。问题是模块应该首先确定上下文,然后从给定的上下文中加载参数。这是我的问题:我找不到代码来确定上下文并按照上述规则读取参数。

我尝试将它作为一个插件(没有模块的帮助),但作为一个内容插件它在主页上不起作用,作为系统插件它无法访问内容参数。我也考虑过让两个插件一起工作,但这似乎是不好的做法。也许一个新插件既不是内容也不是系统,但可以访问两种上下文?

附加信息:

我编写了许多代表不同实体组的组件。每个组件都有自己独特的参数,但在所有组件中也有一些共同的参数。每个组件都具有以与核心 Joomla 'banner' 和 'contact' 组件相同的方式“实例化”的功能。常见参数的一个示例是“gallery”参数;每个组件都有一个“画廊”参数,每个“实例”都可以选择拥有自己的值。“gallery”参数包含文件夹的文件夹 URL,该文件夹包含与特定组件实例相关的图像。

这一切应该如何结合在一起的一个例子:

我有一个名为“驱动程序”的组件,它将充当 - 你猜对了 - 驱动程序的容器。在组件管理菜单中,我可以添加驱动程序,指定其名称、年龄等,并且可以包含驱动程序的照片和画廊 URL。

当站点端的用户加载驱动程序页面时,我希望代码加载画廊文件夹中的所有图像,并在后台旋转。我希望能够随时添加/删除/替换图像,而无需参考驱动程序的选项页面。更复杂的是,在加载每个背景图像时,会从图像中读取 EXIF 元数据,并在页面底部的前景中以缩略图的形式显示。

现在,这一切都在站点的根目录中完美运行,并且大部分都在整个站点中运行。下降的部分是通过模块从驱动程序“实例”中检索变量。当然,我可以编写一些整洁的 SQL 和 db 调用,但肯定有一种方法可以让模块检索组件、类别和文章参数吗?

4

1 回答 1

0

您是否尝试过 moduleclass_sfx ?定义一个 CSS 类,如:

.myModule { 
   background-image: url('myimage.png'); 
} 
.myComponent { 
    background-image: url('mycompimage.png'); 
}
.myArticle { 
    background-image: url('myarticleimage.png'); 
}

然后在模块 class_sfx 的每个模块/组件参数选项上输入带有尾随空格的所需类(例如:“myComponent”(不带引号))。

另一种方法可能是定义组件/模块参数并调用:

<body style="background-image: url('/path_to_image_folder/<php echo $params->get('param_name') ?>');">

或者可能没有很好地理解您的问题,但希望它有所帮助。

于 2012-10-15T23:51:56.563 回答