Новости Joomla

Компания JetBrains рассказала о своей поддержке Joomla

Компания JetBrains рассказала о своей поддержке Joomla

Компания JetBrains рассказала о своей поддержке Joomla.JetBrains - один из мировых лидеров в разработке программного обеспечения для разработчиков. Её программные продукты - это IDE - профессиональные среды разработки, которые отличаются от простого блокнота/редактора с плагинами набором всевозможных инструментов для разработчиков, глубоким анализом кодовой базы, подсказками по ней и по языку программирования, отладкой ошибок и многим-многим другим. Одним из самых известных продуктов компании является IDE PHP Storm, который можно назвать отраслевым стандартом PHP-разработчика. В статье How PhpStorm Helps Maintain PHP Open-Source Projects: Interviews and Real-World Examples в блоге компании описываются Open Source проекты, которым JetBrains оказывает поддержку (это могут быть бесплатные лицензии для разработчиков для некоммерческих проектов). В список попали:- PHPUnit - фреймворк для unit-тестирования в PHP- Doctrine DBAL - библиотека для PHP, которая предоставляет лёгкий и гибкий слой для коммуникации с базой данных. Она поддерживает различные базы данных через единый и согласованный API.- CodeIgniter — популярный MVC-фреймворк для разработки на PHP- 👩‍💻 Joomla! - наша любимая CMS.Эти названия (кроме "Joomla") чаще всего не слышат вебмастера и разработчики обычных сайтов и интернет-магазинов. Но эти названия хорошо знакомы PHP-разработчикам, которые создают сложные и высоконагруженные проекты и микросервисы. То, что Joomla оказалась в одном ряду с такими программными инструментами - делает ей честь. 🙏 За ссылку спасибо участнику нашего сообщества Ринату Кажетову (@rkazhet). @joomlafeed#joomla #community

Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1

Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1

👩‍💻 Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1. Это релиз, в который включены уже проверенные изменения, но ещё очень многие исправления и улучшения ждут своей очереди. Joomla следит за качеством и безопасностью своего кода и каждое изменение должно быть успешно протестировано как минимум ещё двумя участниками сообщества. Разработка Joomla ведётся на платформе GitHub.Филипп Уолтон (Philip Walton) - один из разработчиков, кто активно вносит свой вклад в ядро Joomla. Он уже несколько месяцев посвящает свои послеполуденные часы пятницы работе с Joomla и предлагает присоединиться к нему. 📆 Пятница, 30 мая 2025, с 15:00 до 17:00 по UTC (Лондон) - с 18:00 до 20:00 по Москве.В чате Google Meet Филипп готов помочь с тестированием тем, кто будет делать это в первый раз. А так же он подготовил список лёгких Pull Request, которые можно протестировать довольно быстро. Чем больше тестов будет проведено сейчас, тем меньше ошибок вылезет потом. На данный момент 148 (уже 147 на момент написания заметки) PR на GitHub Joomla ждут тестирования.👩‍💻 Open to all. All together.Также вам поможет сделать первые шаги это видео.GitHub JoomlaДа, это вечер пятницы. Но тестирование занимает порой минут 15, а доброе дело сделано. Просто убедитесь, что разработчик чего-то не пропустил и всё работает как ожидается.#joomla #joomla6 #community

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

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
Как многим известно, у ЖШ с сортировкой недоработки. Так вот периодически используя импорт, добавляются некоторые атрибуты, характеристики и их значения, и конечно же они не сортируются. После чего приходится заходить в опции атрибута и сортировать вручную.
Надоело.
Как я неоднократно упоминал, надо всего лишь немного воображения и логики. Результат:
Для атрибутов
Открываем файл \administrator\components\com_jshopping\controllers\attributesvalues.php
Ищем функцию saveorder(), и в ней после
Код
       $attr_id = JRequest::getInt("attr_id");
Добавляем
Код
       $table = &JTable::getInstance('attributValue', 'jshop');
        $AttributeValues = $table->getAllValues($attr_id);
        UnSet($table);
        $AllAttributeValues = Array();
        ForEach($AttributeValues As $AttributeValue){
            $AllAttributeValues[$AttributeValue->value_id] = $AttributeValue->name;
        }
        Array_MultiSort($AllAttributeValues, SORT_STRING, $cid);
        ForEach($AllAttributeValues As $Key => $AllAttributeValue){
         $order[$Key] = $Key;
        }
Теперь при нажатии на кнопку сохранить сортировку на этой странице (/administrator/index.php?option=com_jshopping&controller=attributesvalues&task=show&attr_id=тут номер атрибута) значения отсортируются по строковым значениям.

Для характеристик
Открываем файл \administrator\components\com_jshopping\controllers\productfieldvalues.php
Ищем функцию saveorder(), и в ней после
Код
       $field_id = JRequest::getInt("field_id");
