将模块添加到组件,但不是组件的每个页面

Posted

技术标签:

【中文标题】将模块添加到组件,但不是组件的每个页面【英文标题】:Add a module to a component , but not every page of the component 【发布时间】:2013-08-07 16:30:12 【问题描述】:

我正在为一个大学项目开发​​一个 joomla 1.5(当它开始时 2.5 还没有推出 :D)。我想要做的是为我的自定义组件分配一个模块,但不是它的每一页。 我的组件的 2 个不同页面是一个显示每个产品的页面,但另一个需要一个 id 才能工作。为了将模块分配给一个页面,我认为我需要将我的组件必须的每个页面分配给一个菜单项。 但我的问题是我不知道如何为显示特定产品的页面分配变量 id 以使其工作。

【问题讨论】:

您可以将模块包装在一个 php if 语句中,该语句检查如下内容:if (JRequest::getVar('option') == 'your_component' && JRequest::getVar('view') != 'view_without_module') then display module; 【参考方案1】:

我猜,Joorthodox 的方式是从管理员页面中的模块管理器控制模块可用性,您可以在其中仅将其分配给某些页面/菜单项。 综上所述,为该页面创建一个菜单项类型,将其分配给一个菜单项,该菜单项又将成为该页面的模块控制开关。

另一种方法是直接控制 joomla 模块渲染器。一个例子可以在这里找到:joomla-is-there-a-module-render-plugin-event

【讨论】:

但是我要如何使该菜单项与 id 一起使用?? 您不必这样做,您的链接可以由您的模块或组件分配给页面到适当的 html 元素。该菜单项将仅由模块管理器用于查看与该链接对应的视图以及是否要启用它。菜单项甚至可以保持未发布状态 我已经启用了 seo 链接,我认为这就是让我搞砸的原因。此外,未发布的菜单项不会显示在模块页面选择中。 认为它可以不发布,因为它在 2.5 上工作,抱歉。无论如何,这不是我们的主要问题。尝试为该视图创建一个菜单项类型,在组件视图的 tmpl 文件夹中创建一个 default.xml,一个示例可以在这里找到 ***.com/questions/8673154/…,并尝试将其分配给一个新的菜单项。 但这不会为单个产品ID创建一个菜单项吗?我想要实现的是一个链接作为我的组件的子菜单来阻止我不想单个的模块产品(但仍然在产品列表中启用它)。我使用 .xml 作为我的视图列表来添加参数,并且单个显示为菜单项。但是当我选择单个菜单项时当然不显示任何东西,因为它没有 id,而且它也阻止网站显示每一个产品,即使显示的链接是正确的。这就是为什么我认为我的 seo 正在进入那里。【参考方案2】:

一种方法是使用 CSS 将模块设置为隐藏在该页面上。

转到views/view_name/tmpl/default.php并在顶部的标签中,添加以下代码:

$doc = JFactory::getDocument();
$doc->addStyleDeclaration(" #element_id  display: none;  ");

您需要使用 Firebug、Chrome 开发工具或其他工具检查模块,具体取决于您使用的浏览器,并将 element_id 更改为适合您需要的任何内容。

希望对你有帮助

【讨论】:

因为这是一个大学项目,我正在努力让一切都以“正确”的方式进行。所以我更喜欢一个不隐藏它并使它甚至不加载的解决方案。不过感谢您的努力!【参考方案3】:

只需使用Advanced Module Manager 并通过 URL 分配您的模块,而不仅仅是通过菜单链接,它可以让我在同一组件的不同页面中隐藏和显示模块

【讨论】:

以上是关于将模块添加到组件,但不是组件的每个页面的主要内容,如果未能解决你的问题,请参考以下文章

如何使用图像组件将图像动态添加到 Gatsby 中的页面?

Angular 4,热模块替换附加而不是替换

vue.js中子组件触发父组件的方法

外部反应组件/模块的路由

Joomla 模块定位

前端开发中工程化模块化和组件化分别是什么?