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

Виталик

  • Завсегдатай
  • 1244
  • 130 / 0
Пример создания выпадающего списка (<SELECT>) с использованием класса JHTML

Данные для списка будем брать из базы данных.


     
// Получаем объект базы данных
     
$database =& JFactory::getDBO();
     
// Формируем запрос
     
$query "SELECT c.id AS value, c.title AS text FROM #__categories AS c WHERE c.section='com_qcontacts_details'";
     
// Выполняем запрос
     
$database->setQuery($query);
     
// Получаем массив объектов
     
$categorylist $database->loadObjectList();
     
// Создаём первый элемент выпадающего списка (<option value="0">Выберите категорию</option>)
     
$categories[] = JHTML::_('select.option',  '0'"Выберите категорию"'value''text' );
     
// Добавляем массив данных из базы данных
     
$categories array_merge$categories$categorylist);
     
// Получаем выпадающий список
     
$list JHTML::_(
                         
'select.genericlist' /* тип элемента формы */,
                         
$categories /* массив, каждый элемент которого содержит value и текст */
                         
'cid' /* id и name select`a формы */,
                         
'class="inputbox" size="1"' /* другие атрибуты элемента select */
                         
'value' /* название поля в массиве объектов содержащего ключ */,
                         
'text' /* название поля в массиве объектов содержащего значение */,
                         
/* value элемента, который должен быть выбран (selected) по умолчанию */
                      
);
« Последнее редактирование: 31.07.2009, 06:49:46 от Виталик »
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Виталик - замечательно, а сможешь описать создания не только SELECt, но и RADIO, multiply select и прочих опций форм с комментариями к каждой строке\переменной\массиву - цены не будет мануалу!
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
последний параметр списка не расписан.
значение по-молчанию, не 0, а NULL(!) ибо этот параметр может быть как числом/текстом, так и массивом совпадающих значений value
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
значение по-молчанию, не 0, а NULL(!) ибо этот параметр может быть как числом/текстом, так и массивом совпадающих значений value
Леш, это просто не очень однозначно написано, там имело в виду не то, что это значение по умолчанию у метода, а то, что это то значение, которое по умолчанию будет выбрано в списке.

p.s. Виталик, вообще респект, плюс я тебе вчера уже выдал. Если сделаешь для остальных элементов, как предложил Петр, я готов выдать еще дополнительные плюсы за каждый элемент :)
*

Mitrich

  • Захожу иногда
  • 289
  • 524 / 13
  • Все можно. Но сначала учиться, учиться и учиться.
« Последнее редактирование: 20.05.2009, 23:21:27 от smart »
*

vmir

  • Осваиваюсь на форуме
  • 17
  • 4 / 0
На сколько мне известно в Joomla есть всякие примочечки в плане расширений класса JHTML. Но вот чего там точно нет, так это CheckBoxа. И раз уж пошла такая маза предлагаю сообществу заценить мою разработку  ^-^

       
Код
function getCheckBox($arr, $name, $attribs = '', $key = 'value', $value = 'text', $selected = null, $separator = ',')
{
if(is_null($arr)) return '';

reset( $arr );
$html = '<div style="padding: 10px 0 10px 0;">';

$id = $name;
$name .= "[]";

$useSel = (!is_null($selected));
if($useSel)
{
if(is_array($selected)) $useSel = count($selected);
else
{
$selected = trim($selected);
$useSel = strlen($selected);
if($useSel)
{
if(strpos($separator, $separator) !== false) $selected = explode($separator, $selected);
else $selected = array($selected);
}
}
}

for ($i=0, $n=count($arr); $i < $n; $i++ )
{
$k = $arr[$i]->$key;
$v = $arr[$i]->$value;
$_id = $id.$i;
$checked = ($useSel && in_array($k, $selected)) ? 'checked' : '';
$html .= '<span '.$attribs.'>';
$html .= '<input type="checkbox" '.$attribs.' name="'.$name.'" id="'.$_id.'" value="'.$k.'" '.$checked.' />'.$v;
$html .= '</span>';
}
return $html.'</div>';
}

