Новости Joomla

Вышли релизы безопасности Joomla 6.1.4 и Joomla 5.4.9

Релиз безопасности Joomla 6.1.4 и Joomla 5.4.9

Проект Joomla! рад сообщить о выходе Joomla 6.1.4 и Joomla 5.4.9. Это релизы безопасности и исправления ошибок для серий 5.x и 6.x.

JoomShift - компонент переноса контента между Joomla сайтами.

‍ JoomShift - компонент переноса контента между Joomla сайтами.

JoomShift - компонент переноса контента между Joomla сайтами.Он позволяет экспортировать модули, меню, материалы, категории, пользовательские поля и пользователей в виде переносимых JSON/ZIP-файлов, а затем импортировать их в любую другую установку Joomla.

Возможности компонента:- Модули — полная настройка, назначение пунктов меню, позиционирование и содержимое SP Page Builder.
-Меню — иерархия родительских/дочерних элементов, типы элементов, ссылки, уровни доступа и параметры. Отсутствующие типы меню создаются автоматически, а элементы, указывающие на неустановленные компоненты, пропускаются с предупреждением.
-Статьи и категории — контент, метаданные, изображения и иерархия категорий.
-Пользовательские поля — группы полей, определения, ограничения по категориям и значения (включая поля с несколькими значениями) — экспортируются и автоматически создаются заново на целевом сайте.
-Пользователи — данные профиля, назначения групп и хэши паролей, чтобы учетные записи работали сразу после импорта.
-Кросс-версииJoomla - компонент адаптируется к различиям в схеме базы данных между версиями Joomla.
-Создан для крупных сайтов — постраничные списки (20/50/100/250строк) и автоматический пакетный экспорт для сайтов с более чем 500 элементами, поэтому он продолжает работать на обычном хостинге.
-Опция перезаписи — обновляет совпадающие элементы при повторном импорте вместо создания дубликатов.
-Drag-n-drop импорт с подробным отчетом о том, что было импортировано, обновлено или пропущено, и почему.

На момент написания заметки для скачивания необходима регистрация/логин на сайте разработчика.

-Joomla Extensions Directory-Страница расширения#joomla#расширения

Модуль joomLab JS Ajax Cart позволит организовать в Вашем интернет-магазине на компоненте JoomShopping удобную AJAX корзину с возможностью добавлять товары и изменять их количество без перезагрузки страницы.

Модуль joomLab JS Ajax Cart позволит организовать в Вашем интернет-магазине на компоненте JoomShopping удобную AJAX корзину с возможностью добавлять товары и изменять их количество без перезагрузки страницы.

Кроме этого, в состав пакета установки входит плагин, который позволяет выводить атрибуты товара в список всех товаров, менять эти атрибуты и добавлять товар в корзину из списка товаров. Если атрибутов много, то их можно выводить в всплывающем (модальном окне).

В модуле предусмотрено 2 макета дизайна для Bootstrap и UIkit и максимальная кастомизация для переопределения макетов в шаблон.Демо расширенияСтраница расширения

Видео в Telegram

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

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
<?php echo $this->form->getInput('cities'); ?>
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Вот пример того как можно использовать сетеры и геттеры в классе:
Спойлер
[свернуть]
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
<?php echo $this->form->getInput('cities'); ?>
Весь XML файл формы дайте! И покажите как выглядит поле после <?php echo $this->form->getInput('cities'); ?> на странице!
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Код: xml
<?xml version="1.0"?>
<form>
  <fieldset>
    <field name="cities" type="checkboxesdb" label="" src="crmt_city.id.city.published=1" addfieldpath="/administrator/components/com_crmtourism/models/fields"/>
    <field name="countries" type="checkboxesdb" label="" src="crmt_country.id.country.published=1" addfieldpath="/administrator/components/com_crmtourism/models/fields"/>
  </fieldset>
</form>

Во фронте на выходе:
Код: html4strict
<fieldset id="cities" class="checkboxes">
    <ul>
        <li>
            <input id="cities0" type="checkbox" value="1" name="cities[]"></input>
            <label for="cities0">Архангельск</label>
        </li>
        <li>
            <input id="cities1" type="checkbox" value="2" name="cities[]"></input>
            <label for="cities1">Астрахань</label>
        </li>
        тут еще 100500 аналогичных li
    </ul>
