Since version 4.6.0, Tags (topics) and Hashtags can be used at the same time. So, we prepare this tutorial to integrate your app with both of them.

Note: we will use theĀ To Do List app as an example for this tutorial.

Tags

How to use?

{if Phpfox::isModule('tag') && Phpfox::getParam('tag.enable_tag_support')}
    {module name='tag.add' sType='todo'}
{/if}

In controller of Edit page, we need to get tags list of edited item

if (Phpfox::isModule('tag') && Phpfox::getParam('tag.enable_tag_support')) {
    $todo['tag_list'] = Phpfox::getService('tag')->getForEdit('todo', $id);
}
// Add this php code in service add
if (Phpfox::isModule('tag') && Phpfox::getParam('tag.enable_tag_support')) {
    if (isset($aVals['tag_list']) && ((is_array($aVals['tag_list']) && count($aVals['tag_list'])) || (!empty($aVals['tag_list'])))) {
        Phpfox::getService('tag.process')->add('todo', $iItemId, Phpfox::getUserId(), $aVals['tag_list']);
    }
}
// Add this php code in service update
if (Phpfox::isModule('tag') && Phpfox::getParam('tag.enable_tag_support')) {
    if (Phpfox::isModule('tag') && isset($aVals['tag_list']) && !empty($aVals['tag_list'])) {
        Phpfox::getService('tag.process')->update('todo', $aVals['task_id'], $aVals['user_id'], $aVals['tag_list']);
    }
}
// Add this php code in controller of detail page to get tags list
if (Phpfox::isModule('tag') && Phpfox::getParam('tag.enable_tag_support')) {
    $aTags = Phpfox::getService('tag')->getTagsById('todo',
        $id);
    if (isset($aTags[$id])) {
        $aItem['tag_list'] = $aTags[$id];
    }
}
<!-- Add this code in view template -->
{if isset($aItem.tag_list)}
    {module name='tag.item' sType='todo' sTags=$aItem.tag_list iItemId=$aItem.task_id iUserId=$aItem.user_id sMicroKeywords='keywords'}
{/if}

/**
* @return string
*/
public function getTagLink()
{
    return Phpfox_Url::instance()->makeUrl('to-do-list.tag');
}

Hashtags

How to use?

// Add this php code in service add
if (Phpfox::isModule('tag') && Phpfox::getParam('tag.enable_hashtag_support')) {
    Phpfox::getService('tag.process')->add('todo', $iItemId, Phpfox::getUserId(), $aVals['description'], true);
}
// Add this php code in service update
if (Phpfox::isModule('tag') && Phpfox::getParam('tag.enable_hashtag_support')) {
    Phpfox::getService('tag.process')->update('todo', $aVals['task_id'], $aTodo['user_id'], $aVals['description'], true);
}
{$aItem.description|parse}