Новости Joomla

Человек на GitHub ускорил Joomla в 600 раз на объёме 150к+ материалов в 1700+ категориях

Человек на GitHub ускорил Joomla в 600 раз на объёме 150к+ материалов в 1700+ категориях

👩‍💻 Человек на GitHub ускорил Joomla в 600 раз на объёме 150к+ материалов в 1700+ категориях. На старте его сайт на Joomla 3 вообще не смог обновиться на Joomla 5. Пришлось делать экспорт/импорт материалов. Проделав всё это он запустил-таки этот объём данных на Joomla 5. Тестовый скрипт грузил 200 материалов из этого объёма всего за 94 секунды ))) А главная страница с категориями грузилась 20 секунд. Добавив индекс для таблицы #__content

CREATE INDEX idx_catid_state ON #__content (catid, state);
он сократил время загрузки категорий до 1 секунды. Затем наш герой решил поковырять SQL-запрос в ArticleModel, который отвечает за выборку материалов. И решил заменить тип JOIN на STRAIGHT_JOIN для категорий.
// ->from($db->quoteName('#__content', 'a'))->from(    $db->quoteName('#__content', 'a')    . ' STRAIGHT_JOIN ' . $db->quoteName('#__categories', 'c')    . ' ON ' . $db->quoteName('c.id') . ' = ' . $db->quoteName('a.catid'))// ->join('LEFT', $db->quoteName('#__categories', 'c'), $db->quoteName('c.id') . ' = ' . $db->quoteName('a.catid'))
Что сократило загрузку 200 материалов из 150к с 94 секунд до 5. К слову сказать, боевой сайт на Joomla 3 крутится на 12CPU 64GB рамы. А все манипуляции с кодом он делает на базовом 1CPU 1GB сервере и замеры скорости даны именно для базового сервера. Но это всё в дискуссии, хотя в идеале должно вылиться в Pull Requests. Мы - Open Source сообщество, где никто никому ничего не должен. Джунгли. Но человек ищет пути оптимизации Joomla и предлагает решения. Если оказать поддержку и предложить помощь хотя бы с тестированием самых разнообразных сценариев, то возможно эти улучшения смогут войти в ядро. Пусть не быстро, пусть через несколько лет, пусть не все, но войдут. Достаточно предложить руку помощи и приложить немного усилий.
Дискуссию на GitHub можно почитать здесь.@joomlafeed#joomla #community #php

Перевод и публикация интервью с Joomla евангелистом на греческом портале Joomla

Перевод и публикация интервью на греческом портале Joomla 🇬🇷

Утро, просматриваешь входящие письма и изучаешь новости и внезапно обнаруживаешь, что инициатива, которую ты начал, подхватывается другими людьми. 🎉

Недавно я взял интервью у Билла (Василиса) Коциаса - руководителя студии, читающего лекции в университете и популяризатора Joomla в Греции. Это интервью из журнала NorrNext, в оригинале на английском, теперь доступно на греческом языке и опубликовано на портале joomla.gr. 🎉

До чего же приятно… 😇😊 Работа замечена и с ней посчитали необходимым ознакомить аудиторию страны, в которой Билл читает лекции. И это солнечная Греция - страна, страна, с которой Россию многое связывает. 🇬🇷🇷🇺🕊

Смотрю на греческий алфавит и тут же рисуются картины белоснежных зданий в окружении винограда и амфор, красивых женщин в сандалиях и мужественных воинов, охраняющих покой полисов, в которых ученые мужи работают над трудами, позже вошедшими в века. Красиво! 😇Но вернемся к интервью.

Из него вы узнаете, что в Греции доля Joomla среди CMS занимает порядка 30-40%. По моему мнению это - самый высокий показатель во всем мире. Также чтение лекций о Joomla в университетах позволит привести новых пользователей и к тому же молодое поколение. Ну и огромное кол-во сертификтатов Билла на стене (смотрим фото в статье) свидетельствует о том, что Joomla может применяться как профессиональный инструмент.

🌐 Оригинальное интервью (на английском)
🇬🇷 Интервью на греческом портале (joomla.gr)

Что насчет перевода на русский? Увы, времени всего 24 часа в сутках. Я продолжаю готовить новые интервью. Возможно, после завершения выпуска журнала, рассмотрю перевод некоторых интервью на русский. Но я об этом не говорил. 😊 В блоге @eugenius_blog публикую анонсы интересных событий из мира Joomla, интервью, уроки и полезные советы, а также делюсь мыслями:, связанными с разработкой и веб-дизайном.

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

CrazyPedro

  • Осваиваюсь на форуме
  • 14
  • 0 / 0
  • Только Учусь
Подскажите есть у кого product.php для VM 3.0.4  (Cherry Picker 3.7) Или инструкция, с ног сбился не могу найти.
Извините если не туда тему оформил!
*

alexfom_16

  • Захожу иногда
  • 257
  • 24 / 0
Рекомендую хостинг Beget.ru
Качественная настройка и ведение Яндекс.Директ.
*

Carlsson

  • Новичок
  • 1
  • 0 / 0
Re: product.php для VM 3.0.4 (Cherry Picker 3.7)
« Ответ #2 : 23.04.2015, 16:18:56 »
У меня такое же сочетание. Не могу понять, вроде для VM 3 уже ничего менять не надо. Но вот для CP не понятно...на сайте написано начиная с 3.8, а значит 3.7 надо как то подружить с VM 3.
*

garabec

  • Новичок
  • 8
  • 0 / 0
Re: product.php для VM 3.0.4 (Cherry Picker 3.7)
« Ответ #3 : 12.10.2015, 12:12:13 »
Та же фигня.
Если стоит Cherry Picker Product Types версией ДО 3.8, то нужно вносить правки в файл  product.php
Включить фильтрацию по цене получается. А запустить фильтрацию по полям фильтра не получается.
*

