Теги joomla 3.x в пользовательском компоненте не выполняются

Запуск Joomla 3.3.0-dev

Я следую за информацией, размещенной здесь о добавлении поддержки тегов к стороннему компоненту.

Я добавил тип содержимого в таблицу #__content_types и изменил свой файл table следующим образом:

 class MycomponentTableElement extends JTable { public $tagsHelper = null; // failed when protected and public public function __construct(&$_db) { parent::__construct('#__mycomponent', 'id', $_db); // Add Joomla tags JObserverMapper::addObserverClassToClass('JTableObserverTags', 'MycomponentTableElement', array('typeAlias' => 'com_mycomponent.element')); //$this->_observers = new JObserverUpdater($this); JObserverMapper::attachAllObservers($this); // failed with or without this line } 

Я добавил поле тега в шаблон edit , и он работал нормально – но когда я сохраняю объект, я получаю следующую ошибку:

 Save failed with the following error: Unknown column 'tagsHelper' in 'field list' 

Что мне не хватает? Нет никаких других шагов (помимо шагов переднего плана!), Которые упомянуты. Похоже, мне нужно изменить модель, но эта информация не применима.

благодаря

« Эта страница нуждается в редактировании копии », и это действительно так!

Я также выполняю начальные шаги, описанные на странице

  • Зарегистрируйте 'Тип контента' для расширений (-ов)
  • Добавьте «методы наблюдателя» в класс (-ы) расширения
  • Добавить «метки полей» в формы редактирования расширения

Но для создания тега поля для пользовательских расширений мне нужно явно указать значение поля формы в файле вида бэкэнда:

 $tagsHelper = new JHelperTags; $this->form= $this->get('Form'); $this->form->setValue('tags', null, $tagsHelper->getTagIds( $this->item->id, 'com_custom.viewname') ); 

таким образом, на странице редактирования все, кажется, работает правильно. Конечно, существует лучший и более чистый метод, но пока страница doc не будет обновлена, это может помочь кому-то!

1- Добавить поле тега в файл формы xml или отредактировать файл шаблона

2- Изменить #__content_types таблицы #__content_types :

 function __construct(&$db) { parent::__construct('#__ir_products', 'id', $db); JTableObserverTags::createObserver($this, array('typeAlias' => 'com_itemreview.product')); } 

3. Изменить функцию getItem файла модели:

 public function getItem($pk = null) { $item = parent::getItem($pk); if (!empty($item->id)) { $item->tags = new JHelperTags; $item->tags->getTagIds($item->id, 'com_yourcomponent.yourmodel'); } return $item; }