具有不同页面的 joomla 组件

Posted

技术标签:

【中文标题】具有不同页面的 joomla 组件【英文标题】:joomla component with different pages 【发布时间】:2014-10-31 04:27:35 【问题描述】:

我正在为我的 joomla 网站创建一个组件(无 MVC),我希望有 2 个可以显示的 php 页面。

所以我在站点文件夹中有 myprog.php 和 myprog2.php。为了能够选择 myprog.php 将其分配给菜单,我在文件夹 /site/views/myprog/tmpl/ 中创建了一个 default.xml 文件

它包含:

<?xml version="1.0" encoding="utf-8"?>
<metadata>
        <layout title="COM_MYPROG_DEFAULT_TITLE">
                <message>
                        <![CDATA[COM_MYPROG_DEFAULT_DESC]]>
                </message>
        </layout>
</metadata>

我怎样才能为我的第二页设置这个,以便我可以选择第二页将其分配给菜单?

谢谢。

【问题讨论】:

【参考方案1】:

我会使用 MVC :-) 如果你坚持, 这里有一篇关于如何在菜单实例创建中添加参数的文章: http://docs.joomla.org/Developing_a_Model-View-Controller_%28MVC%29_Component_for_Joomla!2.5_-_Part_06#site.2Fviews.2Fhelloworld.2Ftmpl.2Fdefault.xml

它包含:

<?xml version="1.0" encoding="utf-8"?>
<metadata>
        <layout title="COM_HELLOWORLD_HELLOWORLD_VIEW_DEFAULT_TITLE">
                <message>COM_HELLOWORLD_HELLOWORLD_VIEW_DEFAULT_DESC</message>
        </layout>
        <fields
                name="request"
                addfieldpath="/administrator/components/com_helloworld/models/fields"
        >
                <fieldset name="request">
                        <field
                                name="id"
                                type="helloworld"
                                label="COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_LABEL"
                                description="COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_DESC"
                        />
                </fieldset>
        </fields>
</metadata>

我假设您可以将该字段更改为单选框。 您可能会在以下位置看到 joomla 可用的字段类型: http://docs.joomla.org/Standard_form_field_types (您不需要创建 onw 字段类型 - 使用无线电)

我会使用单选选项: http://docs.joomla.org/Radio_form_field_type

我想(未经测试)我会这样:

<field name="pagetoshow" type="radio" default="0" label="Select an option" description="">
  <option value="0">Page this</option>
  <option value="1">Page that</option>
</field>

最后你可以使用

$jinput = JFactory::getApplication()->input;
$pagetoshow = $jinput->get('pagetoshow', 1, 'INT' );

在您的 view.html.php 中并使用 if 语句显示相应的页面。

【讨论】:

感谢您的回答,我会按照您的第一个回答,尝试改为使用MVC。【参考方案2】:

您需要在同一位置再创建一个与 default.xml 相同的文件。它的名称也将是布局名称。例如,它的名称是 blog.xml。当你创建这个菜单时,它会自动在url中添加layout=blog

由于您没有使用 MVC,因此您可以在获取值中检查布局变量并相应地工作。

如果你使用 MVC 模式,那么你只需要在视图中设置布局并创建必须以布局名称开头的 tmpl 文件。 例如:默认的 tmpl 文件和博客布局会像

default.php => blog.php
default_edit.php => blog_edit.php

【讨论】:

以上是关于具有不同页面的 joomla 组件的主要内容,如果未能解决你的问题,请参考以下文章

Joomla 3.0 一个具有多个视图的组件

Joomla home 丢失了组件的 sef 别名

具有数据库访问权限的组件 joomla 2.5

Joomla 组件 - 列表视图管理页面 - 搜索不起作用

在根 URL 端点公开 Joomla 组件视图

Joomla 3.0一个具有多个视图的组件