简体   繁体   中英

joomla 3.x tags in custom component fails

Running Joomla 3.3.0-dev

I'm following the info posted here about adding tag support to a third-party component.

I've added the content type to the #__content_types table and modified my table file like this:

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  
    }

I added the tag field in the edit template, and it worked fine-- but when I save an object I get the following error:

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

What am I missing? There's no other steps (besides front-end steps!) that are mentioned. It seems like I need to modify the model but that info is not applicable.

Thanks

" This Page Needs Copy Editing " and it's really true!

I also follow initial steps as described in page

  • Register a 'Content type' for the extension view(s)
  • Add 'Observer methods' to the extension table class(es)
  • Add 'Tag fields' to the extension edit forms

But to make field tag works on custom extensions I need to explicit set form field value in view file of backend:

$tagsHelper = new JHelperTags;

$this->form= $this->get('Form');

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

in this way on edit page all seems to work correctly.. surely exist better and more clean method, but until doc page will not be updated, this can help someone!

1- Add tag field to your xml form file or edit template file

2- Modify #__content_types table file:

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

3- Modify model file getItem function:

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;
    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM