Новости Joomla

Новый способ добавления и рендера полей в Joomla Form - метод renderControlFields() (Joomla 5.3+)

Новый способ добавления и рендера полей в Joomla Form - метод renderControlFields() (Joomla 5.3+)

Новый способ добавления и рендера полей в Joomla Form - метод renderControlFields() (Joomla 5.3+). При отображении форм компонента в админке раньше разработчикам нужно было описывать скрытые поля в лейаутах. И выглядело это так:

<?php     // Это файл в /layouts/components/com_component/your_layout.php?><input type="hidden" name="task" value=""><input type="hidden" name="return" value="<?php echo $input->getBase64('return'); ?>"><input type="hidden" name="forcedLanguage" value="<?php echo $input->get('forcedLanguage', '', 'cmd'); ?>"><?php echo HTMLHelper::_('form.token'); ?>
Начиная с Joomla 5.3 добавлен новый способ добавления таких полей (их называют control fields) - программно. И теперь это можно сделать просто в Controller / View.
// В Controller/View добавляем поля$this->form  ->addControlField('task', '')  ->addControlField('return', $input->getBase64('return', ''))  ->addControlField('forcedLanguage', $forcedLanguage);
А в layout'е просто используем метод
renderControlFields()
// В layout формыecho $this->form->renderControlFields();
Многие компоненты ядра уже используют этот подход. Соответствующий PR был принят в Joomla 5.3 осенью 2024г.Смотреть
Pull Request@joomlafeed#joomla #разработка #php

JoomGallery 4.1.0 - компонент галереи изображений для Joomla

JoomGallery 4.1.0 - компонент галереи изображений для Joomla

Новая итерация компонента продолжает развиваться, ведь с v.4.x компонент был переписан практически с нуля.

v.4.1.0. Что нового?

Редактирование метаданных изображений. Теперь метаданные можно не только читать, но и напрямую редактировать и записывать обратно в изображение JPG. Поддерживаются данные EXIF ​​и IPTC.

Полная совместимость с Joomla! 4.x, 5.x и 6.x. Компонент почистили от устаревших методов в коде.

Заметно ускорили загрузку больших галерей. Списки в админке, особенно для очень больших галерей ( >30 000 изображений), теперь загружаются значительно быстрее.

Несколько сеток lightGallery на одной странице. Будь то плагины контента или модули изображений: теперь вы можете отображать несколько галерей или категорий на одной странице без каких-либо ограничений.

Множество мелких исправлений ошибок и оптимизаций.

Сайт проекта

GitHub расширения

Скачать

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

tomas_morgam

  • Захожу иногда
  • 126
  • 0 / 0
Здравствуйте! Как можна реализовать следующее: пользователь находится на карточке товара и видит список всех товаров из выбранной категории с похожей или одинаковой ценой? Есть идея напрямую вытягивать этот список из БД, но не знаю как засунуть запрос сюда
Код
<div class="jshop_list_product">
    <table class = "jshop list_related">
        <?php foreach($this->related_prod as $k=>$product){?> 
            <?php if ($k%$in_row==0) print "<tr>";?>
            <td width="<?php print 100/$in_row?>%" class="jshop_related">
                <?php include(dirname(__FILE__)."/../".$this->folder_list_products."/".$product->template_block_product);?>
            </td>
            <?php if ($k%$in_row==$in_row-1) print "</tr>";?>   
        <?php }?>
        <?php if ($k%$in_row!=$in_row-1) print "</tr>";?>
    </table>
    </div>
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
во-первых, вы говорите о карточке товара, а показываете шаблон не карточки товара.
во-вторых, в чем именно проблема "засунуть запрос сюда" или в принципе куда угодно?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

tomas_morgam

  • Захожу иногда
  • 126
  • 0 / 0
во-первых, вы говорите о карточке товара, а показываете шаблон не карточки товара.
во-вторых, в чем именно проблема "засунуть запрос сюда" или в принципе куда угодно?
Вы правы, немного ошибся, код из модуля "Сопутствующие".
Здесь этот модуть и подключается
Код
<?php
    print $this->_tmp_product_html_before_related;
    include(dirname(__FILE__)."/related.php");
    print $this->_tmp_product_html_before_review;
    include(dirname(__FILE__)."/review.php");