garabec

  • Новичок
  • 8
  • 0 / 0
Re: product.php для VM 3.0.4 (Cherry Picker 3.7)
« Ответ #4 : 16.10.2015, 18:33:21 »
Короче есть решение!
у меня, по крайней мере, работает:
Нужно внести изминения в файл
/administrator/components/com_virtuemart/models/product.php

После кода:
               $joinShopper = TRUE;
            }
         }
Вставляем:
// galt: begin edit 1 of 6
         $additionalTableJoins = '';
         $useDefaultVMManufacturers = true;
         if ((isset($isSite) && $isSite) || $app->isSite()) {
            $cp_added_prices = false;
            // ----------------------------------
            // Cherry Picker Product Types 3
            // ----------------------------------
            $cpProductTypesHelper = JPATH_BASE .'/modules/mod_vm_cherry_picker/helpers/vmFilterProcessor.php';
            if (file_exists($cpProductTypesHelper)) {
               require_once($cpProductTypesHelper);
               $prices = VMFilterProcessorPT::getPriceSelection();
               if ($prices) {
                  // New, more sophisticated way to search by prices
                  if (is_array($prices)) {
                     $additionalTableJoins .= ' '. $prices['join'];
                     $where[] = $prices['where'];
                     if ($prices['join_manufacturers'])
                        $joinMf = true;
                  } else {
                     $where[] = $prices;
                  }

                  $joinPrice = true;
                  $cp_added_prices = true;
               }

               $filtersData = VMFilterProcessorPT::getFilterSelection();
               if ($filtersData) {
                  $where[] = $filtersData['where'];
                  $additionalTableJoins .= ' '. $filtersData['join'];

                  //$_SESSION['pt_filters_where'] = $filtersData['where'];
                  //$_SESSION['pt_filters_join'] = $filtersData['join'];
               } else {
                  //$_SESSION['pt_filters_where'] = null;
                  //$_SESSION['pt_filters_join'] = null;
               }

               if (method_exists('VMFilterProcessorPT', 'getManufacturersSelection')) {
                  $manufacturers = VMFilterProcessorPT::getManufacturersSelection();
                  if ($manufacturers) {
                     $where[] = $manufacturers;
                     $joinMf = true;
                     $useDefaultVMManufacturers = false;
                  }
               }
            }


            // ----------------------------------
            // Cherry Picker Custom Fields 2
            // ----------------------------------
            $cpCustomFieldsHelper = JPATH_BASE .'/modules/mod_vm_cherry_picker_cf/helpers/vmFilterProcessor.php';
            if (file_exists($cpCustomFieldsHelper)) {
               require_once($cpCustomFieldsHelper);
               // If there are CF and PT versions of CP on page, process prices just once
               if ( !$cp_added_prices && ($prices = VMFilterProcessorCF::getPriceSelection())) {
                  // New, more sophisticated way to search by prices
                  if (is_array($prices)) {
                     $additionalTableJoins .= ' '. $prices['join'];
                     $where[] = $prices['where'];
                     if ($prices['join_manufacturers'])
                        $joinMf = true;
                  } else {
                     $where[] = $prices;
                  }
                  $joinPrice = true;
               }

               $join = VMFilterProcessorCF::getFilterSelection();
               if ($join)
                  $additionalTableJoins .= ' '. $join;
               //$_SESSION['cf_filters_join'] = $join;
               // If manufacturers weren't processed by PT version
               if ($useDefaultVMManufacturers &&
                  method_exists('VMFilterProcessorCF', 'getManufacturersSelection')) {
                  $manufacturers = VMFilterProcessorCF::getManufacturersSelection();
                  if ($manufacturers) {
                     $where[] = $manufacturers;
                     $joinMf = true;
                     $useDefaultVMManufacturers = false;
                  }
               }
            }
         }
         // galt: end edit 1

         // galt: edit 2 of 6
         // We use Cherry Picker's method for front-end as it is able
         // to manage multiple Manufacturers selection
         if ($this->virtuemart_manufacturer_id && $useDefaultVMManufacturers) {
            $joinMf = true ;
            $where[] = ' `#__virtuemart_product_manufacturers`.`virtuemart_manufacturer_id` = '.$this->virtuemart_manufacturer_id;
         }

ПЕРЕД
if (count ($where) > 0) {
         $whereString = ' WHERE (' . implode ("\n AND ", $where). ') ';
      }
вставляем:
      // galt: edit 3 of 6
      // Include additional table JOINs
      if ($additionalTableJoins)
         $joinedTables[] = ' '. $additionalTableJoins;
      // galt: end edit 3
всего три вставки.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Добавление нового поля в таблицу product

Автор Jenechka

Ответов: 0
Просмотров: 891
Последний ответ 29.02.2016, 10:52:59
от Jenechka
Как поменять значение "Product Types" в Cherry Picker?

Автор otec1klas

Ответов: 2
Просмотров: 1644
Последний ответ 18.03.2015, 14:45:52
от Xammax
Как активировать счетчик в SP VirtueMart Product Slider?

Автор buzum

Ответов: 0
Просмотров: 1164
Последний ответ 19.11.2014, 15:15:03
от buzum
Проблема Cherry Picker для Joomla 2.5 и VirtueMart 2

Автор Volos

Ответов: 0
Просмотров: 1132
Последний ответ 08.04.2014, 16:32:43
от Volos
Fast Seller и Cherry Picker для категории товаров

Автор katjuha6

Ответов: 0
Просмотров: 1110
Последний ответ 15.01.2014, 07:39:11
от katjuha6