Добавляем
Код
       $_ProductFieldValues = &$this->getModel("productFieldValues");
        $ProductFieldValues = $_ProductFieldValues->getList($field_id);
        UnSet($_ProductFieldValues);
        UnSet($order);
        $AllProductFieldValues = Array();
        ForEach($ProductFieldValues As $ProductFieldValue){
            $AllProductFieldValues[$ProductFieldValue->id] = $ProductFieldValue->name;
        }
        Array_MultiSort($AllProductFieldValues, SORT_STRING, $cid);
        ForEach($AllProductFieldValues As $Key => $AllProductFieldValue){
         $order[$Key] = $Key;
        }
Теперь при нажатии на кнопку сохранить сортировку на этой странице (/administrator/index.php?option=com_jshopping&controller=productfieldvalues&field_id=тут номер характеристики) значения отсортируются по строковым значениям.
P.S. Теряется возможность указывать сортировку вручную указав номера (Только стрелками вверх и вниз)
« Последнее редактирование: 12.05.2012, 11:37:14 от Linfuby »
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

Maxum

  • Давно я тут
  • 689
  • 32 / 1
Подскажите, последнее - это и для характеристик или только для значений характеристик? Код добавлен, в характеристиках изменений пока не видно.
Пока категории остались в своём порядке, не по алфавиту, и сортировка вручную, с указанием номера, работает.
*

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
Подскажите, последнее - это и для характеристик или только для значений характеристик? Код добавлен, в характеристиках изменений пока не видно.
Пока категории остались в своём порядке, не по алфавиту, и сортировка вручную, с указанием номера, работает.
Это только для опций.
Сохранение с указанием номеров порядка перестает работать, но стрелками можно перемещать позиции.
Для самих характеристик думаю по той же аналогии можно сделать. Поищите функцию сортировки в файле \administrator\components\com_jshopping\controllers\productfields.php
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

Maxum

  • Давно я тут
  • 689
  • 32 / 1
Программирование по аналогии гуманитарием - страшная вещь ))). Получилось вот такое, пока работает:
файл \administrator\components\com_jshopping\controllers\productfields.php, в функцию saveorder() после

Код
 $field_id = JRequest::getInt("field_id");

добавлено

Код
$_ProductFields = &$this->getModel("productFields");
        $ProductFields = $_ProductFields->getList($field_id);
        UnSet($_ProductFields);
        UnSet($order);
        $AllProductFields = Array();
        ForEach($ProductFields As $ProductField){
            $AllProductFields[$ProductField->id] = $ProductField->name;
        }
        Array_MultiSort($AllProductFields, SORT_STRING, $cid);
        ForEach($AllProductFields As $Key => $AllProductField){
         $order[$Key] = $Key;
        }

Спасибо!
*

Maxum

  • Давно я тут
  • 689
  • 32 / 1
И ещё вопрос про аналогии: а можно ли оставить для фронтенда сайта сортировку характеристик в произвольном порядке, но сделать, чтобы они шли по алфавиту при добавлении товара?
*

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
И ещё вопрос про аналогии: а можно ли оставить для фронтенда сайта сортировку характеристик в произвольном порядке, но сделать, чтобы они шли по алфавиту при добавлении товара?
То есть чтобы в карточке товара было например согласно их порядку:
1. Цвета: Красный, Синий
2. Размеры: 56, 62

А при редактировании карточки товара было по алфавиту
2. Размеры
1. Цвета
Я правильно понял?
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

Maxum

  • Давно я тут
  • 689
  • 32 / 1
Да, всё верно, именно так и нужно.
*

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
Откроем файл \administrator\components\com_jshopping\controllers\products.php
Найдем функцию _getHtmlProductExtraFields($categorys, $product)
После
Код
$list = $_productfields->getList(1);
Допишем код:
Код
        function mySort($f1,$f2){
            if($f1->name < $f2->name) return -1;
            elseif($f1->name > $f2->name) return 1;
            else return 0;
        }
        uasort($list, "mySort");
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

Maxum

  • Давно я тут
  • 689
  • 32 / 1
Спасибо ещё раз, вот этот вариант наиболее подходящий: и на сайте логично, и в админке удобно. Благодарю!
*

jorevo

  • Давно я тут
  • 595
  • 13 / 1
Linfuby, а не подскажите как сделать сортировку опций атрибута по названию в админной части карточки товара (ну то есть там, где мы товару собственно и добавляем атрибуты из списка опций). Просто по умолчанию опции эти располагаются по времени добавления, а хотелось бы по человечески - по названиям опций последовательно (по первому атрибуту, второму, третьему и тд.).

