Новости Joomla

Загадочный параметр $live_site в configuration.php Joomla

Загадочный параметр $live_site в configuration.php Joomla

Давным-давно, когда Joomla ещё была маленькой, в неё внедрили параметр $live_site. В ней хранился домен текущего сайта на случай, если Joomla не могла его определить из-за неверной настройки сервера. Нужно это было для разных SEO-компонентов, для использования редиректов и т.д.

Со временем для работы собственно сайта этот параметр перестал быть нужным. Уже в начале 2010-х стали встречаться рекомендации оставлять этот параметр пустым, дабы оный не привёл к лишним проблемам и путанице. Тем более, в web-админке нет места, где его можно указать или посмотреть его значение. Только в configuration.php, а туда смотрят не часто.

Однако, параметр всё же остался в ядре Joomla. Зачем он нужен? А нужен он в 2-х случаях:

  • для работы класса Joomla\CMS\Uri\Uri, который часто используется в коде Joomla для работы методов
    Uri::root() и
    Uri::base(), а значит может влиять и на работу в том числе ajax-скриптов.
  • для работы Joomla в CLI - командной строке сервера. В случае если вы используете в вашем CLI-плагине методы опять-таки класса Uri, то CLI ничего не знает о текущем домене, так как запускается вне web-сервера.

Поэтому домен нужно указывать принудительно. Либо с помощью параметра командной строки

--live-site, например,
—live-site=https://site.ru/. Со слешем на конце, иначе в CLI адрес сайта станет
https://site.rujoomla.php.Либо в параметре
$live_site в файле configuration.php, так как
CliApplication берёт настройку оттуда, если параметр команды не указан или пуст.

⚠️ Иначе в качестве хоста и url класса Uri будет установлено https://joomla.invalid/set/by/console/application. В самом же коде команды получить параметр

$live_site можно из объекта приложения

