Форум русской поддержки Joomla!® CMS
03.12.2016, 23:46:08 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Динамическая модификация ссылок для пунктов меню своего компонента

 (Прочитано 278 раз)
0 Пользователей и 1 Гость смотрят эту тему.
NeuroZ
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 129


Разработка сайтов и J! расширений под ключ


« : 14.01.2016, 12:56:51 »

Смысл работы должен быть такой, как в K2 катагориях.
Есть компонент, который создает категории. В виде лежит файл манифеста отвечающий за меню views/categories/tmpl/default.xml
Код:
<?xml version="1.0" encoding="utf-8"?>
<metadata>
    <layout title="COM_PHOENIX_MANUFACTURERS">
    </layout>
    <fields name="request">
        <fieldset name="request" addfieldpath="/administrator/components/com_mycomponent/models/fields">
            <field name="id"
                   type="category"
                   label="CATEGORIES"
                   description="CATEGORIES"
                   required="true"
                   edit="true"
                   clear="false"
            />
        </fieldset>
    </fields>
</metadata>

Далее по пути /administrator/components/com_mycomponent/models/fields/category.php вызывается код с запросами за категориями из бд.
И возвращается в виде селекта. С этим проблем нет.
Проблема возникает в другом:
Пункт меню не сохраняет ссылку должным образом (потому что я не знаю как это сделать). К примеру мне надо получить:
index.php?option=com_mycomponent&view=categories&id=10
а я получаю ту же ссылку, что и без выборки категории (т.е. как в ссылку пункта меню добавить этот самый id ?):
index.php?option=com_mycomponent&view=categories

p.s. также при сохранении пункта меню - не сохраняет выбранный селект (но то уже потом буду разбираться)
p.p.s. Аналогичный функционал реализован через модальное окно в компоненте контента или контактов, но там еще больше вопросов по коду возникает..
Записан
Aleks.Denezh
Практически профи
*******

Репутация: +372/-4
Offline Offline

Пол: Мужской
Сообщений: 2762



« Ответ #1 : 14.01.2016, 14:08:13 »

Понятно что ничего не понятно!
По такой конструкции у меня все работает, проверьте может кодировка XML файла не в той кодировке (не utf-8)? Может где то ID не возвращает...
Записан
robert
Профи
********

Репутация: +343/-11
Offline Offline

Пол: Мужской
Сообщений: 3568


« Ответ #2 : 14.01.2016, 14:32:58 »

Может быть, стоит назвать тип поля не "category", а по-другому? category - это как бы уже core type. И нелишне будет добавить аттрибут extension.
« Последнее редактирование: 14.01.2016, 14:55:46 от robert » Записан
Aleks.Denezh
Практически профи
*******

Репутация: +372/-4
Offline Offline

Пол: Мужской
Сообщений: 2762



« Ответ #3 : 14.01.2016, 14:59:37 »

да кстати Роберту  + за внимательность, а где в вашем поле type="category" аттрибут extension из которого будут браться категории? Без него это поле пахать вообще не должно! И естественно у вас не будет какого либо ID появляться!
Записан
NeuroZ
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 129


Разработка сайтов и J! расширений под ключ


« Ответ #4 : 14.01.2016, 15:28:16 »

Разобрался...
Дело было не в extension и не в type="category".
Код, который был в папаук fields, отвечающий за вывод кастомного селекта был скопирован с другой части сайта, где был серьезно перепилен и вырезан атрибут name. И вот из-за отсутствия name в форме - сохранение происходило некорректно. Но все равно спасибо за помощь Azn
p.s. Extension, на сколько я понял, нужен для явного указания к какому компоненту должен ссылаться field из манифеста. Вот только нужен он, только в тех случаях, когда мы хотим в нашем компоненте обратиться к филду из другого компонента.
Записан
Aleks.Denezh
Практически профи
*******

Репутация: +372/-4
Offline Offline

Пол: Мужской
Сообщений: 2762



« Ответ #5 : 14.01.2016, 15:38:35 »

p.s. Extension, на сколько я понял, нужен для явного указания к какому компоненту должен ссылаться field из манифеста. Вот только нужен он, только в тех случаях, когда мы хотим в нашем компоненте обратиться к филду из другого компонента.
Вообще то если не указан extension то будет так

и предупреждение будет о том что не указан аттрибут
Записан
NeuroZ
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 129


Разработка сайтов и J! расширений под ключ


« Ответ #6 : 14.01.2016, 16:22:12 »

Вообще то если не указан extension то будет так

и предупреждение будет о том что не указан аттрибут
Ааааааа вон оно что.... спасибо!
Записан
robert
Профи
********

Репутация: +343/-11
Offline Offline

Пол: Мужской
Сообщений: 3568


« Ответ #7 : 14.01.2016, 21:26:54 »

Разобрался...
Дело было не в extension и не в type="category".
Код, который был в папаук fields, отвечающий за вывод кастомного селекта был скопирован с другой части сайта, где был серьезно перепилен и вырезан атрибут name. И вот из-за отсутствия name в форме - сохранение происходило некорректно.
Не понял. Разве name не задается в views/categories/tmpl/default.xml?

