Новости Joomla

Загадочный параметр $live_site в configuration.php 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 можно из объекта приложения

protected function doExecute(InputInterface $input, OutputInterface $output): int    {         //...              $live_site = $this->getApplication()->get('live_site');         //...    }
и исходя из этого строить дальнейшую логику.@joomlafeed#joomla #разработка #php #cli

Вышел плагин AllVideos v.7.0 от JoomlaWorks

Вышел плагин AllVideos v.7.0 от JoomlaWorks

Вышел плагин AllVideos v.7.0 от JoomlaWorks.Этот контент-плагин - одно из старейших расширений для Joomla. Его задача - преобразовывать шорт-коды вида {YOUTUBE}...{/YOUTUBE}, {MP3}parth/to/file.mp3{/MP3} и подобные во встроенные видео или аудио.👩‍💻 v.7.0.0. Что нового?- Добавлена поддержка Youtube Shorts. Просто скопируйте полный url видео и вставьте его внутри тегов {YOUTUBE}...{/YOUTUBE}.- Поддержка Joomla 5.x без плагина обратной совместимости. PHP 5, PHP 7, PHP 8. - Индексация умным поиском в CLI. В Joomla 5 плагин перестал вызывать ошибку при индексации контента умным поиском через CLI,Заметьте, что этот один и тот же пакет для всех версий Joomla, начиная с 1.5.x и заканчивая 5.x. Технически "под капотом" код плагина по сути не менялся, а для поддержки следующих версий Joomla авторы вставляют "заплатки". Плагин всё ещё использует старую архитектуру файлов и классов Joomla, что, к сожалению, заставляет прибавлять к его описанию слова "пока ещё" - "пока ещё работает".Страница расширенияGitHub расширенияJoomla Extensions Directory👩‍💻 За ссылку спасибо самому внимательному участнику нашего сообщества - Ринату Кажетову (@rkazhet).@joomlafeed#joomla #расширения

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

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
Добрый день.
Для перехода с J! 3 на J! 4 надо переписать собственные компоненты. Для административной части все сделано - вывод списка из таблиц, добавление и редактирование записей.
Но с выводом на front-end я что-то запуталась. Руководствовалась https://mb4.ru/cms/joomla4/883-j4-component-tutorial-mywalks-part-1-the-site-code.html и https://mb4.ru/cms/joomla4/727-j4-component-tutorial-mywalks-part-2-the-admin-code.html
Надо вывести по пункту меню index.php?option=com_card&view=cards записи из таблицы card (условно id и title)
Структура site компонента com_card:
Спойлер
[свернуть]
Файлы:
файл DisplayController.php   
Спойлер
[свернуть]
файл RouteHelper.php
--------------------------------
Спойлер
[свернуть]
===========================
файл router.php
---------------------------
Спойлер
[свернуть]
============================
файл CardNomenuRules.php
----------------------------
Спойлер
[свернуть]
После вызова компонента - сообщение
0 - Некорректный класс контроллера: display

Call stack
#   Function   Location
1   ()   JROOT\libraries\src\Dispatcher\ComponentDispatcher.php:178
2   Joomla\CMS\Dispatcher\ComponentDispatcher->getController()   JROOT\libraries\src\Dispatcher\ComponentDispatcher.php:145
3   Joomla\CMS\Dispatcher\ComponentDispatcher->dispatch()   JROOT\libraries\src\Component\ComponentHelper.php:389
4   Joomla\CMS\Component\ComponentHelper::renderComponent()   JROOT\libraries\src\Application\SiteApplication.php:204
5   Joomla\CMS\Application\SiteApplication->dispatch()   JROOT\libraries\src\Application\SiteApplication.php:243
6   Joomla\CMS\Application\SiteApplication->doExecute()   JROOT\libraries\src\Application\CMSApplication.php:278
7   Joomla\CMS\Application\CMSApplication->execute()   JROOT\includes\app.php:63
8   require_once()   JROOT\index.php:32
==================================
JROOT\libraries\src\Dispatcher\ComponentDispatcher.php:178
   // Check if the controller could be created
      if (!$controller)
      {
         throw new \InvalidArgumentException(Text::sprintf('JLIB_APPLICATION_ERROR_INVALID_CONTROLLER_CLASS', $name));
      }

Прошу помочь, пожалуйста.







*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Вы создавали файл СardsController.php ?
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
Вы создавали файл СardsController.php ?
Нет, не создавала. Тупо Следовала руководству, на которое я ссылалась. Я этот компонент Mywalks скачала и установила, он работает.
В своих компонентах для административной части у меня контроллеры есть и для Card и для Cards.
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
В своих компонентах для административной части у меня контроллеры есть и для Card и для Cards.
Для front-end аналогично!

Для каждого представления (view) нужен свой файл контроллера!
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
Для front-end аналогично!

Для каждого представления (view) нужен свой файл контроллера!
В административной части для компонента com_card (работает!) такие контроллеры:

=========================
DisplayController.php
------------------------
Спойлер
[свернуть]
==========================
файл CardsController.php
-------------------
Спойлер
[свернуть]

А в компоненте com_card для J!3 (работающая версия ) для front-end

Спойлер
[свернуть]

Не могли бы Вы проконсультировать, как должны выглядеть контроллеры для сайта на J!4 (front-end)?
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Код: php
<?php namespace Nioch\Component\Card\Site\Controller;

defined('_JEXEC') or die;

use \Joomla\CMS\MVC\Controller\BaseController;

class CardsController extends BaseController {}
У Вас namespace не верно прописан!
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
Код: php
<?php namespace Nioch\Component\Card\Site\Controller;

defined('_JEXEC') or die;

use \Joomla\CMS\MVC\Controller\BaseController;

class CardsController extends BaseController {}
У Вас namespace не верно прописан!
Где именно у меня  namespace не верно прописан?
В предыдущем сообщении я привела:
1. тексты контроллеров для административной части компонента com_card для J!4
2. текст контроллера для фронт-енд для моего компонента com_card в J!3

Контроллера для фронт-енд компонента com_card для J!4 у меня вообще пока нет.
Ваш код для контроллера для фронт-енд ?
Код: php
<?php namespace Nioch\Component\Card\Site\Controller;

defined('_JEXEC') or die;

use \Joomla\CMS\MVC\Controller\BaseController;

class CardsController extends BaseController {}
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Контроллера для фронт-енд компонента com_card для J!4 у меня вообще пока нет.
Он должен быть!
Где именно у меня  namespace не верно прописан?
Простите, это я не там посмотрел!
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0

Он должен быть!Простите, это я не там посмотрел!
Там, там Вы посмотрели! Действительно, в файле DisplayController.php   в моем первом сообщении была ошибка. Извините!
Вот такие контроллеры (front-end)
DisplayController.php
Спойлер
[свернуть]
и CardsController.php
Спойлер
[свернуть]
Теперь новая ошибка
0 - Attempt to assign property "hideEmptyLimitstart" on null

Call stack
#   Function   Location
1   ()   JROOT\components\com_card\src\View\Cards\HtmlView.php:80
2   Nioch\Component\Card\Site\View\Cards\HtmlView->display()   JROOT\libraries\src\MVC\Controller\BaseController.php:697
3   Joomla\CMS\MVC\Controller\BaseController->display()   JROOT\components\com_card\src\Controller\DisplayController.php:44
4   Nioch\Component\Card\Site\Controller\DisplayController->display()   JROOT\libraries\src\MVC\Controller\BaseController.php:735
5   Joomla\CMS\MVC\Controller\BaseController->execute()   JROOT\libraries\src\Dispatcher\ComponentDispatcher.php:146
6   Joomla\CMS\Dispatcher\ComponentDispatcher->dispatch()   JROOT\libraries\src\Component\ComponentHelper.php:389
7   Joomla\CMS\Component\ComponentHelper::renderComponent()   JROOT\libraries\src\Application\SiteApplication.php:204
8   Joomla\CMS\Application\SiteApplication->dispatch()   JROOT\libraries\src\Application\SiteApplication.php:243
9   Joomla\CMS\Application\SiteApplication->doExecute()   JROOT\libraries\src\Application\CMSApplication.php:278
10   Joomla\CMS\Application\CMSApplication->execute()   JROOT\includes\app.php:63
11   require_once()   JROOT\index.php:32

В файле View/Cards/HtmlView.php
Спойлер
[свернуть]
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
0 - Attempt to assign property "hideEmptyLimitstart" on null
Закоментите 3 строки
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
Re: Проблема вывода компонента на Front-end
« Ответ #10 : 08.08.2022, 20:48:58 »
Закоментите 3 строки
Закоментировала.
Новое сообщение: 0 - count(): Argument #1 ($value) must be of type Countable|array, null given
JROOT\components\com_card\src\View\Cards\HtmlView.php:85
Вот эта строка:
// Check for errors.
      if (count($errors = $this->get('Errors')))
      {
         throw new GenericDataException(implode("\n", $errors), 500);
      }
=============
Вообще я print_r(&params) поставила,
params: Joomla\Registry\Registry Object
(
    [data:protected] => stdClass Object
        (
            [show_page_heading] => 0
            [menu_text] => 1
            [menu_show] => 1
            [page_title] => Наука
            [page_description] =>
            [page_rights] =>
            [robots] =>
        )

    [initialized:protected] => 1
    [separator] => .
)
И еще. Хотя в пункте меню вызова компонента ссылка index.php?option=com_card&view=cards

В строке навигации http://nioch/index.php/ru/nauka?view=cards
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Проблема вывода компонента на Front-end
« Ответ #11 : 08.08.2022, 20:54:08 »
Сделайте вот так (замените полностью функцию display в файле View/Cards/HtmlView.php)!
Код: php
public function display($tpl = null)
{
    echo __FILE__;
}
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
Re: Проблема вывода компонента на Front-end
« Ответ #12 : 08.08.2022, 21:17:04 »
Сделайте вот так (замените полностью функцию display в файле View/Cards/HtmlView.php)!
Код: php
public function display($tpl = null)
{
    echo __FILE__;
}
404 - Не удалось найти представление [name, type, prefix]: cards, HTML, site.
Call stack
#   Function   Location
1   ()   JROOT\libraries\src\MVC\Controller\BaseController.php:903
2   Joomla\CMS\MVC\Controller\BaseController->getView()   JROOT\libraries\src\MVC\Controller\BaseController.php:646
3   Joomla\CMS\MVC\Controller\BaseController->display()   JROOT\components\com_card\src\Controller\DisplayController.php:44
4   Nioch\Component\Card\Site\Controller\DisplayController->display()   JROOT\libraries\src\MVC\Controller\BaseController.php:735
5   Joomla\CMS\MVC\Controller\BaseController->execute()   JROOT\libraries\src\Dispatcher\ComponentDispatcher.php:146
6   Joomla\CMS\Dispatcher\ComponentDispatcher->dispatch()   JROOT\libraries\src\Component\ComponentHelper.php:389
7   Joomla\CMS\Component\ComponentHelper::renderComponent()   JROOT\libraries\src\Application\SiteApplication.php:204
8   Joomla\CMS\Application\SiteApplication->dispatch()   JROOT\libraries\src\Application\SiteApplication.php:243
9   Joomla\CMS\Application\SiteApplication->doExecute()   JROOT\libraries\src\Application\CMSApplication.php:278
10   Joomla\CMS\Application\CMSApplication->execute()   JROOT\includes\app.php:63
11   require_once()   JROOT\index.php:32
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Проблема вывода компонента на Front-end
« Ответ #13 : 08.08.2022, 21:19:26 »
Страшно даже представить как Вы заменили функцию!
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
Re: Проблема вывода компонента на Front-end
« Ответ #14 : 08.08.2022, 21:27:18 »
echo __FILE__;
Дауж!
Исправила, получилось на экране
F:\OpenServer\domains\nioch\components\com_card\src\View\Cards\HtmlView.php
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Проблема вывода компонента на Front-end
« Ответ #15 : 08.08.2022, 22:14:12 »
Значит страница у Вас работает! Добавьте нужный функционал в функцию display и файл представления и страница готова!
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
Re: Проблема вывода компонента на Front-end
« Ответ #16 : 09.08.2022, 09:54:22 »
[
Значит страница у Вас работает! Добавьте нужный функционал в функцию display и файл представления и страница готова!
К сожалению, нет...
И не по тому, что на этой странице неправильный код
Код: php
public function display($tpl = null)
{
//echo __FILE__;
$app    = Factory::getApplication();
$params = $app->getParams();

// Get some data from the models
$state      = $this->get('State');
//echo '<pre>state'; print_r($state); exit();
$items      = $this->get('Items');

$pagination = $this->get('Pagination');
//echo '<pre>pagination'; print_r($pagination); exit();
// Flag indicates to not add limitstart=0 to URL
$pagination->hideEmptyLimitstart = true;

// Check for errors.
if (count($errors = $this->get('Errors')))
{
throw new GenericDataException(implode("\n", $errors), 500);
}

$this->state      = &$state;
$this->items      = &$items;
$this->params     = &$params;
$this->pagination = &$pagination;

return parent::display($tpl);
}
а потому, как я понимаю, что по пути на эту страницу я уродую ссылку $app    = Factory::getApplication(); Поэтому ни
$state      = $this->get('State');
ни
$items      = $this->get('Items'); и пр. не выполняются правильно (вообще в модель не заходит)


Пункт меню, по которому должен выводиться список из таблицы index.php?option=com_card&view=cards
а на странице с указанием на ошибку навигатор показывает http://nioch/index.php/ru/nauka?view=cards и ошибка
0 - count(): Argument #1 ($value) must be of type Countable|array, null given
Спойлер
[свернуть]
(((
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Проблема вывода компонента на Front-end
« Ответ #17 : 09.08.2022, 10:31:43 »
Файл модели для этой страницы создавали?
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
Re: Проблема вывода компонента на Front-end
« Ответ #18 : 09.08.2022, 11:22:27 »
Ea
Файл модели для этой страницы создавали?
Создавала. Но с ошибкой: namespace Nioch\Component\Administrator\Site\Model;
Исправила.
Огромное Вам спасибо!
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Проблема вывода компонента на Front-end
« Ответ #19 : 09.08.2022, 11:57:25 »
Страница заработала как надо?
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
Re: Проблема вывода компонента на Front-end
« Ответ #20 : 09.08.2022, 13:25:40 »
Страница заработала как надо?
Да, список выводится. Это телефонный справочник, поэтому объединены несколько таблиц. Надо еще добавить поисковые возможности (по фио и/или из списка лабораторий).
Еще раз - огромное спасибо.
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
Re: Проблема вывода компонента на Front-end
« Ответ #21 : 09.08.2022, 15:45:42 »
Еще раз прошу помочь.

Если файл tmpl\cards\default.php не содержит форму, то выводятся первые X записей справочника
Спойлер
[свернуть]

Форма, чтобы оставаться в области сайта, какой вид должна иметь?
Так неправильно?

<form action="<?php echo Route::_('index.php?option=com_card'); ?>" method="post" name="adminForm" id="adminForm">
....
....
....

               <?php // load the pagination. ?>
               <?php echo $this->pagination->getListFooter(); ?>

            
            <input type="hidden" name="task" value="">
            <input type="hidden" name="boxchecked" value="0">
            <?php echo HTMLHelper::_('form.token'); ?>
</form>
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Проблема вывода компонента на Front-end
« Ответ #22 : 09.08.2022, 15:52:09 »
Изучите данный функционал в стандартном компоненте менеджера материалов (view category)
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
Re: Проблема вывода компонента на Front-end
« Ответ #23 : 09.08.2022, 16:09:21 »
Изучите данный функционал в стандартном компоненте менеджера материалов (view category)
Спасибо
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Проблема со страницей 404 и каноническим url материала

Автор azm1n

Ответов: 0
Просмотров: 325
Последний ответ 14.05.2025, 01:17:17
от azm1n
Проблема с сходом

Автор Bad_digger

Ответов: 6
Просмотров: 1061
Последний ответ 21.03.2025, 07:39:26
от wishlight
Joomla 5.2.2+Helix Ultimate Проблема с отображением Page Title

Автор catsub

Ответов: 2
Просмотров: 792
Последний ответ 20.12.2024, 05:06:13
от basn
Проблема с отображением картинок в поиске Google

Автор designer71

Ответов: 2
Просмотров: 829
Последний ответ 06.08.2024, 13:56:10
от designer71
Проблема с синхронизацией SP Page Builder и материалом Joomla5

Автор yasna

Ответов: 1
Просмотров: 767
Последний ответ 24.06.2024, 16:08:05
от Vastriet