Новости Joomla

Вышел компонент интернет-магазина HikaShop 6.1.0.Один из известных компонентов магазина для Joomla

Вышел компонент интернет-магазина HikaShop 6.1.0.Один из известных компонентов магазина для Joomla

👩‍💻 Вышел компонент интернет-магазина HikaShop 6.1.0.Один из известных компонентов магазина для Joomla.v.6.1.0 Что нового?Модуль корзины. Отображение корзины в виде offcanvas-элемента.Кнопка выхода в панели управления пользователя. Что тут сказать, просто добавили. Отправка писем только для заказов, оплаченных определёнными способами. Это удобно для рассылки сообщений, привязанных к региону или провайдеру (например, инструкции по банковскому переводу только для заказов, оплаченных банковским переводом).Листинг выплат по партнерской системе. В разделе управления партнёрскими программами появилось новое подменю «Выплаты», в котором перечислены выплаты партнёрам (упрощённое отслеживание и сверка). Добавлены настройки, благодаря которым можно определить категории товаров, на которые начисляется партнёрская комиссия с продаж.Список комплектов товаров. Система комплектов позволяет отслеживать остатки товаров, продаваемых в комплекте.Подробнее в блоге Hikashop.Поскольку мы не сообщали ранее о Hikashop 6.0, то вкратце скажем, что он вышел в июне 2025г. В новой версии было:- 13 исправлений ошибок- 17 улучшений. В частности:- - Hikashop теперь проверяет UserAgent пользователя перед добавлением товара в корзину, чтобы отсечь ботов. Ведь компонент хранит корзины в базе данных.- - улучшен роутинг компонента, позволяющий использовать в названии товара даже слеши.- - улучшения фильтра товаров - ускорение загрузки категорий/брендов/характеристик.- 4 новых функции:- - добавлена поддержка Joomla 6.0.- - Улучшена возможность адаптации форм HikaShop на фронтенде к шаблонам, не использующим стандартные классы Joomla.- - Плагин внутреннего баланса: возможность исключить уцененные товары из начисленных баллов.- - Теперь можно выбирать склады для вариантов товаров.Подробнее в Changelog Hikashop.Также при работе с Hikashop стоит учитывать, что один и тот же код поддерживает версии Joomla от 3.х до 5.х, а в таблице сравнения версий заявлена и Joomla 2.5. Беглый просмотр кода показал, что компонент как был, так и остался старым и для совместимости с Joomla 4+ просто добавлен плагин.@joomlafeed#joomla #расширения #hikashop

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

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
В меню, когда указываешь тип "Материал", появляется возможность выбора этого материала: поле с кнопкой вызова модального окна с формой со списком материалов.
Имеются ли штатные средства J3 для указания в представлении компонента аналогичного поля, только для выбора пользователя, при этом с фильтром и полем поиска в форме (в идеале)?
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Спс. Это вариант для xml-конфига. А как его добавить в шаблон представления (конфиг или само поле)?

В представлении:
Код: html4strict
    <div class="control-group">
      <div class="controls mfix">
        <label for="cl_login" class="control-label"><?php echo JText::_('COM_MFO_FORM_LOGIN'); ?></label>
        <input class="input_box" id="cl_login" name="cl_login" type="text" size="57" />
        <input class="btn btn-danger" type="button" value="<?php echo JText::_('COM_MFO_FORM_CLLOGIN'); ?>" onclick="ClearLoginButton()"/>
      </div>
    </div>
