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

stydent

  • Захожу иногда
  • 150
  • 1 / 0
  • vlad-link.ru
Одна кнопка купить
« : 02.09.2013, 12:02:03 »
всем привет.
у меня такой вопрос, как возможно сделать одну кнопку купить на группу товаров, при этом в корзине это все отдельные товары
например как здесь на вкладке погонажные изделия http://www.za-door.ru/catalog/Zadoor/d3/18154/
*

stydent

  • Захожу иногда
  • 150
  • 1 / 0
  • vlad-link.ru
Re: Одна кнопка купить
« Ответ #1 : 02.09.2013, 17:27:28 »
нашел тут одну тему, но там для старого vm,
http://takprostotak.ru/joomla/virtuemart/kak-dobavit-neskolko-tovarov-v-korzinu-virtuemart.html/comment-page-1

массив выбранных товаров я собрал, как его теперь передать в корзину?
*

stydent

  • Захожу иногда
  • 150
  • 1 / 0
  • vlad-link.ru
Re: Одна кнопка купить
« Ответ #2 : 03.09.2013, 11:59:05 »
Может Кто сможет объяснить принцип добавления товара в корзину по клику на кнопку?
можно на одном товаре.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Одна кнопка купить
« Ответ #3 : 03.09.2013, 12:21:29 »
Смотрите components\com_virtuemart\views\productdetails\tmpl\default_addtocart.php
Не будь паразитом, сделай что-нибудь самостоятельно!
*

stydent

  • Захожу иногда
  • 150
  • 1 / 0
  • vlad-link.ru
Re: Одна кнопка купить
« Ответ #4 : 03.09.2013, 12:25:29 »
Смотрите components\com_virtuemart\views\productdetails\tmpl\default_addtocart.php
это шаблон.
где сама функция обработки этого клика?
 в action формы написано /index.php?option=com_virtuemart
здесь как то через AJAX все делается, страница ведь не перезагружается
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Одна кнопка купить
« Ответ #5 : 03.09.2013, 13:38:14 »
это шаблон.
где сама функция обработки этого клика?
 в action формы написано /index.php?option=com_virtuemart
здесь как то через AJAX все делается, страница ведь не перезагружается
Конечно, это шаблон.
С формой, в которой есть inputs с разными переменными, которые передаются дальше...
По последнему посту создается мнение, что вы можете "дальше..." проследить цепочку.
А AJAX - всего лишь фишка, которая без перезагрузки страницы обновляет модуль корзины с помощью этих данных.
« Последнее редактирование: 03.09.2013, 13:43:05 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
*

stydent

  • Захожу иногда
  • 150
  • 1 / 0
  • vlad-link.ru
Re: Одна кнопка купить
« Ответ #6 : 03.09.2013, 13:47:27 »
Цепочка меня привела в /components/com_virtuemart/assets/js/vmprices.js
нашел addtocart = cart.find('input.addtocart-button')
и теперь я в замешательстве....чего то здесь всего много
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Одна кнопка купить
« Ответ #7 : 03.09.2013, 13:57:46 »
Ну почему же...
Видим "option=com_virtuemart", "view=cart", "task=add" и "virtuemart_product_id[]".
Значит, данные передаются в "index.php?option=option=com_virtuemart&view=cart&task=add&virtuemart_product_id[]=xxx".
Открываем view/cart/view.html.php, видим:
Код
if (!class_exists('VirtueMartCart'))
require(JPATH_VM_SITE . DS . 'helpers' . DS . 'cart.php');
$cart = VirtueMartCart::getCart();
Ну а дальше сами найдете.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

stydent

  • Захожу иногда
  • 150
  • 1 / 0
  • vlad-link.ru
Re: Одна кнопка купить
« Ответ #8 : 03.09.2013, 14:53:29 »
От части получилось. Моя функция с использованием jQuery.post на странице товара выполняется кучу раз пока не перезагружу страницу.
Например передал один товар и в другой вкладке открыл корзину, там его кол-во увеличивается с каждым обновлением страницы, это не прекращается пока не обновлю страницу с товарами.

