Компонент Joomla не появляется в меню типы элементов
Я просто следовал учебникам joomla о том, как создать "идеальный" компонент MVC joomla. Однако моя проблема заключается в том, что я еще не знаю, как назначить его в меню. Я думал, что мой компонент будет просто отображаться, когда я выберу "тип элемента меню", но мой компонент отсутствует в этом списке. Я провел некоторые исследования в Google, но не могу найти ответ... Мне нужно создать метаданные.xml-файл или что-то подобное ? Заранее спасибо за ваши ответы !!
5 ответов:
Чтобы создать "представления" для вашего компонента, вы должны создать несколько xml-файлов. Внутри папки templates в интерфейсной части вашего компонента (обычно что-то вроде /components/com_yourcomponent/views/someview/tmpl), Если у вас есть шаблон с именем "default.php " и " форма.php", вы можете создать " default.xml-файл и форма "а".xml " файл, чтобы сделать эти пункты меню доступными от администратора. Вы можете взглянуть на другие компоненты, чтобы увидеть структуру этих xml-файлов, но что вы должны положить внутрь это:
1) имя и описание для четырех видов 2) параметры, которые пользователь сможет изменить у администратора (это работает как модуль / плагин params) 3) вы также можете установить "скрытые" переменные запроса для этого пункта меню. Это означает, что эти VAR будут добавлены к запросу в этом конкретном пункте меню, но пользователь не сможет изменить его значение.
Вот полный пример для компонента (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>
Надеюсь, это помогло!
Если вы просто хотите добавить ссылку на представление в список, создайте 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>
Сохраните файл, и ссылка появится в списке пунктов меню
По-видимому, вам также нужны теги меню администрирования в вашем установочном XML-файле. http://forum.joomla.org/viewtopic.php?p=706714
Это сработало для меня
<administration> <menu>COM_COMPONET</menu> <submenu> etc... </submenu>
Думаю, это то, что Панайотис пытался сказать
Кроме того, есть еще одна загвоздка. В установочном XML-файле компонента, в разделе теги должны быть присутствуйте, даже если вам не нужно меню.
Если они отсутствуют, то вам никогда не дадут возможность добавления этого компонента в пункт меню, потому что типа там не будет: -)
Кроме того, имена файлов альтернативного представления не должны быть записаны с подчеркиванием.
table_catalog.xml table_catalog.php table_catalog_item.php
Не сработало - в списке "Тип элемента меню" не было новой опции. Но
tablecatalog.xml tablecatalog.php tablecatalog_item.php
Имена файлов работают идеально. Я потерял целый час, раскрывая проблему.