Как можно input_box заменить на поле со списком выбора пользователя?
« Последнее редактирование: 21.04.2014, 11:18:44 от AlekVolsk »
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Вам нужно при создании пункта меню сделать выбор юзера?
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Нет, в отдельном представлении в своем компоненте.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Если бы был XML, то просто тип поля указать, а в HTML только взять это поле в другом месте и перенести его код себе.
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Нет, в отдельном представлении в своем компоненте.
Так получается у вас форма же, в которой нужно выбрать это поле, так почему вы не используете XML для формы?
изучите файл libraries/cms/form/field/user.php (это в тройке), там код как вставляется такое поле!
« Последнее редактирование: 21.04.2014, 12:33:27 от Istaan »
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Спс.
Пока не изучил user.php, сделал проверку на корректность ручного ввода логина, будет ли так корректно:
Код: php
  protected function _ClearLoginData()
  {
    $db = JFactory::getDbo();
    $login = $db->quote(JFactory::getApplication()->input->getString('cl_login'));
    $count_users = $db->setQuery('select count(id) from #__users where username = '.$login)->loadAssoc();
    if (($count_users['count'] == 0)||(empty($count_users))) {
      JError::raiseWarning('', JText::_('COM_MFO_FORM_LOGIN_EXIST_ERROR'));
      return false;
    }
    $db->setQuery('DELETE FROM #__mfo_docums WHERE client = '.$login)->execute();
    $db->query();
    $db->setQuery('DELETE FROM #__mfo_accounts  WHERE client = '.$login)->execute();
    $db->query();
    return true;
  }
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Код: php
$cont_users = $db->setQuery('select count(id) from #__users where username = '.$db->quote($login))->loadResult();
if(!$cont_users){
      JError::raiseWarning('', JText::_('COM_MFO_FORM_LOGIN_EXIST_ERROR'));
      return false;
}

Код: php
$db->setQuery('DELETE FROM #__mfo_docums WHERE client = '.$db->quote($login))->execute();
$db->query();
что это? вы два раза выполняете запрос один и тот же!
Сначала  через ->execute(); потом ниже этот же запрос в строке $db->query();! $db->query(); - это тоже самое что и execute();
Оставить просто так:
Код: php
$db->setQuery('DELETE FROM #__mfo_docums WHERE client = '.$db->quote($login))->execute();
$db->setQuery('DELETE FROM #__mfo_accounts  WHERE client = '.$db->quote($login))->execute();
return true;
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
$db->query(); - это тоже самое что и execute();
Вроде бы такая мелочь, а даже об этом толком почитать негде.
Спасибо!
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Вроде бы такая мелочь, а даже об этом толком почитать негде.
Спасибо!
Каким редактором вы пользуетесь для написания скриптов? Просто например в PhpStorm такие методы автоматом подчеркиваются с помощью IDE!
Вот посмотрите:

Видите метод quote перечеркнут! Если наведем на него увидим подсказку "Method query is deprecated" что переводится как "Метод query устарел"!
Если мы с нажатым CTRL нажмем левой кнопкой по перечеркнутому методу query то попадем в в класс JDatabase в котором описан метод query и там будет такое:
Код: php
	/**
* Execute the SQL statement.
*
* @return  mixed  A database cursor resource on success, boolean false on failure.
*
* @since   11.1
* @throws  RuntimeException
* @deprecated  13.1 (Platform) & 4.0 (CMS)
*/
public function query()
{
JLog::add('JDatabase::query() is deprecated, use JDatabaseDriver::execute() instead.', JLog::WARNING, 'deprecated');

return $this->execute();
}
Посмотрите внимательно код метода, и можете почитать комментарии к методу!
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
:( у меня самый начальный уровень новичка (типа "чайник")
notepad++
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
:( у меня самый начальный уровень новичка (типа "чайник")
notepad++
Переходите на нормальную среду для разработки )
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
под рукой embarcadero radstudio, в комплекте radphp, но я не знаю, имеется ли там поддержка J?
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
под рукой embarcadero radstudio, в комплекте radphp, но я не знаю, имеется ли там поддержка J?
Я же вам уже написал какой редактор считается лучшим для PHP - PhpStorm )
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Код: php
$login = "1 OR 1 = 1"
$db->setQuery('DELETE FROM #__mfo_docums WHERE client = '.$db->quote($login))->execute();
поздравляю, ваша таблица пуста))
интернет-блог: http://websiteprog.ru
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
под рукой embarcadero radstudio, в комплекте radphp, но я не знаю, имеется ли там поддержка J?
Я же вам уже написал какой редактор считается лучшим для PHP - PhpStorm )
Из бесплатных лучший NetBeans, ну а платный PhpStorm
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Код: php
$login = "1 OR 1 = 1"
$db->setQuery('DELETE FROM #__mfo_docums WHERE client = '.$db->quote($login))->execute();
поздравляю, ваша таблица пуста))
Об этом я спрашивал еще в #81 посте. Отсюда и рассматривается необходимость проверки логина. а еще лучше его выбора из списка (см историю переписки последних 25 постов)
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Код: php
$login = "1 OR 1 = 1"
$db->setQuery('DELETE FROM #__mfo_docums WHERE client = '.$db->quote($login))->execute();
поздравляю, ваша таблица пуста))