И, будьте добры, поделитесь секретом, как вы могли этого добиться
Смысл работы должен быть такой, как в K2 катагориях.
Есть компонент, который создает категории. В виде лежит файл манифеста отвечающий за меню views/categories/tmpl/default.xml
Показать текстовый блок
Далее по пути /administrator/components/com_mycomponent/models/fields/category.php вызывается код с запросами за категориями из бд.
И возвращается в виде селекта. С этим проблем нет.
? Чтобы не быть голословным, я создал 2 файла в папке com_mycomponent/models/fields: category.php и mycategory.php. Так вот, при указании типа поля = "category" опции всегда возвращаются отсюда: libraries/legacy/form/field/category.php.
« Последнее редактирование: 15.01.2016, 00:55:49 от robert » Записан
NeuroZ
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 129


Разработка сайтов и J! расширений под ключ


« Ответ #8 : 15.01.2016, 12:11:35 »

Не понял. Разве name не задается в views/categories/tmpl/default.xml?
И, будьте добры, поделитесь секретом, как вы могли этого добиться?
если Вы создаете кастомный тип поля, его поведение полностью можно переопределить в php файле, который надо добавить в папку models/fields (файл должен быть одноименным с типом поля).
Записан
robert
Профи
********

Репутация: +343/-11
Offline Offline

Пол: Мужской
Сообщений: 3568


« Ответ #9 : 15.01.2016, 12:27:17 »

если Вы создаете кастомный тип поля, его поведение полностью можно переопределить в php файле, который надо добавить в папку models/fields (файл должен быть одноименным с типом поля).
Не нужно меня этому учить. Меня интересует конкретно ваш случай:
-вы создали свой тип поля,
-назвали его именем существующего типа (причем core type) - category,
IMHO, система не будет обращать внимания на ваш тип, она просто берет его из своих библиотек. По крайней мере, на практике у меня вышло так, еще не было времени заглянуть в код.
Так вот, у вас этот новый, но со старым именем category, тип поля вообще существует в реальности или это просто болтовня?

Вот эта чушь от вас вселяет в меня сомнение:
p.s. Extension, на сколько я понял, нужен для явного указания к какому компоненту должен ссылаться field из манифеста. Вот только нужен он, только в тех случаях, когда мы хотим в нашем компоненте обратиться к филду из другого компонента.
« Последнее редактирование: 15.01.2016, 12:31:15 от robert » Записан
dmitry_stas
Профи
********

Репутация: +794/-4
Online Online

Сообщений: 7736



« Ответ #10 : 15.01.2016, 13:20:07 »

IMHO, система не будет обращать внимания на ваш тип, она просто берет его из своих библиотек. По крайней мере, на практике у меня вышло так, еще не было времени заглянуть в код.
и у меня тоже. видимо потому что это так и есть Azn
Записан
NeuroZ
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 129


Разработка сайтов и J! расширений под ключ


« Ответ #11 : 15.01.2016, 13:34:56 »

Уточню, я его назвал не так. Просто изменил имя на "бла-бла". Этим "бла-бла" оказалась "category" (фактически у меня в коде другое имя). И не учел что оно зарезервировано. Я не учу, вы просто спросили "как" - я ответил. Про тип category вообще не спорю не чуть.
Просто надо было написать: ИЗВИНИТЕ, Я УМЫШЛЕНО ИЗМЕНИЛ ИМЯ ТИПА ПРИ ПОСТАНОВКЕ ЗАДАЧИ НА ФОРУМЕ, И НЕ ПОДУМАЛ, ЧТО ЭТО ЗАРЕЗЕРВИРОВАННЫЙ ТИП СИСТЕМЫ Azn
Цитировать
Вот эта чушь от вас вселяет в меня сомнение
Я даже подчеркнул: на сколько я понял. Чушь - это не верное утверждение. А я не утверждаю.
Записан
NeuroZ
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 129


Разработка сайтов и J! расширений под ключ


« Ответ #12 : 15.01.2016, 13:36:16 »

Цитировать
тип поля вообще существует в реальности или это просто болтовня?
Это просто болтовня. Просто смысл изначального вопроса был в другом, и причина в другом, и я не подумал, что так вот боком выйдет мне это имя "category", которое не существует в реальности на моем сайте...
« Последнее редактирование: 15.01.2016, 13:40:50 от NeuroZ » Записан
robert
Профи
********

Репутация: +343/-11
Offline Offline

Пол: Мужской
Сообщений: 3568


« Ответ #13 : 15.01.2016, 14:06:28 »

ОК, все нормально. Просто ваш ответ
Разобрался...
Дело было не в extension и не в type="category".
+ ваша неточность отняли у меня некоторое время на проверку.
Записан
NeuroZ
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 129


Разработка сайтов и J! расширений под ключ


« Ответ #14 : 15.01.2016, 16:18:25 »

ОК, все нормально. Просто ваш ответ+ ваша неточность отняли у меня некоторое время на проверку.
Виноват Sad
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet