上下文模块 - Joomla 2.5

Posted

技术标签:

【中文标题】上下文模块 - Joomla 2.5【英文标题】:Contextual Module - Joomla 2.5 【发布时间】:2012-10-05 18:14:40 【问题描述】:

我正在编写一个模块,该模块与插件一起为网站创建上下文背景。

前提是:如果用户在首页,则背景图片是插件参数中指定的默认值。

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

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

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

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

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

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

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

附加信息:

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

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

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

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

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

【问题讨论】:

在马里奥的回应中,上面添加了更多的上下文和细节。 【参考方案1】:

你试过 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') ?>');">

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

【讨论】:

马里奥,感谢您的回复。我可以看到您的想法,并感谢您的反馈,但是在这种情况下,我认为它并不能完全满足需要。我在上面包含了一些进一步的信息,希望它更清楚! :-)

以上是关于上下文模块 - Joomla 2.5的主要内容,如果未能解决你的问题,请参考以下文章

如何在 joomla 2.5 的组件中加载模块

joomla 2.5 模块从数据库中检索数据

Joomla 2.5 仅在 K2 类别上显示模块而不在 K2 项目上

在文章中提交 PHP 表单时出现 Joomla 2.5 404 错误

Joomla 2.5 组件控制器加载

joomla 2.5!自定义登录失败通知?