<?php protected function doExecute(InputInterface $input, OutputInterface $output): int { //... $live_site = $this->getApplication()->get('live_site'); //... }

и исходя из этого строить дальнейшую логику.

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

voland

  • Легенда
  • 11028
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Пишу ссылку вида
$link = JRoute::_('index.php?option=com_content&view=article&id='.$currs['id'].'&Itemid=176');
По ItemId прописывается (/menu1/item2/item3/241), но правильная должна быть /menu1/item2/item3/241-alias.
Что не так?
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
Re: Как правильно прописать JRoute
« Ответ #1 : 11.08.2010, 14:50:56 »
Насколько помню в segments роутера вообще Itemid нету. Загляни в route.php com_content.
Да. mod_latestnews такие ссылки по другому формирует. Посмотри в хелпере модуля.
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

voland

  • Легенда
  • 11028
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Re: Как правильно прописать JRoute
« Ответ #2 : 11.08.2010, 14:56:40 »
Насколько помню в segments роутера вообще Itemid нету. Загляни в route.php com_content.
Да. mod_latestnews такие ссылки по другому формирует. Посмотри в хелпере модуля.
Оттуда и выглядел - itemid как раз отлично отрабатывает (без него ссылка вида /component/content/article/241) а вот алиас теряется.
Посмотрел mod_latestnews -
Код
JRoute::_(ContentHelperRoute::getArticleRoute($row->slug, $row->catslug, $row->sectionid)
*

nik75

  • Новичок
  • 2
  • 0 / 0
Re: Как правильно прописать JRoute
« Ответ #3 : 14.02.2011, 19:37:13 »
Добый день, я чего-то недопонимаю, подскажите кто знает
пишу ссылку
JRoute::_("index.php?option=com_eps&controller=eps&task=edit&cid[]=1")
в административной части компонента, получается все неплохо, только
в полученной ссылке терятся /administrator/ ?
*

era

  • Администратор
  • 1588
  • 392 / 5
  • В туалете лучше быть пользователем, чем админом.
*

nik75

  • Новичок
  • 2
  • 0 / 0
Re: Как правильно прописать JRoute
« Ответ #5 : 14.02.2011, 19:42:45 »
Точнее код такой
    for ($i=0, $n=count( $this->items ); $i < $n; $i++)
    {
        $row =& $this->items[$i];
   $checked    = JHTML::_( 'grid.id', $i, $row->id );
   $link = JRoute::_("index.php?option=com_eps&controller=eps&task=edit&cid[]=".$row->id);
        ?>
        <tr class="<?php echo "row$k"; ?>">
            <td>
                <?php echo $row->id; ?>
            </td>
            <td>
              <?php echo $checked; ?>
            </td>
            <td>
      <a href="/<?php echo $link; ?>"><?php echo $row->name; ?></a>
            </td>
        </tr>
        <?php
        $k = 1 - $k;
    }
вывожу из базы записи со ссылками для редактирования
*

chikvito

  • Захожу иногда
  • 60
  • 2 / 0
Re: Как правильно прописать JRoute
« Ответ #6 : 21.03.2012, 01:13:00 »
дабы не создавать новую тему напишу тут:

есть компонент JEA, из него доделываю определенные функции и пишу ссылку

JRoute::_('index.php?view=properties&id='.$row->slug.'&option=com_jea&Itemid='.$this->cat), то есть правильная ссылка без сефа. а когда включаю стандартный SEF, ссылка стает такой site.com/component/jea/номер-объявления

и беда в том что по меню ссылка привязана к разделу trade, и если переходить из меню, то эта же ссылка имеет вид  site.com/trade/номер-объявления

вот и задача, как заставить первую ссылку учитывать структуру меню ?
*

Виталик

  • Завсегдатай
  • 1244
  • 130 / 0
*

chikvito

  • Захожу иногда
  • 60
  • 2 / 0
Re: Как правильно прописать JRoute
« Ответ #8 : 21.03.2012, 01:51:39 »
а как правильно вызвать id меню раздела ? $row->sectionid, вобще ничего не отображает. или это не тот параметр?
*

chikvito

  • Захожу иногда
  • 60
  • 2 / 0
Re: Как правильно прописать JRoute
« Ответ #9 : 24.03.2012, 00:17:27 »
так я заменил категории компонента, на itemid. НО проблема осталась. без SEF ссылка работает правильно, а включаю SEF, и ссылка снова стает site.com/component/jea/номер обявления. такое ощущение что этот джумловский SEF просто игнорирует itemid.

как же их все таки подружить??

------
разобрался. у меня ссылка получалась из двух параметров
echo JRoute::_('index.php?view=properties&id='.$row->slug.'&option=com_jea&Itemid='); if($this->cat == 0) echo '3'; else echo '4'
для выключенного сефа отлично работало, а вот после включения сефа, ссылка получалась site.com/component/jea/link + itemid после этого отдельно дописывался. потому и не правильно работала ссылка.

я переписал условия для одного оператора
<?php if($this->cat == 0) $num='3'; else $num='4' ?>
<a href="<?php echo JRoute::_('index.php?view=properties&id='.$row->slug.'&option=com_jea&Itemid='.$num);  ?>" title="<?php echo JText::_('viewonsite')?>">
теперь все работает. может кому-то пригодится.
« Последнее редактирование: 26.03.2012, 22:03:11 от chikvito »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Проблема с JRoute а имено с ParseRoute

Автор savenko

Ответов: 8
Просмотров: 3681
Последний ответ 15.09.2014, 14:23:57
от kolio
JRoute::_

Автор snikolai

Ответов: 9
Просмотров: 9604
Последний ответ 26.08.2011, 09:58:58
от Aventurier
как правильно обращаться к базе данных

Автор salikoff

Ответов: 23
Просмотров: 6790
Последний ответ 29.06.2009, 14:07:16
от w00
Как правильно делать ссылки?

Автор severum

Ответов: 9
Просмотров: 4159
Последний ответ 25.03.2009, 12:55:39
от severum