Эту функицю я использую в классе helper своего компонента и вызываю ее при необходимости для разных видов.
Краткое описание параметров:
1) $arr - массив объектов с данными на основе которых строится чекбокс (получается как правило при запросе к БД с помощью метода $db->loadObjectList())
2) $name - имя чекбокса в html-коде <input type="checkbox" name="'.$name.'">
3) $attribs - атрибуты элемента <input type="checkbox">
4) $key - название ключа для объекта из массива $arr
5) $value - название значения для объекта из массива $arr
6) $selected - это либо массив, либо строка значений (которые разделены с помощью $separator), или одно значение, которые(ое) в чекбоксе будет отмеченно галкой при отображении элемента на сранице
7) $separator - это разделитель для строки $selected в случае, когда она содержит множество значений
*

Mitrich

  • Захожу иногда
  • 289
  • 524 / 13
  • Все можно. Но сначала учиться, учиться и учиться.
$selected я бы передавал как string или как array

и проверял бы на is_array и не вводил бы лишний гемор в виде сепаратора
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
интересно по выпадающему списку - как передать одному из option параметр disable при генерации массива вручную либо же из базы?
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
пример:
Код: php
$a = 'abcde';
$arr = array(
JHTML::_('select.option',  '0', JText::_( $a[0] ) ),
JHTML::_('select.option',  '1', JText::_( $a[1] ) ),
JHTML::_('select.option',  '2', JText::_( $a[2] ), 'value', 'text', true ), // <-- set true to disable
JHTML::_('select.option',  '3', JText::_( $a[3] ) ),
JHTML::_('select.option',  '4', JText::_( $a[4] ) )
);
$name = 'checklist';
$attribs = '';
$selected = 3;
$id = 'checklistid';
echo JHTML::_('select.genericlist',  $arr, $name, $attribs, 'value', 'text', (int) $selected, $id );
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Дополнение данной темы для движка 1.0.хх
Встроенной работы с параметром disabled нет. Потому открываем includes/joomla.php, находим функцию function selectList
и после
Код: php
} else {
$extra .= ($k == $selected ? " selected=\"selected\"" : '');
}
дописываем
Код: php
//Add disabled params
$extra2 = '';
$extra2 .= $id ? " id=\"" . $arr[$i]->id . "\"" : '';
if (is_array( $disabled )) {
foreach ($disabled as $obj2) {
$k3 = $obj2->$key;
if ($k == $k3) {
$extra2 .= " disabled=\"disabled\"";
break;
}
}
} else {
$extra2 .= ($k == $disabled ? " disabled=\"disabled\"" : '');
}
//
Далее вместо
Код: php
$html .= "\n\t<option value=\"".$k."\"$extra>" . $t . "</option>";
Пишем
Код: php
$html .= "\n\t<option value=\"".$k."\"$extra.$extra2>" . $t . "</option>";
Далее в нашем скрипте для элемента массива дописываем параметр
Код: php
$arr1[] = mosHTML::makeOption( '2', '22222', disabled );
и добавляем параметр $disabled в mosHTML::selectList
« Последнее редактирование: 20.06.2009, 18:09:24 от beliyadm »
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Валидация форм средствами Joomla

Автор VETERINAR

Ответов: 29
Просмотров: 38030
Последний ответ 09.10.2013, 15:14:44
от digitalheart
Как написать системный плагин для Joomla 1.5

Автор Sergey2

Ответов: 2
Просмотров: 28316
Последний ответ 23.06.2013, 15:28:38
от l-key
[how to] Красота JHTML, или создание элементов формы с

Автор Professor

Ответов: 11
Просмотров: 24006
Последний ответ 27.12.2012, 18:14:38
от BaR
Плагин рейтинга чего угодно для Joomla 1.5

Автор Obmor

Ответов: 54
Просмотров: 30721
Последний ответ 18.12.2012, 15:01:55
от Raimonds
Как вы "въехали" в создание расширений?

Автор aanvale

Ответов: 4
Просмотров: 2517
Последний ответ 13.10.2012, 21:44:25
от passer