?>
А как мне вывести (возможно типа "$query = "SELECT * FROM `m06wr_jshopping_products` WHERE `product_price` LIKE '3227'") список товаров с одинаковой ценой?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
ну так вы же сами пишите какой нужен запрос. его и делайте. я честно, просто не пойму в чем именно проблема :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

tomas_morgam

  • Захожу иногда
  • 126
  • 0 / 0
ну так вы же сами пишите какой нужен запрос. его и делайте. я честно, просто не пойму в чем именно проблема :)
Вопрос в том "как написать вывод товаров с одинаковой ценой"?
Код
$query = "SELECT * FROM `m06wr_jshopping_products` WHERE `product_price` LIKE '2000'";
echo $query;
Я вписываю этот код в карточку товара и в карточке отобразяться список товаров с ценой "2000"?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
нет конечно :) выведет
Цитировать
SELECT * FROM `m06wr_jshopping_products` WHERE `product_price` LIKE '2000'

почитайте, как работать с базой данных в Joomla
Код
$db = JFactory::getDBO();
и так далее
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

tomas_morgam

  • Захожу иногда
  • 126
  • 0 / 0
нет конечно :) выведет
почитайте, как работать с базой данных в Joomla
Код
$db = JFactory::getDBO();
и так далее
Ок, сделал по аналогии с примером
Код
$db = JFactory::getDbo();
$query = $db->getQuery(true);
 
$query
    ->select($db->quoteName(array('product_id', 'product_price', 'product_thumb_image', 'ordering')))
    ->from($db->quoteName('#__jshopping_products'))
    ->where($db->quoteName('product_price'). ' LIKE '. $db->quote('\'2125%\''))
    ->order('ordering ASC');
 
$db->setQuery($query);
$results = $db->loadObjectList();
print_r($results);
Но вообще ничего не выводит. Подскажите, пожалуйста, как исправить код?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
уберите \'
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

tomas_morgam

  • Захожу иногда
  • 126
  • 0 / 0
уберите \'
Так $db->quote('2125'))?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
нет, не так. уберите только \'
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

tomas_morgam

  • Захожу иногда
  • 126
  • 0 / 0
нет, не так. уберите только \'
$db->quote('185%'))
Без результатов
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
а так
Код
->where($db->quoteName('product_price'). ' LIKE "2125%"')
?

P.S. а что значит вообще ничего не выводит? именно вообще ничего? пустота?
« Последнее редактирование: 11.09.2015, 12:35:39 от dmitry_stas »
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

tomas_morgam

  • Захожу иногда
  • 126
  • 0 / 0
Давайте еще раз.
Задание - вывести товары у которых id равен 185 (потом переделаю под product_price).
Код
Код
$db = JFactory::getDbo();
$query = $db->getQuery(true);
 
$query
    ->select($db->quoteName(array('product_id', 'product_price', 'product_thumb_image', 'ordering')))
    ->from($db->quoteName('#__jshopping_products'))
    ->where($db->quoteName('product_id'). ' LIKE '. $db->quote('185'))
    ->order('ordering ASC');
 
$db->setQuery($query);
$results = $db->loadObjectList();
print_r($results);
В результате совсем ничего не выводится.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
а вы это вообще где делаете? сделайте после этого кода
Код
print_r($query->__toString());
что выведет?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

tomas_morgam

  • Захожу иногда
  • 126
  • 0 / 0
а вы это вообще где делаете? сделайте после этого кода
Код
print_r($query->__toString());
что выведет?
SELECT `product_id`,`product_price`,`product_thumb_image`,`ordering` FROM `#__jshopping_products` WHERE `product_id` LIKE '185%' ORDER BY ordering ASC
*

tomas_morgam

  • Захожу иногда
  • 126
  • 0 / 0
