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

a69

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Доброго дня.
Опишу подробно, потому как иначе объяснить не могу

Есть товары и есть прикрепленные к ним файлы

В каталоге товаров Виртуемарт выбираю категорию
- выводится список товаров в категории стандартным образом
Код
----------------------------------------------------------------------
картинка             краткое описание
цена                 подробно..
----------------------------------------------------------------------
картинка             краткое описание
цена                 подробно..
----------------------------------------------------------------------
картинка             краткое описание
цена                 подробно..
----------------------------------------------------------------------
Этот внешний вид формируется файлом browse_1.php

Мне нужно вывести там же прикрепленные файлы к товару, таким образом
Код
----------------------------------------------------------------------
картинка             краткое описание                |    паспорт    |
цена                 подробно..                      |    сертификат |
----------------------------------------------------------------------
картинка             краткое описание                |    паспорт    |
цена                 подробно..                      |    сертификат |
----------------------------------------------------------------------
картинка             краткое описание                |    паспорт    |
цена                 подробно..                      |    сертификат |
----------------------------------------------------------------------

Прикрепленные файлы выводятся только если выбран вывод подробно..
За вывод товара подробно.. отвечает файл flypage.php там есть такая переменная {file_list}

Получается мне надо переделать SQL запрос чтобы можно было пользоваться в файле вывода списка товаров browse_1.php переменной  {file_list}

Подскажите как и где изменить SQL запрос
Очень нужно, спасибо.
« Последнее редактирование: 08.05.2009, 18:06:26 от beagler »
*

morph

  • Давно я тут
  • 924
  • 105 / 0
смотрим
shop.product_details.php - флаер товара
видим:
Цитировать
  $file_list = ps_product_files::get_file_list( $product_id );
идем в shop.browse.php - список товаров
перед
Цитировать
   /*** Now fill the template
вставляем
Цитировать
require_once(CLASSPATH . 'ps_product_files.php' );   
    $file_list = ps_product_files::get_file_list( $db_browse->f("product_id") );   
смысл - функция get_file_list описана в классе ps_product_files - подключаем класс, $product_id определяеться в списке товаров как $db_browse->f("product_id")...весь смысл перенесения "заглушек" из флаера в список товаров.

теперь опишем эту заглушку:
ниже перед
Цитировать
/*** Now echo the filled cell ***/
вставляем
Цитировать
$product_cell = str_replace( "{file_list}", $file_list, $product_cell );
... по аналогии с другими
теперь осталось только в шаблоне browse_1.php вставить куда надо {file_list}



*

a69

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Слушай, работает!  ^-^
Я бы сам не разобрался, спасибо большое!
 *DRINK*
*

wwwww

  • Новичок
  • 2
  • 0 / 0
очень большой плюс автору.
куда ткнуть не знаю

пиши еще побольше.
 в 1.1.3 нет Now echo the filled cell
но это все делаеться так же ?
или там в других файлах править нужно?
спасибо
« Последнее редактирование: 20.03.2009, 16:15:02 от wwwww »
*

morph

  • Давно я тут
  • 924
  • 105 / 0
для линейки 1.1.* другой несколько рецепт - там все шаблонизировано.
шаблоны лежат в www\components\com_virtuemart\themes\default\templates\
для примера прикрепленных файлов:
выводяться они как
Цитировать
<?php echo $file_list ?>
в карточке товара components\com_virtuemart\themes\default\templates\product_details\flypage.tpl.php(или другого шаблона флаера)
и также
описана эта переменная в shop.product_details.php
Цитировать
$file_list = ps_product_files::get_file_list( $product_id );
опять переносим ее в shop.browse.php
перед описанием вывода остальных "заглушек":
Цитировать
$products[$i]['product_flypage'] = $url;
      $products[$i]['product_thumb_image'] = $product_thumb_image;
      $products[$i]['product_full_image'] = $product_full_image;
      $products[$i]['full_image_width'] = $full_image_width;
      $products[$i]['full_image_height'] = $full_image_height;
      
      // Unset these for the next product
      unset($full_image_width);
      unset($full_image_height);

      $products[$i]['product_name'] = shopMakeHtmlSafe( $product_name );
      $products[$i]['product_s_desc'] = $product_s_desc;
      $products[$i]['product_details'] = $product_details;
      $products[$i]['product_rating'] = $product_rating;
      $products[$i]['product_price'] = $product_price;
      $products[$i]['product_price_raw'] = $product_price_raw;
      $products[$i]['product_sku'] = $db_browse->f("product_sku");
      $products[$i]['product_weight'] = $db_browse->f("product_weight");
      $products[$i]['product_weight_uom'] = $db_browse->f("product_weight_uom");
      $products[$i]['product_length'] = $db_browse->f("product_length");
      $products[$i]['product_width'] = $db_browse->f("product_width");
      $products[$i]['product_height'] = $db_browse->f("product_height");
      $products[$i]['product_lwh_uom'] = $db_browse->f("product_lwh_uom");
      $products[$i]['product_in_stock'] = $db_browse->f("product_in_stock");
      $products[$i]['product_available_date'] = $VM_LANG->convert( vmFormatDate($db_browse->f("product_available_date"), $VM_LANG->_('DATE_FORMAT_LC') ));
      $products[$i]['product_availability'] = $db_browse->f("product_availability");
      $products[$i]['cdate'] = $VM_LANG->convert( vmFormatDate($db_browse->f("cdate"), $VM_LANG->_('DATE_FORMAT_LC') ));
      $products[$i]['mdate'] = $VM_LANG->convert( vmFormatDate($db_browse->f("mdate"), $VM_LANG->_('DATE_FORMAT_LC') ));
      $products[$i]['product_url'] = $db_browse->f("product_url");
