Новости Joomla

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

zimt42

  • Новичок
  • 7
  • 0 / 0
Пролог: был основательно перерыт как форум, так и за его пределами, рабочее решение так и не найдено.
Версия: 3.6.2.

Задача: есть меню, подменю, они состоят из ссылок, который там всегда есть. Но если мы находимся в одном из пунктов, то он ссылается сам на себя, чего быть не должно. Как избавиться от циклической переадресации? Причём, если мы находимся в /меню3, то он должен быть некликабельным, но если мы находимся в меню3/подменю1, то некликабельным должно быть только подменю1, а меню3 являться ссылкой.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Re: Циклические ссылки в меню
« Ответ #1 : 16.08.2016, 09:08:24 »
написано не очень понятно, лучше бы ссылку на сайт дали.
возможно, вы не используете тип пункта меню Псевдоним, который используется, когда в любом из меню уже есть пункт, ссылающийся на нужную страницу, и ему надо создать дубликат
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Re: Циклические ссылки в меню
« Ответ #2 : 16.08.2016, 12:33:40 »
Шаблон пункта меню переопределяется для этого.
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Re: Циклические ссылки в меню
« Ответ #3 : 16.08.2016, 12:45:04 »
Копируете из modules\mod_menu\tmpl\ в templates\шаблон\html\mod_menu файл default_component.php. Далее оборачиваете вывод ссылки в условие (начиная с 26-й строки):

Код: php
/*начало вставки 1*/
$uri = JURI::current();
$ur = JURI::getInstance( $uri );
$u = $ur->getPath();

if ($u == $item->flink) {
echo '<span class='.$class.'>'.$linktype.'</span>';
} else {
/*конец вставки 1*/

switch ($item->browserNav)
{
default:
case 0:
?><a <?php echo $class; ?>href="<?php echo $item->flink; ?>" <?php echo $title; ?>><?php echo $linktype; ?></a><?php
break;
case 1:
// _blank
?><a <?php echo $class; ?>href="<?php echo $item->flink; ?>" target="_blank" <?php echo $title; ?>><?php echo $linktype; ?></a><?php
break;
case 2:
// Use JavaScript "window.open"
?><a <?php echo $class; ?>href="<?php echo $item->flink; ?>" onclick="window.open(this.href,'targetWindow','toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes');return false;" <?php echo $title; ?>><?php echo $linktype; ?></a>
<?php
break;
}
/*вставка два, только скобка*/
}
/*вставка два кончилась*/

Должно сработать. Не проверял.
*

zimt42

  • Новичок
  • 7
  • 0 / 0
