首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义Joomla登陆页面:定义文章,联系人表单

自定义Joomla登陆页面:定义文章,联系人表单
EN

Stack Overflow用户
提问于 2015-09-02 12:38:44
回答 2查看 247关注 0票数 0

在乔姆拉!可以使用模板重写更改“登陆/默认”页的代码。虽然添加HTML元素和类是一项简单的任务,但我不知道有两件事:

  1. 向菜单项添加选项
  2. 添加联系人表单

1.向菜单项添加选项

如果您覆盖内容组件的“特色”布局,基本上您有一个简单的博客布局。我想定义5篇文章,这些文章在页面上被用于不同的目的。

例如:

代码语言:javascript
复制
article_col1:        article-1
article_col2:        article-2
article_col3:        article-3
article_description: article-4
article_contact:     article-5

我能做这个,怎么做?

编辑2015/09/03

我理解需要更改描述菜单项类型及其参数的XML文件。现在,我复制了'featured.xml‘,并从’attle.xml‘中添加了请求部分:

代码语言:javascript
复制
<fields name="request">
    <fieldset name="request"
        addfieldpath="/administrator/components/com_content/models/fields">
 
      <field name="id_contact" type="modal_article"
            label="COM_CONTENT_FIELD_SELECT_ARTICLE_LABEL"
            required="true"
            edit="true"
            clear="false"
            description="COM_CONTENT_FIELD_SELECT_ARTICLE_DESC"
        />

      <!-- and some more article fields -->
    </fieldset>
</fields>

因此,我现在可以将文章分配给菜单项。

但是如何在布局文件中访问和显示它们呢?我可以看到介绍文章是通过$this->intro_items访问的。不幸的是,$this->id_contact->text无法工作。我需要告诉Joomla以某种方式从数据库中加载这些文章吗?

2.添加联系人表格

如果我可以设置、访问和显示这些文章,我可以使用插件在其中一篇文章中显示联系人表单。然而,我知道我想在我的登陆页面上显示一个联系人的联系形式,而对于这个非常单一的情况,一个插件似乎对我来说太过分了。

有没有一种通过PHP代码包含表单的方法?

EN

回答 2

Stack Overflow用户

发布于 2015-09-03 16:38:44

作为序言,我要指出,一个非常小的、专门的组成部分将是这一解决办法的理想选择。其原因是模板重写是为了改变现有模型数据的存在方式而设计的,因此您无法控制应用程序将通过$this->items传递什么。

正如对我的回应的评论所指出的,你想做的每一件事都可以使用特色文章和模块来完成。

(尽管如此:)

首先,您应该将自定义请求字段集嵌入到现有容器中。此外,由于您希望选择和显示5个不同的文章,您也需要一个字段为每个。因此,article.xml字段部分如下所示:

代码语言:javascript
复制
<fields name="params">
    <fieldset name="request" label="Article"       addfieldpath="/administrator/components/com_content/models/fields">

        <field 
             name="article_1" 
             type="modal_article"
             label="Custom Article 1"
             required="true"
             edit="true"
             clear="false"
             description="COM_CONTENT_FIELD_SELECT_ARTICLE_DESC"
        />
        <field 
             name="article_2" 
             type="modal_article"
             label="Custom Article 2"
             required="true"
             edit="true"
             clear="false"
             description="COM_CONTENT_FIELD_SELECT_ARTICLE_DESC"
        />
        <field 
             name="article_3" 
             type="modal_article"
             label="Custom Article 3"
             required="true"
             edit="true"
             clear="false"
             description="COM_CONTENT_FIELD_SELECT_ARTICLE_DESC"
        />
        <field 
             name="article_4" 
             type="modal_article"
             label="Custom Article 4"
             required="true"
             edit="true"
             clear="false"
             description="COM_CONTENT_FIELD_SELECT_ARTICLE_DESC"
        />
        <field 
             name="article_5" 
             type="modal_article"
             label="Custom Article 5"
             required="true"
             edit="true"
             clear="false"
             description="COM_CONTENT_FIELD_SELECT_ARTICLE_DESC"
        />
    </fieldset>
</fields>

现在,要从article.php文件中访问数据,请使用:

代码语言:javascript
复制
$menu = JFactory::getApplication()->getMenu()->getActive();
$article_1 = $menu->params->get('article_1');
$article_2 = $menu->params->get('article_2');
$article_3 = $menu->params->get('article_3');
$article_4 = $menu->params->get('article_4');
$article_5 = $menu->params->get('article_5');

不幸的是,这只会给出文章ID。检索文章的一个简单快捷的方法是使用com_content表类,如下所示:

代码语言:javascript
复制
$article = JTable::getInstance('content');
$article->load($article_1);

现在您可以使用以下方法显示文章内容:

代码语言:javascript
复制
echo $this->escape($article->introtext);

嵌入表单要复杂一些,特别是当您只使用一个模板时。我的建议是使用JED上的一个免费扩展()来创建表单,并使用它们的一个模块来显示。Joomla有一个内置的Load模块插件,激活后可以使用以下方法将模块嵌入到其他文章中:

代码语言:javascript
复制
{loadmodule mod_myform, My Custom Form Title}

否则,您将需要创建您自己的模块和xml表单定义以及许多其他内容,如果您想要这样做的话,这应该是它自己的问题。

希望这能有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2015-09-07 13:21:53

我认为你应该后退一步,了解一下Joomla的工作原理。我不知道你以前用的是什么,但我认为你把事情弄得太复杂了。使用像Joomla这样的CMS的要点是,在大多数情况下,您不需要编写自定义查询。你永远不会把一个查询放在一个模板中,这是没有意义的。模板布局尤其适用于html,并且您只使用PHP来表示“在这里回显这段内容”,有时还可以管理内容的循环。

这也是最小样本数据的一个缺点。如果您正在做一个复杂的站点,而且根本不了解Joomla,您应该使用"learn“示例数据创建一个实例,并在了解它的工作原理之前处理这些选项。这将向您展示所有的内置选项,并将向您展示一些更先进的方法,与他们在水果店的样品siate。最少量的样本数据对于经验丰富的用户、将要创建一个非常简单的站点的人、或将要阅读一本书或文档或观看一些关于如何制作一个更复杂的站点的视频的人来说都是最好的。否则,正如我所说的,您应该将复杂的示例数据安装在站点中,以便在完成操作后进行处理和删除。

因此,首先,特色内容的概念是,您到文章管理器,并选择您想要显示的文章,在特色视图中,标记他们的特色。所以你应该做的第一件事是去标记你想要在你的主页上显示的文章。然后转到com_content中的featured,并按您想要的顺序排列它们,并为各个文章设置任何显示选项。

然后,在也将被标记为默认链接的功能菜单链接中,您应该放置所需的排列,即您希望文章在其中的列数,并且您可以有一个全宽度和多色布局的混合。

那么唯一的问题是你想在主页上显示一个实际的联系人表单,而不是链接到一个联系人表单,对吗?最有可能的是,我要做的就是用表单创建一个模块。也许您可以在扩展目录中找到其中的一个,但您也可以自己编写代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32353411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档