Новости 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 Гость просматривают эту тему.
  • 5 Ответов
  • 1060 Просмотров
*

pechen13

  • Новичок
  • 9
  • 0 / 0
Всем привет.
Попал ко мне случайно код разбиения товаров в категории по производителям для virtuemart2. То есть товары выводятся следующим образом:
-Категория
Производитель1
товар товар товар
товар товар
Производитель 2
товар товар товар
товар товар
То есть это не просто сортировка по производителю, а разбиение на несколько списков.
В оригинальном файле VirtueMart 2.6.8 components/com_virtuemart/views/category/tmpl/default.php вместо 204 строки
Код
foreach ($this->products as $product){
вставляется следующее
Код
$manuf=array(); 
foreach ($this->products as $product)
{
    $manuf[$product->virtuemart_manufacturer_id]['name']= $product->mf_name;   
    $manuf[$product->virtuemart_manufacturer_id]['products'][] = $product;
    foreach ($this->orderByList['manufacturers'] as $key){
        if ($product->virtuemart_manufacturer_id == $key->virtuemart_manufacturer_id ){
        $manuf[$product->virtuemart_manufacturer_id]['url']=$key->file_url;   
        }
    }
}
       
foreach ($manuf as $key=>$product)
{
    $iBrowseCol = 1;
    $iBrowseProduct = 1;
    $BrowseTotalProducts = count($product['products']);
    $manufacturerURL = JRoute::_('index.php?option=com_virtuemart&view=manufacturer&virtuemart_manufacturer_id=' . $key, FALSE);
?>
    <a  href="<?php echo $manufacturerURL;?>">
        <h3><?php echo $product['name']?></h3>
    </a>
    <img width="88" height="36" alt ="<?php echo $product['name']?>" src="<?php echo $product['url']?>">
<?php
    foreach ($product['products'] as $product){
Поскольку мастер в php я никакой, то сколько ни бился, так и не смог подогнать его для VirtueMart 3.
Нижайше прошу помощи в данном вопросе))))))))))
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
Код
$this->orderByList['manufacturers']
Вот это не  из той Opera...
тут модель нужно подключить.
Код
$model = VmModel::getModel('manufacturer');
$manufacturers = $model->getManufacturers(true, true,  true);
$model->addImages($manufacturers,1);


Вот а потом уже это крутить
Код
foreach ($manufacturers as $key){
        if ($product->virtuemart_manufacturer_id == $key->virtuemart_manufacturer_id ){
        $manuf[$product->virtuemart_manufacturer_id]['url']=$key->file_url;  
        }
    }

Типа так )

ps и модель мы в самом начале подключим после строки $manuf=array();
Если картинки производителя не нужны то эту строчку можно не писать $model->addImages($manufacturers,1);
*

pechen13

  • Новичок
  • 9
  • 0 / 0
Не пойму в чем косяк, категория показывается но пустая, уже все перерыл.
в файле /components/com_virtuemart/sublayouts/products.php начиная с 40 строки у меня получилось следующее
Код
	
$BrowseTotalProducts = count($products);