</fieldset>
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
А теперь модель формы
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Спойлер
[свернуть]
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
1. вы уверенны что  $this->item->cities = json_decode($this->item->cities, true); установилось то что надо? Пробовали в шаблоне посмотреть что в $this->item в результате?
2. Проверяли что приходит в значения поля? в
Код: php
protected function getInput()
  {
    print_r($this->value);
    return parent::getInput();
  }
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
getItem косячный...

if (!isset($this->item[$id])) - отрабатывает код. А если $this->item[$id] установлен, то у вас возвращается false. Как это? else return false; - убрать!

так должно быть:

Код: php
if (!isset($this->item[$id])) 
{
   получаем item
   $this->item[$id] = item;
}

return $this->item[$id];

Или если у Вас $this->item не массив, то:

Код: php
if (!isset($this->item)) 
{
   получаем item
   $this->item = item;
}

return $this->item;
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
1. уверен, о чем писал выше:
после $this->item->cities = json_decode($this->item->cities, true); пишу: print_r($this->item->cities);
на выходе: Array (
  • => 3 [1] => 4 [2] => 23 [3] => 37 )

2. в админке приходит: Array (
  • => 3 [1] => 4 [2] => 23 [3] => 37 )

во фронте ничего не приходит
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Пока мыслей нету.. все должно пахать..
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
  public function getItem($id = null) {
    if (!isset(
$this->item)) {

      
$user = JFactory::getUser();
      
$query = $this->_db->getQuery(true);
      
$query->select('id, joomid, cities, countries, rq_sm, rq_count, contactface, phones, skype, icq, adr')
        ->
from('`#__crmt_firms`')
        ->
where('`joomid` = '.(int)$user->id);
      
$this->_db->setQuery($query);
      
$this->item = $this->_db->loadObject(); // !
      
$this->item->name = $user->name;
      
$this->item->email = $user->email;
      
$this->item->cities = json_decode($this->item->cities, true);
      
print_r($this->item->cities); // Array ( [0]=> 3 [1] => 4 [2] => 23 [3] => 37 )
      
$this->item->countries = json_decode($this->item->countries, true);
      
$this->item->citycount = count($this->item->cities);
      
$this->item->countrycount = count($this->item->countries);

      
$query = $this->_db->getQuery(true);
      
$query->select('r.id, r.created, r.city, r.country, r.dt_departure_f, r.dt_departure_t, r.rest_days, r.adultscount, r.childscount, r.stars, r.fio, r.phone, r.email, r.descript, c.city as cityname, g.country as countryname')
        ->
join('LEFT', '#__crmt_city AS c ON c.id = r.city')
        ->
join('LEFT', '#__crmt_country AS g ON g.id = r.country')
        ->
from('`#__crmt_requests` as r')
        ->
where('r.city in ('.implode(', ', $this->item->cities).')')
        ->
where('r.country in ('.implode(', ', $this->item->countries).')')
        ->
order('r.created desc');
      
$this->_db->setQuery($query);
      
$this->item->rqlist = $this->_db->loadObjectList();
      
$rc = (int)$this->item->rq_count;
      if (
$rc < count($this->item->rqlist))
        
$this->item->rqlist = array_slice($this->item->rqlist, -$rc);

    }
    return 
$this->item;
  }


В итоге - тот же результат, флажки не ставятся
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
А точно флажки с с такими ID как в $this->item->cities есть в выводе?
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
100500
те же самые данные в точно таком же поле в админке отображаются нормально...
« Последнее редактирование: 13.01.2015, 13:23:08 от AlekVolsk »
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Ну у меня пока один вариант, продебажить содержимое getInput() (то есть перенести из родителя код get input) и посмотреть почему не ставятся данные!
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Перенес код getInput, перед перебором оптионс:
var_dump($this->value); => string(0) ""
var_dump(isset($this->value)); => bool(true)
var_dump(empty($this->value)); => bool(true)

var_dump($this->name); => string(8 ) "cities[]" - может, из-за скобок квадратных?
« Последнее редактирование: 13.01.2015, 13:42:01 от AlekVolsk »
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Ок. Хрен с ним, получу результаты конкретного запроса в модели и сформирую вывод поля во вьюхе вручную, попутно также ручками проставив галочки.