SELECT `product_id`,`product_price`,`product_thumb_image`,`ordering` FROM `#__jshopping_products` WHERE `product_id` LIKE '185%' ORDER BY ordering ASC
Разобрался, большое спасибо!
Код выборки по всем товарам
Код
SELECT `product_id` , `name_ru-RU` , `product_price` , `product_thumb_image`
FROM `m06wr_jshopping_products`
WHERE `product_price`
BETWEEN '8000'
AND '9000'
LIMIT 0 , 30
1) Как изменить чтобы была выборка по текущей категории в которую входит текущий товар (так как нюанс в том, что категории "сидят" в другой таблице products_to_categories).
2) Как получить имя товара?
   Думал так "print_r($results[0]->product_thumb_image);", но когда меняю переменную вместо "product_thumb_image" на "name_ru-RU" выводит "0".
« Последнее редактирование: 11.09.2015, 15:30:47 от tomas_morgam »
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
1. гуглите про LEFT JOIN
2. гуглите про тире в названии свойства объекта
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

tomas_morgam

  • Захожу иногда
  • 126
  • 0 / 0
1. гуглите про LEFT JOIN
2. гуглите про тире в названии свойства объекта
Про тире разобрался, а вот с LEFT JOIN не выходит.
Вот мой запрос
Код
SELECT `name_ru-RU` , `product_price` , `product_thumb_image`
FROM `m06wr_jshopping_products` AS prod
LEFT JOIN `m06wr_jshopping_products_to_categories` AS pr_cat ON pr_cat.`product_id` = prod.`product_id`
WHERE `product_price`
BETWEEN '8000'
AND '9000'
Запрос работает, выборка цены идет, но подтягиваются все товары, а не товары текущей категории в которую входит текущий товар.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
ну так а где в запросе указано, из какой категории?
Код
WHERE pr_cat.category_id = 'нужный id категории' AND `product_price`...
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

tomas_morgam

  • Захожу иногда
  • 126
  • 0 / 0
ну так а где в запросе указано, из какой категории?
Код
WHERE pr_cat.category_id = 'нужный id категории' AND `product_price`...
Указываю статически - ничего не выводиться, хотя такая категория есть.
Код
SELECT `name_ru-RU` , `product_price` , `product_thumb_image`
FROM `m06wr_jshopping_products` AS prod
LEFT JOIN `m06wr_jshopping_products_to_categories` AS pr_cat ON pr_cat.`product_id` = prod.`product_id`
WHERE pr_cat.category_id = '250' AND `product_price` BETWEEN '8000' AND '9000'
Но это не совсем то, мне нужно чтоб динамически - в карточке товара вывести товары только этой категории похожие по цене.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
ну так вставьте категорию данного товара, в чем проблема?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

tomas_morgam

  • Захожу иногда
  • 126
  • 0 / 0
ну так вставьте категорию данного товара, в чем проблема?
Проблема в том, как изменить sql запрос, так как не получается вставить текущую категорию данного товара.
« Последнее редактирование: 14.09.2015, 11:23:20 от tomas_morgam »
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
не получается вставить текущую категорию данного товара.
по какой причине?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

tomas_morgam

  • Захожу иногда
  • 126
  • 0 / 0
по какой причине?
Недостаточного опыта работы с прямыми sql запросами к базе.
Если проще, как изменить запрос (код указал выше) чтобы работала выборка по текущей категории?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
ааа, понятно. подумал, что вставляете, и ошибка какая то.

в карточке товара категория товара находится в $this->category_id
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вывести описание атрибута

Автор Napst3r

Ответов: 2
Просмотров: 1052
Последний ответ 31.07.2024, 12:24:00
от Napst3r
Вывести определённую характеристику отдельно от списка характеристик товара

Автор Silent_Breeze

Ответов: 52
Просмотров: 12143
Последний ответ 23.11.2023, 12:31:08
от YuryNew
Получить и вывести Статус заказов списком

Автор IgorGeneralov

Ответов: 5
Просмотров: 2438
Последний ответ 25.01.2023, 23:04:05
от IgorGeneralov
Вывод характеристик товара в списке товаров (категории)

Автор voland

Ответов: 4
Просмотров: 3522
Последний ответ 17.09.2022, 13:21:03
от victorantoniak
Вывести в списке товаров атрибуты

Автор Taatshi

Ответов: 41
Просмотров: 10195
Последний ответ 17.02.2020, 17:12:16
от resens