Customize user tabs in member's area
Let's say you want to add a tab to the member's area and remove the Add/Renew tab.
Add this code to site.php file:
Add a single tab
Am_Di::getInstance()->hook->add(Am_Event::USER_MENU, function (Am_Event $event) {
$user = $event->getUser();
$menu = $event->getMenu();
$menu->addPage(array(
'id' => 'mypage',
'label' => ___('Do The Thing'),
'uri' => '/the.thing',
'order' => 2,
));
});
Add a tab with subitems
Am_Di::getInstance()->hook->add(Am_Event::USER_MENU, function (Am_Event $event) {
$user = $event->getUser();
$menu = $event->getMenu();
$menu->addPage(
array(
'id' => 'with-subitem',
'label' => 'With Subitems',
'uri' => '#',
'pages' => array(
array(
'id' => 'subitem1',
'label' => 'Subitem 1',
'uri' => '/subitem-1'
),
array(
'id' => 'subitem2',
'label' => 'Subitem 2',
'uri' => '/subitem-2'
)
)
)
);
});
Remove the default Add/Renew tab
Am_Di::getInstance()->hook->add(Am_Event::USER_MENU, function (Am_Event $event) {
$user = $event->getUser();
$menu = $event->getMenu();
if ($page = $menu->findOneById('add-renew-default')) {
$menu->removePage($page);
}
});
For a custom member signup form, replace default with the form code. For
example, a form with the code renew uses the menu ID add-renew-renew.
Remove a subitem from a tab
Am_Di::getInstance()->hook->add(Am_Event::USER_MENU, function (Am_Event $event) {
$menu = $event->getMenu();
if (($item = $menu->findOneById('aff')) && ($subitem = $item->findOneById('aff-payout'))) {
$item->removePage($subitem);
}
});
Add a subitem to an existing tab
Am_Di::getInstance()->hook->add(Am_Event::USER_MENU, function (Am_Event $event) {
$user = $event->getUser();
$menu = $event->getMenu();
if ($page = $menu->findOneById('aff')) {
$page->addPage(array(
'id' => 'my-subitem',
'label' => ___('Subitem'),
'uri' => '/sub.item',
'target' => '_blank', // You can set the target attribute if necessary
'order' => 10,
));
}
});
Add a tab based on product access
This example adds a tab if the user has an active subscription to product ID 1.
Am_Di::getInstance()->hook->add(Am_Event::USER_MENU, function (Am_Event $event) {
$menu = $event->getMenu();
/** @var User|null $user */
$user = $event->getUser();
if ($user && in_array(1, $user->getActiveProductIds())) {
$menu->addPage(array(
'id' => 'mypage',
'label' => ___('Do The Thing'),
'uri' => '/the.thing',
'order' => 2,
));
}
});