почему она не останавливается
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Одна кнопка купить
« Ответ #9 : 03.09.2013, 15:33:59 »
Вы сами ответили на свой вопрос.
Что случилось, когда вы обновили страницу с товарами? Очевидно, обнулились переменные, передаваемые в корзину.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

stydent

  • Захожу иногда
  • 150
  • 1 / 0
  • vlad-link.ru
Re: Одна кнопка купить
« Ответ #10 : 03.09.2013, 16:48:57 »
http://portabene.ru/index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=2&virtuemart_category_id=1
http://portabene.ru/index.php?option=com_virtuemart&view=cart
Почему то не все передается в корзину, например при выборе всех трех, передадутся только первые два.
При выборе только последнего, передадутся второй и третий, хотя alert срабатывает. точнее здесь проблема в кэше, если его почистить то добавится только третий
для теста нажимать на кнопку все в корзину

имею след скирпт,
Код
<script type="text/javascript">
jQuery(document).ready(function() {

$('.mama').click(function(){
var i = $('.pogon .quantity-input').length;
var arr = new Array();
t=0;
for(k=0;k<i;k++){
//собираю id товаров у которых указано кол-во больше 0
var val=parseInt($('.pogon .quantity-input').eq(k).val()); //кол-во

if(val>0){
t=$('.pogon .quantity-input').eq(k).attr('id'); // id товара
                                alert("id "+t);
_post(t,val,0); //вызов функции, 0 передал что бы один раз вызывалась
}
}

});

});

function _post(id,n,i){
            jQuery.post(
              "index.php?option=option=com_virtuemart&view=cart&task=add&virtuemart_product_id[]="+id,
              {
page: "cart",
flypage: 'default.php',
'quantity[]': n,
task: "add",
option: "com_virtuemart",
product_id: id,
                                'prod_id[]': id                
                
              }, function(){ i++; if (1>i) _post(id, n, i); }
              );
};  
</script>
« Последнее редактирование: 03.09.2013, 17:02:17 от stydent »
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Одна кнопка купить
« Ответ #11 : 03.09.2013, 17:41:16 »
Все работает.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

stydent

  • Захожу иногда
  • 150
  • 1 / 0
  • vlad-link.ru
Re: Одна кнопка купить
« Ответ #12 : 03.09.2013, 22:13:24 »
сейчас дома попробовал выбрать все три позиции, добавилось только две первые.
Но добавляются все три если страницу с товарами перезагрузить

Если выбрать первые два, добавится только первый
Что то не так происходит
« Последнее редактирование: 03.09.2013, 22:18:07 от stydent »
*

stydent

  • Захожу иногда
  • 150
  • 1 / 0
  • vlad-link.ru
Re: Одна кнопка купить
« Ответ #13 : 04.09.2013, 10:37:59 »
Цитировать
robert
есть какие предположения почему так работает?
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Одна кнопка купить
« Ответ #14 : 04.09.2013, 10:50:14 »
Повторяю, у меня работает без ошибок.

P.S. Да, начались сбои. Попробуйте поставить alert в конце после _post для проверки. Еще, может быть, просто обнулить val вместо передачи 0?
« Последнее редактирование: 04.09.2013, 11:20:43 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
*

stydent

  • Захожу иногда
  • 150
  • 1 / 0
  • vlad-link.ru
Re: Одна кнопка купить
« Ответ #15 : 04.09.2013, 13:02:56 »
написал val=0 и все заработало, спасибо.
еще я откинул кусок вызова, поскольку он не нужен, ведь вызов идет из цикла
 
Код
, function(){ i++; if (1>i) _post(id, n, i); }
*

stydent

  • Захожу иногда
  • 150
  • 1 / 0
  • vlad-link.ru
