自定义Joomla登录页面:定义文章,联系表单

时间:2015-09-02 12:38:45

标签: php templates joomla joomla3.0 overrides

在Joomla!您可以使用模板覆盖更改登录/默认页面的代码。 虽然添加HTML元素和类是一件容易的事,但我无法弄清楚两件事:

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

    添加选项

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

    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'并在'article.xml'中添加了请求部分:

    <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代码包含表单?

2 个答案:

答案 0 :(得分:1)

作为序言,我想指出一个非常小的专用组件是这个解决方案的理想选择。原因是模板覆盖旨在改变现有模型数据的存在方式,因此您无法控制应用程序将通过$ this-&gt;项目提供的内容。

作为我的回答的评论者指出,你想要做的一切都可以通过特色文章和模块来完成。

话虽如此:)

首先,您应该将自定义请求字段集嵌入现有容器中。此外,由于您要选择并显示5个不同的文章,因此每个文章也需要一个字段。所以article.xml字段部分看起来像这样:

<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文件中访问数据,请使用:

$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表类,如下所示:

$article = JTable::getInstance('content');
$article->load($article_1);

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

echo $this->escape($article->introtext);

嵌入表单有点复杂,特别是如果您只使用模板。我的建议是使用JED(Joomla扩展目录)上的一个免费扩展来创建表单并使用其中一个模块进行显示。 Joomla有一个内置的加载模块插件,激活时允许您使用以下命令将模块嵌入到其他文章中:

{loadmodule mod_myform, My Custom Form Title}

否则你需要创建自己的模块和xml表单定义以及许多其他的东西,如果你想要追求这条路线,那么老实说这应该是它自己的问题。

希望这有帮助。

答案 1 :(得分:0)

我认为你需要退一步了解Joomla的工作方式。我不确定你以前用过什么,但我认为你的事情太复杂了。使用像Joomla这样的CMS的关键在于,大多数情况下您不需要编写自定义查询。而且你永远不会在模板中放置查询,这是没有意义的。模板布局特别适用于html,你只使用PHP来说“在这里回复这段内容”,或者有时候用来管理内容的循环。

这也是最小样本数据的缺点。如果你正在做一个复杂的网站,并且根本不了解Joomla,你应该用“学习Joomla”样本数据创建一个实例,然后只是弄乱选项,直到你理解它是如何工作的。这将向您展示所有内置选项,还将向您展示一些更高级的方法,以便在水果店样品中使用它们。对于有经验的用户,打算制作非常简单网站的人,或者想要阅读书籍或文档或观看有关如何制作更复杂网站的视频的人来说,最小样本数据确实是最佳选择。否则,正如我所说,你应该在一个站点中安装复杂的样本数据,以便在完成后进行混乱和删除。

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

然后在您的特色菜单链接中也会被标记为您的默认链接,您应该放置所需的排列,即您希望文章所在的列数,并且您可以混合使用全宽和多列布局。

然后唯一的问题是你想显示一个实际的联系表格而不是主页上联系表格的链接,对吧? 我很可能在那里做的是用表格制作一个模块。可能你可以在扩展目录中找到其中一个,但你也可以自己编写代码。