Компонент Joomla не отображается в типах пунктов меню - PullRequest
5 голосов
/ 30 декабря 2011

Я только что последовал руководству по Joomla о том, как создать «идеальный» MVC компонент Joomla. Однако моя проблема в том, что я пока не знаю, как назначить его меню. Я думал, что мой компонент тогда просто появится, когда я выберу «тип пункта меню», но моего компонента нет в этом списке. Я провел некоторые исследования в Google, но не могу найти ответ ... Нужно ли мне создавать файл metadata.xml или что-то подобное? Заранее спасибо за ваши ответы !!

Ответы [ 5 ]

5 голосов
/ 30 декабря 2011

Чтобы создать «представления» для вашего компонента, вам нужно создать несколько XML-файлов.Внутри папки шаблонов во внешней части вашего компонента (обычно что-то вроде / components / com_yourcomponent / views / someview / tmpl ), если у вас есть шаблон с именами «default.php» и «form.php»Вы можете создать файл "default.xml" и файл "form.xml", чтобы сделать эти пункты меню доступными для администратора.Вы можете взглянуть на другие компоненты, чтобы увидеть структуру этих XML-файлов, но вы должны поместить внутрь:

1) Имя и описание для четырех представлений 2) Параметры, которые пользователь сможетперейти от администратора (работает как параметры модуля / плагина) 3) Вы также можете установить «скрытые» переменные запроса для этого пункта меню.Это означает, что эти переменные будут добавлены в запрос в этом конкретном пункте меню, но пользователь не сможет изменить его значение.

Вот полный пример для компонента (Joomla 1.7):

<?xml version="1.0" encoding="utf-8"?>
<metadata>
    <layout title="COM_AGMTAGS_TAG_VIEW_DEFAULT_TITLE">
       <message>COM_AGMTAGS_TAG_VIEW_DEFAULT_DESC</message>
    </layout>
<fields name="request" addfieldpath="/administrator/components/com_agmtags/models/fields">
    <fieldset name="request">
       <field name="tag_id" type="agmtag"
        label="COM_AGMTAGS_TAG_FIELD_NAME_LABEL"
        description="COM_AGMTAGS_TAG_FIELD_NAME_DESC"
       />
    </fieldset>
</fields>
<fields name="params">
    <fieldset name="basic" label="COM_AGMTAGS_TAG_OPTIONS">
       <field name="layout_type" type="hidden" default="blog" />
   <field name="show_tag_name" type="list"
        label="COM_AGMTAGS_SHOW_TAG_NAME"
        description="COM_AGMTAGS_SHOW_TAG_NAME_DESC"
       >
          <option value="">JGLOBAL_USE_GLOBAL</option>
          <option value="0">JHIDE</option>
          <option value="1">JSHOW</option>
       </field>
       <field name="show_tag_description" type="list"
        description="COM_AGMTAGS_SHOW_TAG_DESCRIPTION_DESC"
        label="COM_AGMTAGS_SHOW_TAG_DESCRIPTION_LABEL"
       >
          <option value="">JGLOBAL_USE_GLOBAL</option>
          <option value="0">JHIDE</option>
          <option value="1">JSHOW</option>
       </field>
       <field name="items_per_page" type="text" default="" />
       <field name="container_class" type="text" default="agmtags-list" />
    </fieldset>
</fields>
</metadata>

Надеюсь, это помогло!

3 голосов
/ 19 февраля 2012

Если вы просто хотите добавить ссылку на просмотр в список, создайте XML-файл с именем default.xml внутри com_yourcomponent / views / yourviewname / tmpl /

В приведенном ниже коде xml используются две языковые строки, используемые для отображения ссылки на элемент меню в списке

<?xml version="1.0" encoding="utf-8"?>
<metadata>
    <layout title="COM_YOURCOMPONENT_FRONPAGE_TITLE">
       <message>COM_YOURCOMPONENT_FRONPAGE_MSG</message>
    </layout>
</metadata>

сохраните файл и ссылка должна появиться в списке пунктов меню

1 голос
/ 14 августа 2012

Очевидно, вам также нужны теги административного меню в вашем установочном XML-файле.http://forum.joomla.org/viewtopic.php?p=706714

Это сработало для меня

<administration>
    <menu>COM_COMPONET</menu>
    <submenu>
              etc...
    </submenu>

Подумайте, это то, что Панайотис пытался сказать

0 голосов
/ 13 марта 2013

Кроме того, альтернативные имена файлов представления НЕ ДОЛЖНЫ записываться с подчеркиванием.

table_catalog.xml
table_catalog.php
table_catalog_item.php

не сработало - в списке «Тип пункта меню» не было новой опции. Но

tablecatalog.xml
tablecatalog.php
tablecatalog_item.php

имена файлов работают отлично. Я потерял час на выявление проблемы.

0 голосов
/ 12 января 2012

Дополнительно есть еще один улов. В установочном XML-файле компонента в разделе теги должны присутствовать, даже если вам не нужно меню.

Если они отсутствуют, то вам никогда не дадут возможность добавить этот компонент в пункт меню, потому что типа там не будет: -)

...