добавим
Цитировать
   $file_list = ps_product_files::get_file_list( $db_browse->f("product_id"));
   $products[$i]['file_list'] = $file_list;
ну и в шаблоне списка товара:components\com_virtuemart\themes\default\templates\browse\browse_*.php
вставим описаную нами заглушку:
Цитировать
<?php echo $file_list ?>


...все по аналогии))))

*

pozitive

  • Новичок
  • 9
  • 0 / 0
эх, трудный день, невеселый вечер, взяли бы да уже готовый файл для 1,1,3 выложили.
*

Lann

  • Захожу иногда
  • 133
  • 5 / 1
2morph,

А как добавить в каталог товаров кнопку - "добавить в корзину"  - ту которая есть на страницах с подробнее? Т.е. если у товара кроме цены используются атрибуты, то эта кнопка в каталоге не показывается не смотря на указание в админке "Show the Add-to-cart Button on the product list?"

Я пробовал сделать так как вы описывали применительно к кнопке, т.е. в файле shop.product_details.php нашел строки относящиеся к кнопке
Код
/* ADD-TO-CART */
$tpl->set( 'manufacturer_id', $manufacturer_id );
$tpl->set( 'flypage', $flypage );
$tpl->set( 'ps_product_attribute', $ps_product_attribute );
$addtocart = $tpl->fetch('product_details/includes/addtocart_form.tpl.php' );

$tpl->set( "addtocart", $addtocart );

и перенес их в shop.browse.php в то место которое вы указали.

Но кнопка не появилось - вернее появилось часть ее тег form и пара hidden импутов и сё.
*

morph

  • Давно я тут
  • 924
  • 105 / 0
Цитировать
если у товара кроме цены используются атрибуты, то эта кнопка в каталоге не показывается
но тогда в шаблон списка категорий нужно и вбор атрибутов вывести(выбрать то их обязательно нужно)...а так shop.browse.php
Цитировать
// Add-to-Cart Button
      if (USE_AS_CATALOGUE != '1' && $product_price != ""
         && !stristr( $product_price, $VM_LANG->_('PHPSHOP_PRODUCT_CALL') )
         && !ps_product::product_has_attributes( $db_browse->f('product_id'), true )
         && $tpl->get_cfg( 'showAddtocartButtonOnProductList' ) ) {
            
         $tpl->set( 'i', $i );
         $tpl->set( 'product_id', $db_browse->f('product_id') );
         $tpl->set( 'product_in_stock', $db_browse->f('product_in_stock') );
         $tpl->set( 'ps_product_attribute', $ps_product_attribute );
         $products[$i]['form_addtocart'] = $tpl->fetch( 'browse/includes/addtocart_form.tpl.php' );
         $products[$i]['has_addtocart'] = true;
      }
      else {
         $products[$i]['form_addtocart'] = '';
         $products[$i]['has_addtocart'] = false;
      }

&& !ps_product::product_has_attributes( $db_browse->f('product_id'), true ) -условие на невывод кнопки,если есть атрибуты - удалим-появиться кнопка...но купить без выбора атрибутов не удасться))
*

Lann

  • Захожу иногда
  • 133
  • 5 / 1
Спасиб, сработало. Вывелось как вы и сказали - без атрибутов.

И, извините, как в "шаблон списка категорий нужно" - вывести выбор атрибутов? т.е. таким образом чтб add-to-card имела тот же вид что и на "подробнее".... а ссылку на подробнее я вообще уберу.
« Последнее редактирование: 30.03.2009, 12:35:33 от Lann »

а может, кто знает, как еще цвет сделать чтоб через строчку (всмысле через товар) менялся? те товар на сером фоне, товар на белом и тд
*

voodoomaniac

  • Захожу иногда
  • 75
  • 4 / 0
У меня почему то скачиваются файлы которые я прикрепляю к товару. Ссылка имеет следующий вид href="/magazin.html?file_id=40&amp;product_id=123" Помогите если кто сталкивался!
*

darklight

  • Захожу иногда
  • 58
  • 1 / 0
  • C.R.C.
а как сделать чтобы подробное описание выводилось в browse?
*

kreolka_8

  • Захожу иногда
  • 153
  • 2 / 0
У меня почему то скачиваются файлы которые я прикрепляю к товару. Ссылка имеет следующий вид href="/magazin.html?file_id=40&amp;product_id=123" Помогите если кто сталкивался!
Такая же проблема возникла. Добавляю файл pgf, название и вес файла прописывается, а ссылка выглядит также, в итоге грузится данная ссылка, а открывается главная стр. магазина. Может вы решили данный вопрос?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено] Невидимая регистрация ( Покупка без регистрации ) V1.1.3

Автор urodoff

Ответов: 319
Просмотров: 110044
Последний ответ 27.10.2014, 15:27:02
от gaalferov
[Решено] Отобразить кол-во товаров из всех подкатегорий V1.1.3

Автор bazic

Ответов: 19
Просмотров: 14311
Последний ответ 18.09.2014, 06:39:33
от fila61
вывод категории и её подкатегорий на одной странице

Автор sega

Ответов: 44
Просмотров: 16266
Последний ответ 30.04.2014, 14:05:45
от ИринаМ
[Решено] Добавление Watermark к фото товара V1.0.15 V1.1.3

Автор mickymouse

Ответов: 52
Просмотров: 23204
Последний ответ 13.06.2013, 01:04:46
от richman
[Решено] Как изменить ,товаров в наличии 1 на "есть в наличии" V1.0.15 V1.1.3

Автор ButuzOFF

Ответов: 93
Просмотров: 41960
Последний ответ 17.05.2013, 21:10:44
от sa1981