ЗЫ. Первое вложение - по умолчанию (по мере добавления), второе - как надо.

[вложение удалено Администратором]
« Последнее редактирование: 08.04.2013, 05:16:36 от jorevo »
*

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
Linfuby, а не подскажите как сделать сортировку опций атрибута по названию в админной части карточки товара (ну то есть там, где мы товару собственно и добавляем атрибуты из списка опций). Просто по умолчанию опции эти располагаются по времени добавления, а хотелось бы по человечески - по названиям опций последовательно (по первому атрибуту, второму, третьему и тд.).
Как я вас понимаю...
А Вы не пробовали решение из первого топика? Ведь насколько я помню в карточке атрибуты показываются согласно сортировке в списке атрибутов в Опциях.
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

jorevo

  • Давно я тут
  • 595
  • 13 / 1
А Вы не пробовали решение из первого топика? Ведь насколько я помню в карточке атрибуты показываются согласно сортировке в списке атрибутов в Опциях.

Попробовал, не работает. Удаленный и заново добавленный в товар атрибут становится в списке в конец (см. вложение). Подозреваю что в карточке товара вообще сортировки как таковой нет, как в базу записано, в том порядке и выводится.

[вложение удалено Администратором]
*

jorevo

  • Давно я тут
  • 595
  • 13 / 1
Насколько я понял искомое находится в /administrator/components/com_jshopping/views/product_edit/tmpl/attribute.php c 75 строки:

Код
               foreach($lists['all_attributes'] as $key=>$value){
                    $tmp_field = "attr_".$value->attr_id;
                    $tmp_val = $v->$tmp_field;
                    $tmp_val_val = $lists['attribs_values'][$tmp_val]->name;
                    $image_ = "";
                    if ($lists['attribs_values'][$tmp_val]->image!=''){
                        $image_ = "<img src='".$jshopConfig->image_attributes_live_path."/".$lists['attribs_values'][$tmp_val]->image."' align='left' hspace='5' width='16' height='16' style='margin-right:5px;' class='img_attrib'>";
                    }
                    print "<td><input type='hidden' name='attrib_id[".$value->attr_id."][]' value='".$tmp_val."'>".$image_.$tmp_val_val."</td>";
               }

Вот куда то сюда кажется и надо воткнуть сортировку. Подскажите как?
*

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
Я попробовал. Полчаса убил на понимание структуры и у меня ничего не получилось, только из-за того что я не могу связать две таблицы по динамическому названию колонки (attr_1, attr_2 и т.д.)
ЖШ в этом плане конечно не удобен.
Поэтому я заявляю что с таким методом хранения данных невозможно делать необходимую Вам сортировку.
Может найдется кто поумнее меня и найдет таки решение этой задачи...
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

jorevo

  • Давно я тут
  • 595
  • 13 / 1
А я вот смотрю в фронт-энд карточки товара атрибуты выводятся в том же порядке, что задано в админке в опциях атрибутов. Вобщем то этого достаточно, один раз расставить их там как надо не проблема. По аналогии тоже самое сделать такое для закладки атрибуты в админке не получится?
*

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
Получится. Но для этого надо будет сделать достаточно много переделок.
Если у Вас всего 1 атрибут и больше не предвидится, то это можно сделать модифицировав всего 1 функцию.
Замените функцию getAttributes() в файле /components/com_jshopping/tables/product.php
Код
    function getAttributes(){
$lang = JSFactory::getLang();
        $query = "SELECT * FROM `#__jshopping_products_attr` LEFT JOIN `#__jshopping_attr_values` ON attr_1=value_id WHERE product_id = '".$this->product_id."' ORDER BY (`name_".$lang->lang.'` + 0)';
        $this->_db->setQuery($query);
        return $this->_db->loadObjectList();
    }
Внимание! Заменить в SQL-запросе attr_1 на attr_ID Вашего атрибута.
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

jorevo

  • Давно я тут
  • 595
  • 13 / 1
Получится. Но для этого надо будет сделать достаточно много переделок.

Ох, пойду тогда наверное разработчиков тиранить в "хотелки", а то и так магазин уже в сплошных заплатках. Спасибо!
*

Nocopyrights

  • Новичок
  • 5
  • 1 / 0
Можно ли аналогичным образом отсортировать список производителей? Подскажите, пожалуйста.
*

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
Можно ли аналогичным образом отсортировать список производителей? Подскажите, пожалуйста.
Конечно можно.
По факту там же (/components/com_jshopping/tables/) искать файл manufacturer.php Искать там функцию getManufacturers() или getAllManufacturers() и смотреть какой там ORDER BY и при необходимости поменять на свой
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

Nocopyrights

  • Новичок
  • 5
  • 1 / 0
Спасибо большое, но не работает (
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться