Новости Joomla

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

websalamat

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Этот вопрос решался в Joomla 2.5, но требует доработки.
Неоднократно слышал мнение, что активный пункт меню не должен быть ссылкой. Т.е. я кликнул на ссылку, она стала активной, к примеру обрамленной рамочкой, а название пункта вместо ссылки становится текстом. В стандартном модуле "Навигация" оно так и показывает местоположение.

В Joomla 2.5 вопрос решался хаком модуля меню и вроде все хорошо, НО ЕСТЬ ПроблемА!
Есть пункт меню "Новости", у которого в настройках поставил, чтобы отображался только первый уровень. И с родительским уровнем "Новости" создал еще подменю и в модуле прописал, чтобы показывался только второй уровень на странице "Новости"
Получилось вот так:


Такая настройка нужная для того, чтобы одновременно был активен пункт новости и одновременно активен пункт Экономика.
Вот в этом случае проблема с пунктом меню и проявляется, т.к. если применить хак, который был приемлим для Joomla 2.5, то он делал неактивным и пункт "Новости" и пункт "Экономика".

По сути должно работать так: Кликнкул по пункту Новости - он стал неактивным. Затем кликнул по пункту "Экономика" - этот пункт стал неактивным, а "Новости" снова стал ссылкой, чтобы можно было вернуться к списку новостей. При этом они оба должны быть выделенными, чтобы человек понимал, что он находится в разделе Новости и его подразеле "Экономика".

Как это воспроизвести?
У студии Лебедева на сайте меню работает подобным образом.
*

Shustry

  • Moderator
  • 6434
  • 745 / 3
Я не знаю, про какой хак идёт речь. Начиная с версии 1,6 это решается путём оверрайда шаблона модуля меню. В вашем случае нужно условие писать не if ($item->current) {}, а if ($item->active) {}.
*

websalamat

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
В Joomla 3 по пути:
modules\mod_menu\tmpl\default.php
не нашел строчки с  if ($item->current)

Но заменил
   if (($item->id == $active_id) OR ($item->type == 'alias' AND $item->params->get('aliasoptions') == $active_id))
   {
      $class .= ' В ЭТОМ МЕСТЕ с curent НА active';
   }

Теперь в подменю новостей все показывается как надо, а вот в первом уровне, где новости, история и т.д. кликаю на ссылку - она выделяется и остается ссылкой. Что делаю не так?
*

Shustry

  • Moderator
  • 6434
  • 745 / 3
Вы же класс заменили, а не разметку. Ссылка так и осталась ссылкой. Нужно это условие добавить в вывод пункта меню. Файл …default_url. Только править нужно естественно не в модуле, а в папке шаблона.
*

websalamat

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Код
<?php
/**
 * @package     Joomla.Site
 * @subpackage  mod_menu
 *
 * @copyright   Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

// Note. It is important to remove spaces between elements.
$class = $item->anchor_css ? 'class="' . $item->anchor_css . '" ' : '';
$title = $item->anchor_title ? 'title="' . $item->anchor_title . '" ' : '';

if ($item->menu_image)
{
$item->params->get('menu_text', 1)?
$linktype = '<img src="' . $item->menu_image . '" alt="' . $item->title . '" /><span class="image-title">' . $item->title . '</span> ' :
$linktype = '<img src="' . $item->menu_image . '" alt="' . $item->title . '" />';
}
else
{
$linktype = $item->title;
}

$flink = $item->flink;
$flink = JFilterOutput::ampReplace(htmlspecialchars($flink));

switch ($item->browserNav) :
default:
case 0:
?><a <?php echo $class; ?>href="<?php echo $flink; ?>" <?php echo $title; ?>><?php echo $linktype; ?></a><?php
break;
case 1:
// _blank
?><a <?php echo $class; ?>href="<?php echo $flink; ?>" target="_blank" <?php echo $title; ?>><?php echo $linktype; ?></a><?php
break;
case 2:
// Use JavaScript "window.open"
$options = 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,' . $params->get('window_open');
?><a <?php echo $class; ?>href="<?php echo $flink; ?>" onclick="window.open(this.href,'targetWindow','<?php echo $options;?>');return false;" <?php echo $title; ?>><?php echo $linktype; ?></a><?php
break;
endswitch;

Это шаблонный default_url
Но здесь нигде нет current.
Шаблон у меня protostar.

Читал как делают другие, они меняют на

Код
case 0:
if (in_array($item->id, $path) || in_array($aliasToId , $path)){
echo '<span '.$class.'>'.$linktype.'</span>';
}else {
?><a <?php echo $class; ?>href="<?php echo $item->flink; ?>" <?php echo $title; ?>><?php echo $linktype; ?></a><?php
}
break;

Но в этом случае у меня подменю работает как надо, а вот родительское меню где нет подпунктов остается ссылкой.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Пункт меню Текстовый разделитель ведет на главную страницу

Автор zahar_92

Ответов: 8
Просмотров: 2488
Последний ответ 27.07.2023, 13:37:17
от ei-dos
[РЕШЕНО]Скрыть пункт меню на мобильных устройствах

Автор lexxbry

Ответов: 16
Просмотров: 4730
Последний ответ 23.05.2023, 07:22:49
от geral
Цвет фона меню

Автор IhorPH

Ответов: 7
Просмотров: 1156
Последний ответ 21.03.2023, 11:47:29
от marksetter
OffCanvas меню Helix Ultimate добавить текст к иконке

Автор Andre100

Ответов: 2
Просмотров: 2184
Последний ответ 20.03.2023, 12:42:49
от Andre100
OffCanvas меню

Автор Алексей Лоскутов

Ответов: 5
Просмотров: 2266
Последний ответ 13.02.2023, 20:20:37
от dashkov