Re: Циклические ссылки в меню
« Ответ #4 : 16.08.2016, 13:43:39 »
Shustry, IDE сразу ругается на этот код, как минимум незакрытый switch, возможно что-то ещё (не силён в PHP). По аналогии вставить не вижу куда, файл default_component выглядит вот так:
Код
<?php
/**
 * @package     Joomla.Site
 * @subpackage  mod_menu
 *
 * @copyright   Copyright (C) 2005 - 2016 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

$attributes = array();

if ($item->anchor_title)
{
$attributes['title'] = $item->anchor_title;
}

if ($item->anchor_css)
{
$attributes['class'] = $item->anchor_css;
}

if ($item->anchor_rel)
{
$attributes['rel'] = $item->anchor_rel;
}

$linktype = $item->title;

if ($item->menu_image)
{
$linktype = JHtml::_('image', $item->menu_image, $item->title);

if ($item->params->get('menu_text', 1))
{
$linktype .= '<span class="image-title">' . $item->title . '</span>';
}
}

if ($item->browserNav == 1)
{
$attributes['target'] = '_blank';
}
elseif ($item->browserNav == 2)
{
$options = 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes';

$attributes['onclick'] = "window.open(this.href, 'targetWindow', '" . $options . "'); return false;";
}

echo JHtml::_('link', JFilterOutput::ampReplace(htmlspecialchars($item->flink)), $linktype, $attributes);
*

zimt42

  • Новичок
  • 7
  • 0 / 0
Re: Циклические ссылки в меню
« Ответ #5 : 16.08.2016, 13:53:46 »
написано не очень понятно, лучше бы ссылку на сайт дали.
Могу показать на примере вашего сайта =)
Идём куда-нибудь в меню, например в http://effrit.com/work/presentations, и с этой страницы вверху в меню также есть ссылка на Презентации, т. е. на саму же себя, а так быть не должно.
И, кстати, ещё бы на главной странице логотип не был кликабельным, но это уже меньшая из проблем, но суть та же.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Re: Циклические ссылки в меню
« Ответ #6 : 16.08.2016, 14:04:30 »
zimt42, надо было ужо картинки пиарить, раз взялись мой сайт раскручивать )).

понял, о чем речь, на одном из сайтов логотип отключал на главной так, а на текущем сайте смысла нет - он не для сео сделан )
ну тогда шаблон вывода ковырять, как Шустрый товарищ завещал ).
но там решение зависит от выбранного модуля меню.
по идее, можно js-скриптом более универсально удалять ссылки на самого себя, но это уже, наверно, для робота не сработает?
*

zimt42

  • Новичок
  • 7
  • 0 / 0
Re: Циклические ссылки в меню
« Ответ #7 : 16.08.2016, 14:07:48 »
effrit, ну SEO это как дополнительный малый фактор, больше смущает именно вопрос логичности и правильности интерфейса. Особенно, когда есть список из подменю, и я в одном из них, то я не должен мочь по нему кликнуть и перезагрузить страницу тем самым.
Да, понимаю, что надо ковырять тот самый файл, встречал это в других ветках, но для других версий, и у меня не сработало. Поэтому и создал тему, т. к. PHP-ковырялки не имею =)
Про js уже тоже мысли закрадываются, но пока ещё теплится надежда решить этот вопрос правильно, а потом костылить.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Re: Циклические ссылки в меню
« Ответ #8 : 16.08.2016, 14:24:19 »
zimt42, просто если со стороны js, то там более понятно, чего делать, и можно универсальный код написать с минимумом подгонки под разные сайты.
смысл в том, что активному меню вешается свой уникальный класс, так что можно скриптом выбирать все ссылки с этим классом (или вложенные в этот класс) и удалять им href-атрибут.

а вообще, да - я обычно просто подсвечиваю активную ссылку и этого хватает.
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Re: Циклические ссылки в меню
« Ответ #9 : 16.08.2016, 14:28:21 »
файл целиком. Свич закрывается в предпоследней строке. Невнимательно смотрели.

Код: php
<?php
/**
 * @package     Joomla.Site
 * @subpackage  mod_menu
 *
 * @copyright   Copyright (C) 2005 - 2015 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;
}
/*начало вставки 1*/
$uri = JURI::current();
$ur = JURI::getInstance( $uri );
$u = $ur->getPath();

if ($u == $item->flink) {
echo '<span class='.$class.'>'.$linktype.'</span>';
} else {
/*конец вставки 1*/

switch ($item->browserNav)
{
default:
case 0:
?><a <?php echo $class; ?>href="<?php echo $item->flink; ?>" <?php echo $title; ?>><?php echo $linktype; ?></a><?php
break;
case 1:
// _blank
?><a <?php echo $class; ?>href="<?php echo $item->flink; ?>" target="_blank" <?php echo $title; ?>><?php echo $linktype; ?></a><?php
break;
case 2:
// Use JavaScript "window.open"
?><a <?php echo $class; ?>href="<?php echo $item->flink; ?>" onclick="window.open(this.href,'targetWindow','toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes');return false;" <?php echo $title; ?>><?php echo $linktype; ?></a>
<?php
break;
} //вот тут свич закрывается
/*вставка два, только скобка*/
}
/*вставка два кончилась*/
*

zimt42

  • Новичок
  • 7
  • 0 / 0
Re: Циклические ссылки в меню
« Ответ #10 : 16.08.2016, 14:48:35 »
файл целиком.
Прошу прощения, я ожидал (не знаю почему) endswitch, в любом случае сначала IDE ругался, а на этот файл целиком — нет.
Но самое главное-то! Заработало! Всё поразъехалось, но это вопрос в подправке стилей, фигня.
Просто огромное спасибо, вот уж не ожидал, что не смогу чего-то нагуглить, пойду на форум и получу ответ-решение! Осталось только вопрос с логотипом-ссылкой на главной решить =)
*Убежал на радостях в закат*
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Re: Циклические ссылки в меню
« Ответ #11 : 16.08.2016, 14:58:09 »
Незачто. Файлы разные возможно потому, что мой из модуля непосредственно, а не из шаблона.
*

zimt42

  • Новичок
  • 7
  • 0 / 0
Re: Циклические ссылки в меню
« Ответ #12 : 16.08.2016, 17:41:19 »
Скинутый мною файл, кстати, тоже был из модуля, а не из шаблона. Видать в недавнем обновлении поменялось у них что-то.
*