$manuf=array();
$model = VmModel::getModel('manufacturer');
        $manufacturers = $model->getManufacturers(true, true,  true);
        $model->addImages($manufacturers,1);
        foreach ($products as $product){
            $manuf[$product->virtuemart_manufacturer_id]['name']= $product->mf_name;    
            $manuf[$product->virtuemart_manufacturer_id]['products'][] = $product;
            foreach ($manufacturers as $key){
                if ($product->virtuemart_manufacturer_id == $key->virtuemart_manufacturer_id ){
                $manuf[$product->virtuemart_manufacturer_id]['url']=$key->file_url;  
                }
            }
        }
    foreach ($manuf as $key=>$product){
        $col = 1;
$nb = 1;
$row = 1;
        $BrowseTotalProducts = count($product['products']);
        $manufacturerURL = JRoute::_('index.php?option=com_virtuemart&view=manufacturer&virtuemart_manufacturer_id=' . $key, FALSE);
    ?>
    <a href="<?php echo $manufacturerURL;?>">
        <h3><?php echo $product['name']?></h3>
    </a>
    <img alt ="<?php echo $product['name']?>" src="<?php echo $product['url']?>">

    <?php
    foreach ( $product['products'] as $product ) {

// Show the horizontal seperator
может где ошибся?
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
Включите отображение ошибок . Max - для разработчиков...
тогда будет видно..
*

pechen13

  • Новичок
  • 9
  • 0 / 0
Шла ругань Warning: Illegal offset type in на вот эти 2 строчки
Код
$manuf[$product->virtuemart_manufacturer_id]['name']= $product->mf_name;    
$manuf[$product->virtuemart_manufacturer_id]['products'][] = $product;
Заключил все 3 $product->virtuemart_manufacturer_id в кавычки, тоесть в конце концов код получился такой
Код
    $manuf=array(); 
    $model = VmModel::getModel('manufacturer');
    $manufacturers = $model->getManufacturers(true, true,  true);
    $model->addImages($manufacturers,1);
    foreach ($products as $product){
        $manuf['$product->virtuemart_manufacturer_id']['name'] = $product->mf_name;    
        $manuf['$product->virtuemart_manufacturer_id']['products'][] = $product;
        foreach ($manufacturers as $key){
            if ($product->virtuemart_manufacturer_id == $key->virtuemart_manufacturer_id ){
            $manuf['$product->virtuemart_manufacturer_id']['url']=$key->file_url;  
            }
        }
    }
    foreach ($manuf as $key=>$product){
        $col = 1;
$nb = 1;
$row = 1;
        $BrowseTotalProducts = count($product['products']);
        $manufacturerURL = JRoute::_('index.php?option=com_virtuemart&view=manufacturer&virtuemart_manufacturer_id=' . $key, FALSE);
    ?>
    <a href="<?php echo $manufacturerURL;?>">
        <h3><?php echo $product['name']?></h3>
    </a>
    <img alt ="<?php echo $product['name']?>" src="<?php echo $product['url']?>">


<?php
foreach ( $product['products'] as $product ) {

// Show the horizontal seperator
ошибки пропали, товары выводятся, но не так, как хотелось: выводятся не несколькими списками с разными производителями, а точно также, как и раньше все одним списком. Но перед списком выводится название одного производителя(насколько я понял последнего по порядку) и его битая картинка. При инспектировании картинки вижу следующее <img src="/Notice: Undefined index: url in products.php on line 65">. 65 строка - это вот эта
Код
<img alt ="<?php echo $product['name']?>" src="<?php echo $product['url']?>">
вобще уже ничего не понимаю
*

pechen13

  • Новичок
  • 9
  • 0 / 0
Коряво, но проблема решена.
в sublayouts/products.php после 46 строки
Код
foreach ( $products as $product ) {
добавляем
Код
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('virtuemart_manufacturer_id')
->from('#__virtuemart_product_manufacturers')
->where('virtuemart_product_id = ' . (int)$product->virtuemart_product_id);
$db->setQuery($query);
$datavalue = $db->loadResult();

$samsung == 0;
$siemens == 0;
$zap == 0;

        if ($datavalue == 1 && $samsung == 0):?>
            <div>
                <p>samsung</p>
                <img src="/images/stories/virtuemart/manufacturer/resized/samsung11_0x120.png" />
            </div>
        <? $samsung++;
        if ($datavalue == 2 && $siemens == 0):?>
            <div>
                <p>siemens</p>
                <img src="/images/stories/virtuemart/manufacturer/resized/siemens11_0x120.png" />
            </div>
        <? $siemens++;
        if ($datavalue == 3 && $zap == 0):?>
            <div>
                <p>zap</p>
                <img src="/images/stories/virtuemart/manufacturer/resized/zap11_0x120.png" />
            </div>
        <? $zap++;
без учета стилей и классов, чтоб не нагромождать кодами)
« Последнее редактирование: 29.09.2015, 09:25:52 от pechen13 »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не открываются некоторые карточки товаров

Автор Vatag

Ответов: 5
Просмотров: 4177
Последний ответ 04.12.2022, 13:26:04
от Evgen Kulibin
Вывод всех товаров на Главную

Автор Akeksandr

Ответов: 1
Просмотров: 2738
Последний ответ 28.12.2021, 14:48:23
от Akeksandr
Вывод модуля рекомендуемых товаров

Автор sergspb

Ответов: 0
Просмотров: 2736
Последний ответ 06.11.2020, 09:59:01
от sergspb
Как убрать показ дополнительного изображения в категории товаров?

Автор ElenaNova

Ответов: 0
Просмотров: 2903
Последний ответ 22.04.2020, 13:13:27
от ElenaNova
Как вывести количество позиций (а не товаров) в корзине?

Автор SABON

Ответов: 1
Просмотров: 1456
Последний ответ 14.11.2018, 11:30:43
от rsn