Как мне из поля получить данные (во фронте)?
вся форма во фронте:
Код: php
      <form action="/" method="post" id="citieslistform">
        <div class="uk-panel-title"><?php echo JText::_('COM_CRMT_POPUP_TITLE_CITY'); ?></div>
        <div class="desc muted"><?php echo JText::_('COM_CRMT_POPUP_DESC_CITY'); ?></div>
        <div class="controls">
          <?php echo $this->form->getInput('cities'); /* потом переделаю */ ?>
          <input type="hidden" name="id" value="<?php echo $this->item->id; ?>" />
          <input type="hidden" name="option" value="com_crmtourism" />
          <input type="hidden" name="task" value="pcto.savecities" />
          <?php echo JHtml::_('form.token'); ?>
        </div>
        <div class="uk-panel-footer">
          <a id="citieslistbtnsave" class="uk-button uk-button-primary"><?php echo JText::_('JSAVE')?></a>
          <a id="citieslistbtnclose" class="uk-button"><?php echo JText::_('JCANCEL')?></a>
        </div>
      </form>

на jq по клику на #citieslistbtnsave происходит #citieslistform.submit();

*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
ну у вас же таск pcto.savecities там и думайте как получить данные и направить их в модель ) Посмотрите ка к это делается в методе save
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
$cities = $input->getArray('cities'); => Catchable fatal error: Argument 1 passed to JInput::getArray() must be of the type array, string given, called in \controllers\pcto.php on line 13 and defined in \libraries\joomla\input\input.php on line 190
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
$cities = $input->getArray('cities'); => Catchable fatal error: Argument 1 passed to JInput::getArray() must be of the type array, string given, called in \controllers\pcto.php on line 13 and defined in \libraries\joomla\input\input.php on line 190
getArray делает не то что вы думаете )))))

Пример:
Код: php
$input = JFactory::getApplication()->input;
$data = array( 'option' => '', 'view' => '' );
print_r( $input->getArray( $data ) );//выведет Array ( [option] => com_content [view] => article)
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
блин, и как?
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
блин, и как?
$input = JFactory::getApplication()->input;
$cities = $input->get( 'cities', array(), 'array' );
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
получил, спс

я тут подумал, а может галочки не ставятся потому что в getOptions() стоит $option->checked = false; или это не влияет? убрать - в getInput ругается на несуществующий checked
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Естественно по тому и не ставится! Вот только почему там false?
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
А что туда поставить по умолчанию? ведь я заранее не знаю, какое значение там будет.
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Попробуйте так (это у вас в getOptions):
foreach ($items as $i => $item) {
          $option = JHtml::_('select.option', (string)$item->key, (string)$item->value, 'value', 'text', $this->disabled);
          $option->checked = true;
          $option->onclick = $this->onclick;
          $option->onchange = $this->onchange;
          $options[] = $option;
}
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Теперь галочки стоят все и везде! Даже в админке.
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
ну а теперь дело за малым!
$option->checked = in_array($item->value, (array)$this->value);
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
в админке норм, во фронте глухо, по прежнему
что-то все-таки упускаем, имхо, в модели, ибо еще на входе в getInput $this->value пуст
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
а перед foreach ($items as $i => $item) {
сделайте var_dump($item->value)
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
перед foreach $item еще не существует, а var_dump($this->value) возвращает string(0) ""
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Опциональное поле в форме

Автор borro

Ответов: 21
Просмотров: 2923
Последний ответ 28.12.2020, 12:16:13
от platonische
Как написать сложное кастомное поле?

Автор Gover

Ответов: 1
Просмотров: 1065
Последний ответ 11.07.2018, 00:14:34
от fsv
Если нужно добавить поле в subform repeatable своим ява скриптом - как сделать?

Автор Progreccor

Ответов: 7
Просмотров: 1599
Последний ответ 03.04.2018, 16:03:54
от Progreccor
Поле для прикрепления файлов в администраторе

Автор Joker_V

Ответов: 1
Просмотров: 1633
Последний ответ 09.04.2016, 21:17:02
от Joker_V
Добавляю поле Featured в компоненте

Автор platonische

Ответов: 6
Просмотров: 1642
Последний ответ 21.10.2015, 18:06:48
от Aleks.Denezh