Mr.Can

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
Re: Циклические ссылки в меню
« Ответ #13 : 12.02.2017, 03:11:47 »
Если тема еще жива, подскажите пожалуйста: Актуален ли данный метод для Joomla 3.6.5 или в силу произошедших за это время изменений и выпусков новых версий, нужно искать другой способ для решения этого вопроса? Спасибо за любую информацию.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Циклические ссылки в меню
« Ответ #14 : 12.02.2017, 09:58:48 »
это зависит от используемого вами модуля меню. лучшим способом узнать будет установить и посмотреть :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Mr.Can

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
Re: Циклические ссылки в меню
« Ответ #15 : 22.02.2017, 09:35:47 »
это зависит от используемого вами модуля меню. лучшим способом узнать будет установить и посмотреть :)
Используется Gantry 5 с шаблоном Hydrogen в настройках меню указано Use default menu, поэтому трудно сказать, какое именно меню использует Framework свое собственное (если у него оно есть, то где искать?) или же стандартный модуль Joomla mod_menu
*

sozeedatel

  • Новичок
  • 1
  • 0 / 0
Re: Циклические ссылки в меню
« Ответ #16 : 01.06.2018, 17:21:45 »
Огромное спасибо, Шустрому. Работает и на Joomla 3.8.8Только не могу подвязать стиль CSS активного пункта меню.
пишет <a class=""а надо <a class="active"
Как допилить, что поправить.
*

lawrik2005

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
Re: Циклические ссылки в меню
« Ответ #17 : 10.07.2018, 23:19:52 »
е спасибо, Шустрому. Работает и на Joomla 3.8.8Только не могу подвязать стиль CSS активного пункта меню.
пишет <a class=""а надо <a class="active"
Как допилить, что поправить.
Метод рабочий, но с активного пункта меню пропадает стиль.... Подскажите пожалуйста как подвязать стиль CSS активного пункта меню?  Буду очень при очень благодарен если напишите как.....
*

lawrik2005

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
Re: Циклические ссылки в меню
« Ответ #18 : 10.07.2018, 23:36:52 »
Метод рабочий, но с активного пункта меню пропадает стиль.... Подскажите пожалуйста как подвязать стиль CSS активного пункта меню?  Буду очень при очень благодарен если напишите как.....
разобрался)))

заменил
echo '<span class='.$class.'>'.$linktype.'</span>';
на
echo '<a class="separator">'.$linktype.'</a>';
*

lawrik2005

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
Re: Циклические ссылки в меню
« Ответ #19 : 13.07.2018, 15:52:00 »
Незачто. Файлы разные возможно потому, что мой из модуля непосредственно, а не из шаблона.
Как вы можете прокомментировать если данный метод перестаёт работать при переносе сайта на хостинг?
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Re: Циклические ссылки в меню
« Ответ #20 : 18.07.2018, 16:27:04 »
Как вы можете прокомментировать если данный метод перестаёт работать при переносе сайта на хостинг?
Никак. Сделайте var_dump и посмотрите, где ошибка у вас.
*

Alti-R

  • Новичок
  • 9
  • 0 / 0
Re: Циклические ссылки в меню
« Ответ #21 : 08.09.2019, 19:22:19 »
Копируете из modules\mod_menu\tmpl\ в templates\шаблон\html\mod_menu файл default_component.php. Далее оборачиваете вывод ссылки в условие (начиная с 26-й строки):

Всем привет! В моем шаблоне нет такой папки mod_menu в директории templates\шаблон\html\. Поэтому я создал там эту папку и скопировал туда файл default_component.php, предварительно вставив внутрь код из файла целиком от Shustry. Но все равно ничего не произошло, ссылка на любом активном пункте меню также функционирует на саму себя. Версия Joomla 3.9.11. Не могли бы подсказать пожалуйста что я делаю не так?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Один пункт меню думает что он главный

Автор DamaVbubi

Ответов: 4
Просмотров: 250
Последний ответ 13.02.2024, 19:49:10
от DamaVbubi
[Решено] Перестали работать переходы по меню сайта

Автор AlexP750

Ответов: 12
Просмотров: 482
Последний ответ 06.02.2024, 12:42:26
от AlexP750
Пропало главное меню, и контент на главной (после обновления)

Автор GTHack

Ответов: 15
Просмотров: 519
Последний ответ 07.01.2024, 16:00:15
от ProtectYourSite
Автоматическая снятие с публикации пункта меню

Автор all_zer

Ответов: 2
Просмотров: 323
Последний ответ 30.12.2023, 15:29:58
от all_zer
Отображение меню мобильной версии сайта

Автор AnSk

Ответов: 1
Просмотров: 331
Последний ответ 22.08.2023, 18:52:55
от arma