Новости 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 Гость просматривают эту тему.
  • 1 Ответов
  • 2322 Просмотров
*

Garum

  • Давно я тут
  • 654
  • 47 / 0
  • Акула пера
По умолчанию Моя галерея доступна пользователям, его можно настроить и так чтобы она была доступна только админу, но тогда пользователь не сможет загрузить фотки. Если сделать доступным мою галерею пользователям, то пользователи смогут редактировать и удалять свои картинки. Но это как-то неправильно. Есть вариант удалить иконки редактирования и удаления, но тогда админ не сможет удалить и редактировать картинки через мою галерею, что тоже не пойдет. Хотя есть возможность редактировать через админку. Кого интересует читаем дальше, все для версии 1.7.4.
Сразу же ставим Показывать "Мою галерею" на показывать только зарегистрированным пользователям и админам в настройках Настройки пользовательского интерфейса\Моя галерея.
Тут мы ссылку на Мою галерею делаем недоступной для пользователей, админам будет доступна, но под ссылкой моя галерея разместим ссылку сразу на загрузку файлов, таким образом пользователь сразу попадает на страницу загрузки файлов.
Идем в папку \components\com_joomgallery\helpers находим файл helper.php находим строку:
Код
{
        if($user->get('aid')!= 0)
        {
И замени его на:
Код
{
        if($user->get('aid')!= 1)
        {
Здесь мы сделали недоступной (серого цвета) ссылку на моя галерея. идем в папку components\com_joomgallery\views\gallery\tmpl и находим файл  default_header.php в нем ищем строки:
Код
<span class="jg_no_access<?php echo JHTML::_('joomgallery.tip', 'JGS_COMMON_MSG_YOU_ARE_NOT_LOGGED', 'JGS_COMMON_USER_PANEL'); ?>">
      <?php echo JText::_('JGS_COMMON_USER_PANEL'); ?>
    </span>
  </div>
и после них пишем:
Код
<div class="jg_mygal">
  <a href="<?php echo JRoute::_('index.php?view=upload&option=com_joomgallery') ;?>">
      <?php echo JText::_('JGS_COMMON_USER_DOWNLOAD') ;?>
    </a> </div>
Не забудьте в файле русификации создать строку: JGS_COMMON_USER_DOWNLOAD=Загрузить картинки (или поменяйте на свое), также измените строку: JGS_COMMON_MSG_YOU_ARE_NOT_LOGGED, например на этот: JGS_COMMON_MSG_YOU_ARE_NOT_LOGGED=Доступно только для администратора. Дальше вам следует удалить, там где кликабельна ссылка Моя галерея, вроде в одном месте это было, там где загрузка файла. Ищите в папке upload в файле view.html.php надо удалить строку:
Код
$pathway  = '<a href="'.JRoute::_('index.php?view=userpanel').'">'.JText::_('JGS_COMMON_USER_PANEL').'</a>';
В детальном виде добавим строку ссылку Загрузить картинки. Идем в папку components\com_joomgallery\views\detail\tmpl и находим файл default_header.php в нем после строк:
Код
 <?php echo JText::_('JGS_COMMON_USER_PANEL'); ?>
    </span>
  </div>
Добавим строку:
Код
<div class="jg_mygal">
  <a href="<?php echo JRoute::_('index.php?view=upload&option=com_joomgallery') ;?>">
      <?php echo JText::_('JGS_COMMON_USER_DOWNLOAD') ;?>
    </a> </div>
Дальше добавим ссылку Загрузить картинки в категории, для этого идем в папку components\com_joomgallery\views\category\tmpl находим файл default_header.php, в нем -строки:
Код
<?php echo JText::_('JGS_COMMON_USER_PANEL'); ?>
    </span>
  </div>
И после добавим:
Код
<div class="jg_mygal">
  <a href="<?php echo JRoute::_('index.php?view=upload&option=com_joomgallery') ;?>">
      <?php echo JText::_('JGS_COMMON_USER_DOWNLOAD') ;?>
    </a> </div>

При таком решении пользователь не может войти в свою гелерею, а ели и зайдет, введя в адресной строке адрес http://site.ru/index.php?option=com_joomgallery&view=userpanel, то сможет редактировать и удалить свои фотки, но тут тоже есть решение.
Делаем иконки не кликабельными для пользователей (в сером виде), для админов кликабельны.
Идем в папку \components\com_joomgallery\helpers находим файл helper.php находим строку:
Код
{
        if($user->get('aid')!= 0)
        {
И замени его на:
Код
{
        if($user->get('aid')!= 1)
        {
Идем в папку components\com_joomgallery\views\userpanel\tmpl ищем файл default.php в нем ищем строку:
Код
<a href="<?php echo JRoute::_('index.php?view=edit&id='.$row->id.$this->slimitstart); ?>">
            <?php echo JHTML::_('joomgallery.icon', 'edit.png', 'JGS_COMMON_EDIT'); ?></a>
        </div>
Заменим его на:
Код
<?php
      if($this->params->get('show_mygal')): ?>
        <a href="<?php echo JRoute::_('index.php?view=edit&id='.$row->id.$this->slimitstart); ?>">
            <?php echo JHTML::_('joomgallery.icon', 'edit.png', 'JGS_COMMON_EDIT'); ?></a></div>
     <?php endif;
      if($this->params->get('show_mygal_no_access')): ?>
         <?php echo JHTML::_('joomgallery.icon', 'download_gr.png', 'JGS_COMMON_EDIT'); ?>
        </div>
           <?php   endif; ?>
Иконку Редактировать мы сделали не кликабельной, теперь делаем некликабельной иконку удалить. Для этого находим в том же файле строку:
Код
<a href="javascript:if(confirm('<?php echo JText::_('JGS_COMMON_ALERT_SURE_DELETE_SELECTED_ITEM', true); ?>')){ location.href='<?php echo JRoute::_('index.php?task=delete&id='.$row->id.$this->slimitstart, false);?>';}">
            <?php echo JHTML::_('joomgallery.icon', 'edit_trash.png', 'JGS_COMMON_DELETE'); ?></a>
        </div>
Заменяем его на:
Код
<div class="jg_up_esub2<?php echo JHTML::_('joomgallery.tip', 'JGS_COMMON_DELETE_IMAGE_TIPTEXT', 'JGS_COMMON_DELETE_IMAGE_TIPCAPTION'); ?>">
        <?php
      if($this->params->get('show_mygal')): ?>
        <a href="javascript:if(confirm('<?php echo JText::_('JGS_COMMON_ALERT_SURE_DELETE_SELECTED_ITEM', true); ?>')){ location.href='<?php echo JRoute::_('index.php?task=delete&id='.$row->id.$this->slimitstart, false);?>';}">
            <?php echo JHTML::_('joomgallery.icon', 'edit_trash.png', 'JGS_COMMON_DELETE'); ?></a></div>
        <div class="jg_up_esub1<?php endif;
      if($this->params->get('show_mygal_no_access')): ?>
         <?php echo JHTML::_('joomgallery.icon', 'download_gr.png', 'JGS_COMMON_DELETE'); ?>
    </span>
        </div>        
          <?php   endif; ?>
Иконка download_gr.png в папке components\com_joomgallery\assets\images дана только для примера, вам же следует найти подходящую иконку для редактирования и удаления или преобразовать их в серый цвет и засунуть их в эту же папку, но иконку download_gr.png ЗАМЕНЯТЬ НЕ СЛЕДУЕТ. Не забудьте в файле русификации тексты заменить на свои. Например:
JGS_COMMON_DELETE_IMAGE_TIPCAPTION=Удалить
JGS_COMMON_DELETE_IMAGE_TIPTEXT=Доступно только для администратора.
JGS_COMMON_EDIT_IMAGE_TIPCAPTION=Редактировать
JGS_COMMON_EDIT_IMAGE_TIPTEXT=Доступно только для администратора.

Решение конечно огромное, но если кто решил данную ситуацию более легким способом, то опишите здесь.
Вроде все правильно. Если что-то забыл или если возникнет ошибка, то пишите. Если кому понадобились мои труды, то жмите плюсики.
Помогите сделать данное решение без закрытия от пользователей их галерею.
« Последнее редактирование: 05.01.2012, 23:54:54 от Garum »
http://izans.ru/oboi?view=category&catid=6 фото самых красивых девушек на рабочий стол
*

Beer

  • Moderator
  • 1103
  • 43 / 1
  • БИРУ - БИР!
В 3.3.3 все как-то иначе....
Но задача стоит та же - отсечь загрузки юзеров от галереи.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Галерея перестала работать

Автор Sergeych

Ответов: 3
Просмотров: 2581
Последний ответ 12.05.2022, 19:06:44
от xpank
Галерея с возможностью добавить 600 фотографий одним разом весом 80 мб

Автор knyazevvalentinn

Ответов: 0
Просмотров: 7725
Последний ответ 19.01.2018, 16:31:11
от knyazevvalentinn
Настроить JoomImages по центру?

Автор warlocksp

Ответов: 3
Просмотров: 2151
Последний ответ 04.11.2016, 09:03:08
от marbert
Открывает фото только в Slimbox. Как поменять?

Автор Andrey33

Ответов: 2
Просмотров: 1804
Последний ответ 02.03.2016, 22:37:58
от Andrey33
Как настроить без этого - "This category is password protected"?

Автор Andry48

Ответов: 0
Просмотров: 1392
Последний ответ 27.08.2015, 22:28:37
от Andry48