【问题标题】:solving templates conflicts between joomla sites that use the same db解决使用相同数据库的 joomla 站点之间的模板冲突
【发布时间】:2014-01-13 17:27:34
【问题描述】:

我有一个桌面 joomla 站点,它使用名为“mydatabase”的数据库。但是,我在同一主机的文件夹中为移动版本创建了另一个站点。那么:

www.mysite.com 是我的桌面网页。 www.mysite.com/mobile 是我的移动网页。

移动网站和桌面网站都是单一且独立的 joomla 安装,但它们使用相同的数据库。

然后,当我尝试配置默认模板来呈现我的内容时,我必须在移动内容或桌面内容之间进行选择,而不是两者。

如何渲染我的两个模板,以便两个网站一起工作和生活?

【问题讨论】:

  • 由于模板是从数据库中调用的,并且您在两个单独的实例中都有模板,我认为您需要将它们称为相同的东西并使配置选项基本上有两个字段集,一个用于移动,一个用于另一个。
  • 我正在努力理解你所说的但我无法理解...XD,我只能将我的网站的一个模板设置为默认模板,但我需要“激活” " 这两个模板都可以让移动和桌面网站运行良好。您能否以更好的方式解释您所说的内容,也许是一步一步或什么...您的意思是我必须更改数据库吗?
  • 好吧,也许我也不明白你说什么,你说“我在同一主机的文件夹中创建了另一个移动版网站”你的意思是你有一个完整的副本包括模板文件夹的文件和文件夹结构?

标签: php templates joomla joomla-extensions


【解决方案1】:

Joomla 将其大部分配置选项存储在数据库中,因此您的问题需要一些编码来处理它。但让我退后一步。

1. Joomla 方法

Joomla 允许您定义哪些页面显示哪些菜单。您可以在打开 SEF 的情况下进行简单的 Joomla 安装,其中主菜单与当前位于根目录中一样。

那么,为了拥有一个具有不同布局的 /mobile 页面,您只需要

  1. 创建一个新菜单(不是菜单项,菜单类型)并将其命名为 SEF 或 Hidden;这不会在任何地方发布。
  2. 在该菜单中创建一个别名为“mobile”的菜单项。

这可确保您的用户能够浏览页面 /mobile 并访问该菜单项。

现在为您网站的移动部分创建一个菜单,添加菜单项并为每个菜单项选择默认模板,然后创建一个模块来显示它。将其分配给“仅在选定页面上显示”并选择您刚刚创建的 /mobile 页面以及菜单中包含的任何其他页面。

然后回到主菜单模块,将其配置为“在除所有页面上显示”,并进行相同的页面选择。

现在您将拥有两个菜单,一个用于桌面,另一个用于移动。除了模板分配之外,它们将是相同的。

2。第三方扩展

有第三方插件允许您根据几个参数定义不同的模板:国家、用户代理、屏幕尺寸等。

除了您在 JED 上找到的内容外,许多模板(主要是商业模板)都具有为移动用户定义自定义布局的功能。

你是用插件还是模板来处理这个是个人选择的问题;两者都将非常有效,并且比我上面概述的 Joomla 答案更合适,因为它们将帮助您防止重复。内容或菜单项的重复成本很高,因为维护和测试会更加困难。

【讨论】:

  • 我明白你的回答...我会尝试你的解决方案,但我有一个疑问:如果你的移动版本是桌面joomla中完整的joomla安装内容会怎样?这是两个 joomla 环境,不仅一个,而且移动版本不是一个页面,而是一个带有全新 joomla 安装的目录......现在我澄清两个安装都可以访问同一个数据库......
  • 我提出的两种解决方案都将允许相同的功能,而无需进行两次安装:这将使事情变得更简单;所以你只需删除 /mobile 中的安装,并在“主”安装中创建该 url
【解决方案2】:

我认为你这样做的方式与普通的 Joomla 方法有很大不同(它将有一个响应式模板或让模板的 index.php 加载不同的子文件,具体取决于设备),但我们假设你有你的理由。

所以你有相同的数据库,这意味着所有的菜单都是一样的,所有的模块分配都是一样的,所有的模板分配都是一样的,默认的模板样式是一样的。

现在,Joomla 模板样式也被存储了。这是一个带有各种模板选项的 json 字符串对。

简单的例子,假设移动和桌面模板具有相同的选项。

现在在移动网站的模板文件夹中,我们将拥有移动模板。

调用我的模板。

在桌面站点中,您有一个桌面模板。称之为我的模板。安装一次。

因此,这些模板具有相同的名称,但因为它们位于两个不同的物理站点中,所以它们位于两个不同的物理模板文件夹中,一个在移动站点中,一个在桌面站点中。

现在我们将 mytemplate style-1 设为默认值。 在移动网站中,这始终会加载移动模板,而在桌面网站中,它将始终加载桌面模板。

现在假设我们将 mytemplate style-2 分配给新闻菜单项。再次根据调用它的实际站点使用适当的模板。

现在更棘手的是,如果您没有相同的参数。这很可能是因为您需要的设置会有所不同。在这种情况下,您需要做的是确保 templateDetails.xml 中定义的参数包括这两个集合。因此,如果您制作新样式,则需要始终为两个模板设置参数。这实际上会很有帮助,因为您不必配置两次。

【讨论】:

  • 这两个安装不是我一个人做的,是别人做的,所以我知道如果我从一开始就犯了那个错误,我没有犯那个错误...... XD 但我会试试你的建议,即使我安装了相同的模板,并且在移动和桌面物理目录中都有两个副本。对不起我的英语......
猜你喜欢
  • 2022-01-04
  • 2013-12-20
  • 2013-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多