在 Joomla 中突出显示活动菜单项

问题描述 投票:0回答:2
php joomla
2个回答
3
投票

试试这个,这是 mod_mainmenu 的代码(覆盖):

<?php

// no direct access
defined('_JEXEC') or die('Restricted access');

if ( ! defined('fancyMenuPatch') ) 
{
  function fancyMenuPatch($result,$tag){
    $menu   = JSite::getMenu();
    $active = $menu->getActive();

    // Add to the start of the UL tag.
    $begin_ul = "<ul id=\"top-nav\" class=\"flatList\">";
    $begin_span = "<span class=\"embed embed-top-nav\">";

    $home_p = "Home</span><p>news, highlights</p></a>";
    $watch_p = "Watch UNC-TV</span><p>schedule, programs</p></a>";
    $learn_p = "Learn</span><p>education, unc-tv kids</p></a>";
    $support_p = "Support Us</span><p>pledge, volunteer, corporate</p></a>";
    $contact_p = "Contact</span><p>feedback, connect, share</p></a>";

    // do the replacements
    $result = str_replace("<ul class=\"menu\">",$begin_ul, $result);
    $result = str_replace("<span>", $begin_span, $result);
    $result = str_replace("Home</span></a>",$home_p,$result);
    $result = str_replace("Watch UNC-TV</span></a>",$watch_p,$result);
    $result = str_replace("Learn</span></a>",$learn_p,$result);
    $result = str_replace("Support Us</span></a>",$support_p,$result);
    $result = str_replace("Contact</span></a>",$contact_p,$result);

    return $result;
  }
  define('fancyMenuPatch', true);
}

if ( ! defined('modMyMainMenuXMLCallbackDefined') )

  {

  function modMyMainMenuXMLCallback(&$node, $args)

  {

  $user  = &JFactory::getUser();

  $menu  = &JSite::getMenu();

  $active  = $menu->getActive();

  $path  = isset($active) ? array_reverse($active->tree) : null; if (($args['end']) && ($node->attributes('level') >= $args['end']))
  {

  $children = $node->children();

  foreach ($node->children() as $child)

  {

  if ($child->name() == 'ul') {

  $node->removeChild($child);

  }

  }

  }

 if ($node->name() == 'ul') {

  foreach ($node->children() as $child)

  {

  if ($child->attributes('access') > $user->get('aid', 0)) {

  $node->removeChild($child);

  }

  }

  }

 if (($node->name() == 'li') && isset($node->ul)) {

  $node->addAttribute('class', 'parent');

  }

 if (isset($path) && in_array($node->attributes('id'), $path))

  {

  if ($node->attributes('class')) {

  $node->addAttribute('class', $node->attributes('class').' active');

  } else {

  $node->addAttribute('class', 'active');

  }

  }

  else

  {

  if (isset($args['children']) && !$args['children'])

  {

  $children = $node->children();

  foreach ($node->children() as $child)

  {

  if ($child->name() == 'ul') {

  $node->removeChild($child);

  }

  }

  }

  }

 if (($node->name() == 'li') && ($id = $node->attributes('id'))) {

  if ($node->attributes('class')) {

  $node->addAttribute('class', $node->attributes('class').' item'.$id);

  } else {

  $node->addAttribute('class', 'item'.$id);

  }

  }

 if (isset($path) && $node->attributes('id') == $path[0]) {

  $node->addAttribute('id', 'current');

  } else {

  $node->removeAttribute('id');

  }

  $node->removeAttribute('level');

  $node->removeAttribute('access');



  }

  define('modMyMainMenuXMLCallbackDefined', true);

}

ob_start();

modMainMenuHelper::render($params, 'modMyMainMenuXMLCallback');
$menu_html = ob_get_contents();
ob_end_clean(); 

if($params->get('menutype')=="mainmenu"){
  $tag = $params->get('tag_id');
}

//output the menu!
echo fancyMenuPatch($menu_html,$tag);
?>

1
投票

检查你的template文件夹,有一个template.css文件,你可以在那里找到!

© www.soinside.com 2019 - 2024. All rights reserved.