Только что выполнил:
Код: php
$login = "1 OR 1 = 1";
$db->setQuery( 'DELETE FROM #__article WHERE title = ' . $db->quote( $login ) )->execute();
print_r( $db->getErrorMsg() );
Почему моя таблица не пуста? Что я делаю не так?
А я могу сказать что я делаю не так!
Строка результирующая увы DELETE FROM dep_article WHERE title = '1 OR 1 = 1' а не как вам хотелось DELETE FROM dep_article WHERE title = 1 OR 1 = 1, и пытается запрос удалить всего лишь строку  '1 OR 1 = 1'..
Так что ваш коварный план, разбился как рыба об лед..
Проверять надо перед тем как такие предположения делать!
« Последнее редактирование: 21.04.2014, 13:55:04 от Istaan »
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Я, кстати, не вижу логики в "1 OR 1 = 1": если такого логина нет (а он в принципе не может существовать, имхо), то никакого удаления не произойдет, т.к. используется экранирование ($db->quote), а если экранирования не будет. то как это очистит всю таблицу? Я с мускулом мало (почти не-) работал, а в interbase это просто вызовет ошибку синтаксиса.
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Я, кстати, не вижу логики в "1 OR 1 = 1":
Я выше расписал в чем логика )
Если выполнить запрос:
Код: sql
DELETE FROM prefix_mfo_docums WHERE title = 1 OR 1 = 1
тогда да у нас удалятся все строки из таблицы Но у нас то что передается через $_REQUEST заворачивается Через $db->quote() в кавычки! И на выходе мы имеем запрос такого вида:
Код: sql
DELETE FROM prefix_mfo_docums WHERE title = '1 OR 1 = 1' 
И уже SQL инъекция не срабатывает! Потому что условие в кавычках одинарных и считается строкой ) И запрос совсем другой получается )
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
ну да точняк в этом и смысл db->qoute(), однако думаю что все же это не панацея . Почему нет в Joomla подготовленных запросов?
интернет-блог: http://websiteprog.ru
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
ну да точняк в этом и смысл db->qoute(), однако думаю что все же это не панацея . Почему нет в Joomla подготовленных запросов?
Может потому что это не совсем фреймворк?)
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Мне непонятен сам механизм работы title 1, если title - это строковое поле, то почему не возникает исключение при попытке передачи значения не-строки?
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Мне непонятен сам механизм работы title 1, если title - это строковое поле, то почему не возникает исключение при попытке передачи значения не-строки?
Учловие если title = 1 ИЛИ 1=1 вторая часть запроса всегда верна, и удалится все!
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Во фронте необходимо реализовать следующее.
Одно представление: список договоров юзера. С этим проблем нет, это одна таблица. При двойном клике на строку (конкретный договор) или при выделении строки и нажатии на кнопку необходимо вывести второе представление.
Второе представление: список документов по договору, это другая таблица. Тому самому, что был выделен (по которому был двойной клик) в первом представлении, при этом данные по этому договору (некоторые столбцы первой таблицы) также должны быть отображены.

Как альтернатива.
Оба представления объединяем в одно, документы по договору выводим в модальном окне, или вложенной таблицей сразу под строкой договора.

Как можно реализовать? Представления я нарисую, интересует, как построить модели, таблицы (JTable) и прочее сопутствующее. Где можно образец посмотреть?
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
*

AlekVolsk

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

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Как из модели одной модели модно передать переменную (ее значение) в другую модель?
Через урл возможно такое?
*

passer

  • Завсегдатай
  • 1013
  • 75 / 3
Зачем. Выведите данные из двух моделей/таблиц в одном представлении и все. Или если таблицы связанные то в модели второго представления напишите метод с запросом из двух связанных таблиц (join) и вызовите его в преставлении.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться