Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 9 Ответов
  • 3585 Просмотров
*

Glip

  • Осваиваюсь на форуме
  • 23
  • 1 / 0
Надо сделать горизонтальное меню с картинками без текста для каждого пункта меню. Решил делать это стандартным модулем mod_mainmenu. Для того, чтобы добавить картинки в меню хочу к каждому пункту добавить уникальный класс вида "truck_n", где n - числа от 1 до количества пунктов меню. Тогда легко будет через CSS файл присвоить каждому пункту свою картинку. Для этого пытаюсь подправить файл default.php, который отвечает за вывод меню (прилагается). Проблема в том, что php практически не знаю. Догадался где нужно ковырять. Добился того, что добавляется class="truck1":
Код: html4strict
<div class="nav">
<ul class="artmenu">
<li class="item28">
<a href="/index.php?option=com_content&amp;view=article&amp;id=25&amp;Itemid=28">
<span class="truck1"><span>Truck</span></span>
</a></li>
<li class="item29">
<a href="/index.php?option=com_content&amp;view=article&amp;id=22&amp;Itemid=29">
<span class="truck1"><span>Long truck</span></span>
</a></li>

в файле default.php добавил строку 95:
Код: php
$span->addAttribute('class','truck'.++$idmenu);
где $idmenu - порядковый номер пункта меню от 1 до 6 (в моем случае)
только не могу добиться, чтобы $idmenu для каждого последующего пункта меню увеличивался на 1. Помогите, пожалуйста.  !

[вложение удалено Администратором]
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Не надо ничего ковырять, для каждого элемента списка меню (если в настройках стоит плоский список) генерится уникальный класс, к примеру из вашего же кода <li class="item29">
Вот для item29 в стилях и назначайте картинку фоновую
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Glip

  • Осваиваюсь на форуме
  • 23
  • 1 / 0
Тоже вариант. Но тогда до того, как создадутся окончательные статьи не будет известен их id. Пока у меня сайт не заполнен контентом. То что есть - это просто временные статьи.
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
Тоже вариант. Но тогда до того, как создадутся окончательные статьи не будет известен их id. Пока у меня сайт не заполнен контентом. То что есть - это просто временные статьи.
так в чем проблема набить сайт контентом (не обязательно все статьи, главное структура меню) и после за 20 минут набросать заранее подготовленные цифирьки Itemid в болванку стилей (оттестированную и отстроенную на полигоне заранее)
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

ankoch

  • Захожу иногда
  • 498
  • 50 / 1
Не нравится мне, что этот класс в Joomla никакой информативности не несёт, да и то, что если на место одного пункта меню захочется расположить какой-то другой, то придётся править CSS и добавлять новый класс с этим самым itemid.

Как бы сделать так, чтобы помимо itemid добавлялся класс с псевдонимом пункта меню?
*

SmokerMan

  • Гуру
  • 5293
  • 720 / 26
Как бы сделать так, чтобы помимо itemid добавлялся класс с псевдонимом пункта меню?
какая разница  id или псевдоним? Это уникальные значения.
*

ankoch

  • Захожу иногда
  • 498
  • 50 / 1
При создании другого пункта я запросто могу прописать старый псевдоним и всё в порядке, а с id такой номер не пройдёт.

Хотя может было бы удобно задавать свой собственный класс для нужного пункта меню. Захотел - добавил свой класс, не захотел - останется только с itemid.
« Последнее редактирование: 23.12.2010, 11:36:19 от ankoch »
*

SmokerMan

  • Гуру
  • 5293
  • 720 / 26
Да, странно конечно это как-то. Ну так добавляйте что хотите никто же не мешает то :)
вот пример с псевдонимом в разметке default.php
Цитировать
   if (($node->name() == 'li') && ($id = $node->attributes('id'))) {
      if ($node->attributes('class')) {
         $node->addAttribute('class', $node->attributes('class').' item'.$id.' '.$menu->getItem($id)->alias);
      } else {
         $node->addAttribute('class', 'item'.$id.' '.$menu->getItem($id)->alias);
      }
   }
*

ankoch

  • Захожу иногда
  • 498
  • 50 / 1
SmokerMan спасибо +, попробую.
*

dron

  • Завсегдатай
  • 1581
  • 16 / 10
добрый день.

а я использую коммерческое меню. у него свой default.php. вот его код: 

Код
<?php

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

//
if ( ! defined('modMainMenuXMLCallbackDefined') )
{
//
function modMainMenuXMLCallback(&$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->attributes('level') == 1)
{
//
if ($node->attributes('class'))
{
//
$node->addAttribute('class', $node->attributes('class').' level1');
}
else //
{
//
$node->addAttribute('class', 'level1');
}
}
//
if($node->name() == 'li')
{
//
$children = $node->children();
//
if ($node->attributes('level') == 1)
{

if(isset($children[1]) && $children[1]->name() == 'ul')
{
//
if($node->attributes('class'))
{
//
$node->addAttribute('class', $node->attributes('class').' topli');
}
else //
{
//
$node->addAttribute('class', ' topli');
}
}
//
if ($children[0]->name() == 'a')
{
//
if($node->attributes('class'))
{
//
$children[0]->addAttribute('class', $node->attributes('class').' topdaddy');
}
else //
{
//
$children[0]->addAttribute('class', 'topdaddy');
}
}
}
}
//
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 (isset($path) && $node->attributes('id') == $path[0])
{
//
$node->addAttribute('id', 'current');
}
else //
{
//
$node->removeAttribute('id');
}
//
$node->removeAttribute('level');
//
$node->removeAttribute('access');
}
//
define('modMainMenuXMLCallbackDefined', true);
}
//
modMainMenuHelper::render($params, 'modMainMenuXMLCallback');

где здесь нужно дописать .' '.$menu->getItem($id)->alias); что бы заполучить id для каждого пункта меню?

заранее спасибо!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

убрать из меню заголовки h3

Автор nexter

Ответов: 19
Просмотров: 6472
Последний ответ 03.02.2020, 18:49:47
от durte
При добавлении нового пункта меню не отображается содержимое

Автор Denko

Ответов: 2
Просмотров: 2149
Последний ответ 16.01.2020, 18:40:55
от Denko
Не нажимается пункт меню на мобильной версии

Автор Sensession

Ответов: 7
Просмотров: 3106
Последний ответ 04.01.2020, 16:45:27
от xpank
Не отображаются пункты в меню

Автор physic

Ответов: 20
Просмотров: 21402
Последний ответ 20.09.2019, 16:54:01
от beliyadm
Как в ARI Ext Menu добиться работы параметра "Показать в меню"?

Автор vasmed

Ответов: 1
Просмотров: 2364
Последний ответ 01.03.2019, 11:12:18
от vasmed