【问题标题】:How do I tell a page to use a different PHP file in Joomla如何告诉页面在 Joomla 中使用不同的 PHP 文件
【发布时间】:2012-02-15 07:59:11
【问题描述】:

所以基本上我有一个模板用于除一个页面之外的每个页面 - 图库页面 - 我希望它看起来不同,因此我必须从 .php 文件中取出一些代码,但显然我不想将它从 index.php 中删除,因为那样会影响所有页面。

我的问题基本上是我如何告诉画廊页面(菜单项)使用这个不同的 .php 文件 - gallery.php - 就像在 WordPress 中你可以为页面设置不同的 .php 文件一样。

我知道您应该使用模板管理器将菜单项“分配”到不同的模板,但它如何知道要为单独的模板引用哪个文件。您是否必须在服务器上创建另一个包含不同 index.php 的文件夹?

【问题讨论】:

  • 什么版本的 Joomla!你正在用吗? (别担心,刚刚在 cmets 中看到了对 Style 的引用)

标签: php templates joomla


【解决方案1】:

首先,了解 Joomla 的工作原理很重要。 Joomla 中只有一个文件。该框架使用当前模板中的 index.php 来创建所请求的页面。该文件基本上定义了您可以相对于组件将要显示的内容放置模块的位置。 Joomla 知道如何根据 URL 的查询字符串(或如果您打开 SEF URL 时发布的变量)来构建页面。该 URL 将告诉 Joomla 哪个组件将提供内容,以及内容的 itemID。

组件是代码从一个页面到另一个页面不同的地方。例如,照片库组件将具有显示图像的代码,而表单组件将具有显示联系表单的代码。 Index.php 永远不会改变,它只是从组件中加载代码。

itemID 是等式的重要部分,因为它是您如何将不同的模块分配给模块管理器中的特定页面的方式。当您为 Gallery 创建一个菜单项时,它会被分配一个 itemID,然后您可以使用该 itemID 将各种模块或模板分配给该页面。当你创建一个模块(比如登录模块或菜单模块)时,你把它放在一个位置,然后将它分配给所有页面,一个页面选择,除了选择页面之外的所有页面。

通常我不会使用多个模板,除非页面中存在结构差异。您可以只使用页面类后缀为每个菜单项分配唯一的 ID,这样您就可以使用唯一的 CSS 控制每个页面。

【讨论】:

  • 感谢您的回复布伦特。我分开的页面是结构上的差异,不是由模块设置的,所以我想我必须使用单独的模板。这没什么大不了的,我只是想确保我以正确的方式做这件事,而不仅仅是一种变通方法。
  • 您还应该查看可折叠模块的位置。我们构建复杂的网站,从一个页面到另一个页面具有非常不同的布局,并且很少需要使用多个模板。您可以通过使用内置的菜单分配和页面类后缀进行相当多的控制。即使是在结构上看起来不同的布局(例如一页上的左右列,然后在下一页上的 2 个右列)都通过更改 CSS 在同一个模板中。
【解决方案2】:

无需创建另一个文件夹或 index.php

您只需为图库页面的菜单项分配不同的模板。

转到 Joomla 管理,从管理员的顶部菜单中选择 Menus,选择您的画廊所在的菜单,然后执行以下操作:

Menu manager -> Edit menu item -> Template style(左下方下拉菜单)=您可以选择要用于此菜单项的模板。

希望对您有所帮助!

【讨论】:

  • 感谢您的回复,但我仍然不清楚它如何知道使用其中包含不同代码的 php 文件。例如,如果我将画廊菜单项设置为模板 - 画廊。它与我的默认模板有何不同?因为我所做的更改与 php 文件中的代码有关,所以我必须编辑 index.php 但如果我这样做了,那么它会为每个页面都更改它,不是吗?
  • 好的,如果我理解正确的话,您想复制您当前的模板并在 index.php 上进行一些小的更改,以便将其用于您的画廊?如果这是您想要的,那么只需在您的模板管理器中复制它,编辑 index.php 然后分配它。为什么您需要知道 joomla 是如何进行转换的?我真的认为你不必那么深入:)
  • 好吧,我真的不需要知道它是如何进行切换的。我只需要知道更改 index.php 将如何仅更改其中一个页面,当它连接到所有页面时他们。如果我在模板管理器中复制模板,它不会复制实际的模板吗?它所做的只是给了我一个新的“样式”,但它仍然使用与我原来的默认样式完全相同的文件夹,所以它使用完全相同的 index.php,如果我编辑.. 编辑每个页面。
  • 你是对的!它只会创建一种新样式...我知道的唯一方法是编辑另一个已安装的模板(删除所有内容,复制您要编辑的模板的内容),然后分配给图库...
  • 是的,这就是我所害怕的.. 似乎他们需要一种更好的方法来处理这个.. 我希望我可以告诉它在那个上使用 gallery.php 而不是 index.php页面可以解决所有问题,就像 WordPress 的做法一样。我相信我看到了一种可能的方法,方法是在 index.php 中包含您想要删除的代码,如果它在该页面上,则使用 if 语句删除此代码,但我认为您不能这样做画廊可能在文章页面或首页上
猜你喜欢
  • 1970-01-01
  • 2015-12-21
  • 1970-01-01
  • 2017-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-10
  • 2014-10-31
相关资源
最近更新 更多