Re: Одна кнопка купить
« Ответ #16 : 05.09.2013, 14:44:31 »
Чего то я рано радовался. (((
Добавил я несколько больше товаров, и теперь в корзину попадают только 6 первых выбранных, остальные не доходят
Есть ли какие ограничения на $.post
http://portabene.ru/index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=2&virtuemart_category_id=1


и еще если убрать alert, то код собственно неработоспособен, добавляется только один товар
« Последнее редактирование: 05.09.2013, 15:42:37 от stydent »
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Одна кнопка купить
« Ответ #17 : 05.09.2013, 16:11:56 »
Подозреваю что причина в асинхронности AJAX запросов попробуйте вместо $.post() использовать $.ajax() с ключом async:false
интернет-блог: http://websiteprog.ru
*

stydent

  • Захожу иногда
  • 150
  • 1 / 0
  • vlad-link.ru
Re: Одна кнопка купить
« Ответ #18 : 05.09.2013, 16:41:34 »
Подозреваю что причина в асинхронности AJAX запросов попробуйте вместо $.post() использовать $.ajax() с ключом async:false
можешь подсказать как функцию  $.ajax() правильно расписать
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Одна кнопка купить
« Ответ #19 : 05.09.2013, 17:07:55 »
попробуйте $.ajaxSetup({async:false}); перед вашим $.post запросом поставить, вроде должно работать но я не проверял а вобще синтаксис примерно такой:
Код
$.ajax({
  url: url,
  type: "POST",
  data: data,
  success: function() {...},
  async: false
});

Замените URL вашим урлом и функции на sucess допишите, все по анологии
интернет-блог: http://websiteprog.ru
*

stydent

  • Захожу иногда
  • 150
  • 1 / 0
  • vlad-link.ru
Re: Одна кнопка купить
« Ответ #20 : 05.09.2013, 17:14:19 »
$.ajaxSetup({async:false}); помог мне.
Страница правда становится не доступной какой то время, хотя в документации сказано что только при синхронных браузер блокируется
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Одна кнопка купить
« Ответ #21 : 05.09.2013, 17:24:33 »
Вобще эту опцию не рекомендуются включать, потому как браузер действительно полностью блокирует все ивенты на странице. Но можно как то использовать переменные, чтобы выполнять проверку, отработался ли предыдущий запрос. Как то я это делал но если честно уже не помню..
интернет-блог: http://websiteprog.ru
*

stydent

  • Захожу иногда
  • 150
  • 1 / 0
  • vlad-link.ru
Re: Одна кнопка купить
« Ответ #22 : 05.09.2013, 17:28:50 »
я начал через AJAX делать, но у меня он не получился, не разобрался как ее составить
а ошибку 404 выдает в консоли браузера.

Код
function a_post(id,n){
jQuery.ajax({
   url: "index.php?option=option=com_virtuemart&view=cart&task=add&virtuemart_product_id[]="+id,
   type: "POST",
   async:false,
   data: 'prod_id[]='+id+'&quantity[]='+n
   
 });
 }
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Одна кнопка купить
« Ответ #23 : 05.09.2013, 17:41:49 »
если у вас $.ajaxSetup({async:false}); отрабатывает то вам достаточно использовать jQuery.post() метод. По сути это тот же самый jQuery.ajax(),
только с предустановленными параметрами( данные передеются POST методом например).

Если вас не устраивает подвисания браузера во время выполнения запроса, то вам надо использовать вместо async: false проверочные значения
Можно попробовать использовать глобальную переменную которую после обработчика метода sucess устанавливать в true, а перед новым запросом выполнять проверку этой переменной (возможно с переодическим таймаутом) и потом делать ее false. тут надо эксперементировать кончено, но что то подобное мне уже приходилось делать.
интернет-блог: http://websiteprog.ru
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Кнопка типа "Добавить товар в избранное" или "Понравившийся товар" для VirtueMart

Автор Igoritaly

Ответов: 0
Просмотров: 1661
Последний ответ 05.01.2017, 11:11:34
от Igoritaly
Custom Fields и купить в категории

Автор andpuxa

Ответов: 3
Просмотров: 986
Последний ответ 08.08.2016, 12:24:00
от andpuxa
РЕШЕНО: Перестала работать кнопка купить после добавления настраиваемых полей

Автор stylus83

Ответов: 0
Просмотров: 849
Последний ответ 21.01.2016, 21:52:57
от stylus83
Не работает кнопка "Купить " в карточке товара

Автор Tatjana

Ответов: 9
Просмотров: 2404
Последний ответ 22.08.2015, 16:31:36
от bziondik
Одна цена за несколько штук

Автор Sepika

Ответов: 2
Просмотров: 1084
Последний ответ 10.11.2014, 13:03:58
от Sepika