Новости Joomla

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

fsv

  • Живу я здесь
  • 2765
  • 402 / 2
Joomla 3.3.0 (в 3.3.3 проверил, возник бы тот же вопрос).
Переделывал под свои нужды дефолтный плагин "Пользователь-Профиль". Также понадобилось существующее там поле "Условия предоставления услуг", вывод статьи в модальном окне.
Выводилась статья некорректно. На нее есть пункт меню. Все, что надо было, - указать в ссылке Itemid.
Было (\plugins\user\profile\fields\tos.php):
Код: php
$link = '<a class="modal" title="" href="index.php?option=com_content&amp;view=article&amp;layout=modal&amp;id=' . $tosarticle . '&amp;tmpl=component" rel="{handler: \'iframe\', size: {x:800, y:500}}">' . $text . '</a>';
, где $tosarticle - id статьи.
Добавлять хардкодом Itemid недопустимо. Программно все решается проще - ContentHelperRoute::getArticleRoute($tosarticle).
В public static function getArticleRoute($id, $catid = 0, $language = 0) предусмотрено обращение к другому protected методу этого класса - _findItem:
Код: php
if ($item = self::_findItem($needles))
{
    $link .= '&Itemid='.$item;
}
Вот только мне надо в ссылке еще доп.параметр - &tmpl=component . Возможность получения доп.параметров для добавления их к ссылке в getArticleRoute отсутствует. А хотелось бы, вопрос бы не возник.

Сделал в плагине так:
Код: php
require_once JPATH_SITE . DS . 'components' . DS . 'com_content' . DS . 'helpers' . DS . 'route.php';
$article_link = JRoute::_(ContentHelperRoute::getArticleRoute($tosarticle));
$and = JFactory::getConfig()->get('sef')? "?" : "&amp;" ;
$link = '<a class="modal" title="'.$title.'" href="'.$article_link.$and.'tmpl=component" rel="{handler: \'iframe\', size: {x:800, y:500}}">'.$text.'</a>';

Все работает, как надо. Но такой подход для решения подобных задач не нравится, особенно варианты с проверкой sef.
На J>=2.5 первый раз встала такая задача, торопился, возможно, упустил какую-то существующую стандартную возможность, предусмотренную в API. Поэтому:
как вы при формировании в одном расширении ссылки на страницу другого расширения передаете в этой ссылке доп.параметры?
« Последнее редактирование: 03.09.2014, 17:09:35 от b2z »
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
*

fsv

  • Живу я здесь
  • 2765
  • 402 / 2
А если просто
Код: php
ContentHelperRoute::getArticleRoute($tosarticle). '&amp;tmpl=component'
?
Спасибо. Но:
1) плагин не знает класса ContentHelperRoute . Его подключение требуется.
2) &amp;tmpl=component - ошибка 404, т.к. &amp; - для дефолтной ссылки, а цепляете к sef-ссылке, к ней надо "?".
проверку на использование SEF посмотрите выше:
Код: php
$and = JFactory::getConfig()->get('sef')? "?" : "&amp;" ;
...$and.'tmpl=component
Больше всего именно она мне и не нравится. ***код какой-то. Такие вопросы должны решаться элегантнее, поэтому и спросил.
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Так метод ContentHelperRoute::getArticleRoute возвращает не-SEF ссылку. Поэтому такое по идее должно работать:

Код: php
$article_link = JRoute::_(ContentHelperRoute::getArticleRoute($tosarticle). '&tmpl=component');
*

fsv

  • Живу я здесь
  • 2765
  • 402 / 2
Так метод ContentHelperRoute::getArticleRoute возвращает не-SEF ссылку.
упс, смотрю в книгу, вижу свое. Точно. Должно получиться. Сейчас проверю.
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
упс, смотрю в книгу, вижу свое. Точно. Должно получиться. Сейчас проверю.
Это нормально. Всегда нужен кто-то, кто укажет на то, что сам ты ну никак не можешь заметить. Работа в команде ;)
*

fsv

  • Живу я здесь
  • 2765
  • 402 / 2
Все как часики работает. Благодарю. Вопрос снят.
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как правильно?

Автор rafaello9

Ответов: 1
Просмотров: 470
Последний ответ 20.05.2020, 15:46:28
от robert
Как правильно записать дату создания записи в БД?

Автор ImPuLsE

Ответов: 13
Просмотров: 2780
Последний ответ 11.09.2019, 22:58:57
от sev07
[Решено] Ненавижу джумловский database!

Автор effrit

Ответов: 19
Просмотров: 1428
Последний ответ 14.10.2018, 21:28:40
от Aleks.Denezh
[решено] Использование model - setState для фильтра по дате

Автор effrit

Ответов: 8
Просмотров: 1451
Последний ответ 13.10.2018, 19:13:49
от effrit
Формирование ссылки с параметрами в меню

Автор submaster

Ответов: 2
Просмотров: 778
Последний ответ 28.09.2018, 13:32:43
от submaster