tags:

views:

104

answers:

3

Hi, This question is bit specific for joomla

I have a main menu consisting of : Home|About US|Privacy Policy|Portfolio|Contacts US. Each menu item is link to an article.

Now on the complete site there are many places in the components and modules where I need to show two links : Privacy Policy & Portfolio.

Can someone please guide me? I do not want to hard code the links as the item id would differ in production.

Thanks, Tanmay

+1  A: 

There are 2 ways you can do it:

Option 1:

Joomla loads menus every time page is loads. You can access the menus by calling the following methods.

// Get default menu - JMenu object, look at JMenu api docs
$menu = JFactory::getApplication()->getMenu();

// Get menu items - array with menu items
$items = $menu->getMenu();

// Look through the menu structure, once you understand it
// do a loop and find the link that you need.
var_dump($items);

This method is faster because you don't need to query database. Simple operation in memory.

Option 2:

Get it from the database. Either get menu link from jos_menu based on alias or something, or get article # from jos_content by article alias, then create the link

$db = JFactory::getDBO();

//  Load by menu alias
$query = "SELECT link FROM #__menu WHERE alias = 'privacy-policy'";
$db->setQuery($query);
$url = $db->loadResult();
$url = JRoute::_($url);


//  Load by article alias
$query = "SELECT id FROM #__content WHERE alias = 'privacy-policy'";
$db->setQuery($query);
$articleId = (int) $db->loadResult();
$url = JRoute::_("index.php?option=com_content&view=article&id=$articleId");
Alex
Thanks Alex. I opted option 2
jtanmay
A: 
<?php

$menuitemid = JRequest::getInt( 'Itemid' );
if ($menuitemid)
{
    $menu = JSite::getMenu();
    $menuparams = $menu->getParams( $menuitemid );
    $params->merge( $menuparams );
}

$propvalue= $params->get('property_name');

?>
ursitesion
this will not work because if you are in the component view the Itemid will be of the menu item that leads to the component. This is way off.
Alex
A: 

Hi,

I was using the DB query as mentioned by Alex to grab the links for menu item. And this was working good.

Now I have changed it, not sure if its right way or not, but it works for me.

As I have created the alias, I have two fix menu items, so I am directly pointing to the alias, instead of searching through database. And as I have SEF URL ON, it directly takes me to that article :)

I hope, its not confusing and might help some one.

Thanks, Tanmay

jtanmay