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

najdera

  • Захожу иногда
  • 70
  • 0 / 0
Замучилась искать!

Мне нужно, чтобы цена менялась в зависимости от общей суммы заказа.
Например, заказал клиент на 20 долларов и меньше - скидка 20% на все, что есть в корзине, на больше чем 20 долларов - скидка 40%

Нашла данную тему, но она для VirtueMart 1.1
http://joomlaforum.ru/index.php/topic,216059.0.html
*

najdera

  • Захожу иногда
  • 70
  • 0 / 0
Еще читала упоминания, что это можно сделать через привязку к группам пользователей. Вроде создаешь несколько групп с разными скидками, а потом в зависимости от суммы заказа присваиваешь покупателю эту группу.

Но как именно это делать не пойму. Кроме того встает вопрос как сделать это, чтобы группа присваивалась пользователю, а потом после покупки пользователь снова переходил в стандартную. Потому как, если это не сделать, то следующая покупка (не зависимо от цены) будет считаться с большей скидкой...
*

najdera

  • Захожу иногда
  • 70
  • 0 / 0
Нашла бесплатную версию AwoCoupon и триггер к ней, чтобы автоматом загружать купон. Версия конечно очень урезанная, но для моих целей пока подходит...

Но не могу понять каким образом она делает скидки!
 crazy!

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

najdera

  • Захожу иногда
  • 70
  • 0 / 0
Вопрос еще актуален!

Может кто может посоветовать платное решение?
*

dstavropolskij

  • Захожу иногда
  • 106
  • 10 / 0
Для jomshopping был на форуме подобный плагин, а вам наверное проще для вм заказать отдельно в комразделе.
*

iflowers

  • Новичок
  • 4
  • 0 / 0
Добрый день! Я делаю через способы оплаты, в конфигурации задаю параметры минимального заказа и в строчке процент от общей суммы ставлю например (-10), и когда покупатель выбирает данную оплату, да еще и делает заказ например от 1000, то при оформлении будет светиться -(сумма). И от общего заказа отнимется 10%.
*

lopata12

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
это все хорошо если скидка одна, а если их 5 или 8...
*

eug717

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
Тоже искал как сделать, вот тема http://joomlaforum.ru/index.php/topic,256761.0.html, сделал только показ скидки в корзине, в модуле корзины не показывает, но есть плагин, там в теме есть ссылка на него.
*

lopata12

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
копался в инете, нашел как сделать скидку в зависимости от стоимости заказа! количество скидок не ограничено.
Первоисточник, спасибо ему, больше не нашел нигде: http://team.in.ua/joomla/joomla-25-virtuemart-2-kak-sdelat-skidku-delaem-skidki



    Версия Joomla 2.5.9, VirtueMart 2.0.2B, тема шаблона beez_20, все довольно стандартно. Думаю, что для любой Joomla версии выше 2.5 и VirtueMart 2.0.0 данные рекомендации будут справедливы.

    Зайдите в директорию components\com_virtuemart\views\cart\tmpl\ и откройте файл default_price.php. Найдите такую строку:

    <?php echo $this->currencyDisplay->createPriceDiv ('salesPriceShipment', '', $this->cart->pricesUnformatted['salesPriceShipment'], FALSE); ?>

    И замените ее на следующую:

    <?php echo $this->currencyDisplay->createPriceDiv ('salesPriceShipment', '', $shipment=$this->cart->pricesUnformatted['salesPriceShipment'], FALSE); ?>

 

Так мы задаем переменную для стоимости доставки.

 

После тегов

<tr class="sectiontableentry1">



</tr>

необходимо вставить такой код:


<td colspan="1">Скидка</td>

<td colspan="<?php echo $colspan+3; ?>">

<?php

$total_price = $this->cart->pricesUnformatted['billTotal'];

if($total_price-$shipment > 1000.00 && $total_price-$shipment <= 1999.99){

echo "<br />"."Скидка 2% на сумму до 2000 руб.";

$discount_total=0.02*($total_price-$shipment);

}

$total_price = $this->cart->pricesUnformatted['billTotal'];

if($total_price-$shipment > 2000.00 && $total_price-$shipment <= 2999.99){

echo "<br />"."Скидка 4% на сумму заказа до 3000 руб.";

$discount_total=0.04*($total_price-$shipment);

}

$total_price = $this->cart->pricesUnformatted['billTotal'];

if($total_price-$shipment > 3000.00 && $total_price-$shipment <= 3999.99){

echo "<br />"."Скидка 8% на сумму заказа до 4000 руб.";

$discount_total=0.08*($total_price-$shipment);
}

$total_price = $this->cart->pricesUnformatted['billTotal'];

if($total_price-$shipment > 4000.00 && $total_price-$shipment <= 4999.99){

echo "<br />"."Скидка 10% на сумму заказа до 5000 руб.";

$discount_total=0.1*($total_price-$shipment);
}

$total_price = $this->cart->pricesUnformatted['billTotal'];

if($total_price-$shipment > 5000.00 && $total_price-$shipment <= 9999.99){

echo "<br />"."Скидка 15% на сумму заказа до 10000 руб.";

$discount_total=0.15*($total_price-$shipment);
}

if($total_price-$shipment > 10000.00 && $total_price-$shipment <= 14999.99){

echo "<br />"."Скидка 20% на сумму заказа до 15000 руб.";

$discount_total=0.20*($total_price-$shipment);
}

if($total_price-$shipment > 15000.00){

echo "<br />"."Скидка 25% на сумму заказа свыше 15000 руб.";

$discount_total=0.25*($total_price-$shipment);

}

session_start();

?>

</td>

</tr>

 

// в строке 5 мы присваиваем новой переменной значение стоимости всех товаров.

// в 6 строке из этой стоимости вычитается стоимость доставки и сравнивается с заданным условием. При выполнении условия, выводится сообщение о скидке и считается скидка. Далее все повторяется для других условий.


Далее находим такую строчку:

<?php echo $this->currencyDisplay->createPriceDiv ('billTotal', '', $this->cart->pricesUnformatted['billTotal'], FALSE); ?>
и заменяем ее следующей:
<?php echo $this->currencyDisplay->createPriceDiv ('billTotal', '', $total_price-$discount_total, FALSE); ?>
 

И и где-нибудь в конце добавьте

<?php session_start();

$_SESSION['total'] = $total_price-$discount_total; ?>

Сохраните файл.


3. В директории administrator\components\com_virtuemart\models найдите файл orders.php.

Примерно на  550 строке будет такая запись:


$_orderData->order_total = $_prices['BillTotal'];

Замените ее на:

$_orderData->order_total = $_SESSION['total'];

Так передадим переменную, созданную в предыдущем файле.

п.с.
суммы скидок заканчиваются на 99 копеек не зря, если написать окончательную сумму такой же с которой будет начинаться следующая скидка, считать будет Неправильно скидку( баг или нет, заказывал я товар на 2080 рублей он считал скидку 2%, чуть больше делал заказ - делал уже 4%)
1. что дописать, чтоб отображалось в корзине, например, если человек сделал заказ и скидка у него вышла 10%, а до 15% ему не хватает купить товар на 500р, выводилось сообщение: Ваша скидка составила 10%, вам можно купить товаров на 500р, чтобы получить скидку 15%.
вот тема под первый март аналогичная: http://joomlaforum.ru/index.php/topic,107902.msg595717.html, там все было хорошо....
2. в корзине отображается только конечная сумма за вычетом скидки, поле "итого" (сумма без скидки) пусто...
3. после того как нажимаем подтвердить сообщается что заказа подтвержден, но сумма в сообщении пишется 0.00
4. на почту к  админу и покупателю приходит письмо где сумма указана "итого" (сумма без скидки), скидка не указана.
спасибо.
« Последнее редактирование: 30.06.2013, 22:52:36 от lopata12 »
*

eclipseggg

  • Захожу иногда
  • 410
  • 32 / 2
копался в инете, нашел как сделать скидку в зависимости от стоимости заказа! количество скидок не ограничено.
Первоисточник, спасибо ему, больше не нашел нигде: http://team.in.ua/joomla/joomla-25-virtuemart-2-kak-sdelat-skidku-delaem-skidki



    Версия Joomla 2.5.9, VirtueMart 2.0.2B, тема шаблона beez_20, все довольно стандартно. Думаю, что для любой Joomla версии выше 2.5 и VirtueMart 2.0.0 данные рекомендации будут справедливы.

    Зайдите в директорию components\com_virtuemart\views\cart\tmpl\ и откройте файл default_price.php. Найдите такую строку:

    <?php echo $this->currencyDisplay->createPriceDiv ('salesPriceShipment', '', $this->cart->pricesUnformatted['salesPriceShipment'], FALSE); ?>

    И замените ее на следующую:

    <?php echo $this->currencyDisplay->createPriceDiv ('salesPriceShipment', '', $shipment=$this->cart->pricesUnformatted['salesPriceShipment'], FALSE); ?>

 

Так мы задаем переменную для стоимости доставки.

 

После тегов

<tr class="sectiontableentry1">



</tr>

необходимо вставить такой код:


<td colspan="1">Скидка</td>

<td colspan="<?php echo $colspan+3; ?>">

<?php

$total_price = $this->cart->pricesUnformatted['billTotal'];

if($total_price-$shipment > 1000.00 && $total_price-$shipment <= 1999.99){

echo "<br />"."Скидка 2% на сумму до 2000 руб.";

$discount_total=0.02*($total_price-$shipment);

}

$total_price = $this->cart->pricesUnformatted['billTotal'];

if($total_price-$shipment > 2000.00 && $total_price-$shipment <= 2999.99){

echo "<br />"."Скидка 4% на сумму заказа до 3000 руб.";

$discount_total=0.04*($total_price-$shipment);

}

$total_price = $this->cart->pricesUnformatted['billTotal'];

if($total_price-$shipment > 3000.00 && $total_price-$shipment <= 3999.99){

echo "<br />"."Скидка 8% на сумму заказа до 4000 руб.";

$discount_total=0.08*($total_price-$shipment);
}

$total_price = $this->cart->pricesUnformatted['billTotal'];

if($total_price-$shipment > 4000.00 && $total_price-$shipment <= 4999.99){

echo "<br />"."Скидка 10% на сумму заказа до 5000 руб.";

$discount_total=0.1*($total_price-$shipment);
}

$total_price = $this->cart->pricesUnformatted['billTotal'];

if($total_price-$shipment > 5000.00 && $total_price-$shipment <= 9999.99){

echo "<br />"."Скидка 15% на сумму заказа до 10000 руб.";

$discount_total=0.15*($total_price-$shipment);
}

if($total_price-$shipment > 10000.00 && $total_price-$shipment <= 14999.99){

echo "<br />"."Скидка 20% на сумму заказа до 15000 руб.";

$discount_total=0.20*($total_price-$shipment);
}

if($total_price-$shipment > 15000.00){

echo "<br />"."Скидка 25% на сумму заказа свыше 15000 руб.";

$discount_total=0.25*($total_price-$shipment);

}

session_start();

?>

</td>

</tr>

 

// в строке 5 мы присваиваем новой переменной значение стоимости всех товаров.

// в 6 строке из этой стоимости вычитается стоимость доставки и сравнивается с заданным условием. При выполнении условия, выводится сообщение о скидке и считается скидка. Далее все повторяется для других условий.


Далее находим такую строчку:

<?php echo $this->currencyDisplay->createPriceDiv ('billTotal', '', $this->cart->pricesUnformatted['billTotal'], FALSE); ?>
и заменяем ее следующей:
<?php echo $this->currencyDisplay->createPriceDiv ('billTotal', '', $total_price-$discount_total, FALSE); ?>
 

И и где-нибудь в конце добавьте

<?php session_start();

$_SESSION['total'] = $total_price-$discount_total; ?>

Сохраните файл.


3. В директории administrator\components\com_virtuemart\models найдите файл orders.php.

Примерно на  550 строке будет такая запись:


$_orderData->order_total = $_prices['BillTotal'];

Замените ее на:

$_orderData->order_total = $_SESSION['total'];

Так передадим переменную, созданную в предыдущем файле.

п.с.
суммы скидок заканчиваются на 99 копеек не зря, если написать окончательную сумму такой же с которой будет начинаться следующая скидка, считать будет Неправильно скидку( баг или нет, заказывал я товар на 2080 рублей он считал скидку 2%, чуть больше делал заказ - делал уже 4%)
1. что дописать, чтоб отображалось в корзине, например, если человек сделал заказ и скидка у него вышла 10%, а до 15% ему не хватает купить товар на 500р, выводилось сообщение: Ваша скидка составила 10%, вам можно купить товаров на 500р, чтобы получить скидку 15%.
вот тема под первый март аналогичная: http://joomlaforum.ru/index.php/topic,107902.msg595717.html, там все было хорошо....
2. в корзине отображается только конечная сумма за вычетом скидки, поле "итого" (сумма без скидки) пусто...
3. после того как нажимаем подтвердить сообщается что заказа подтвержден, но сумма в сообщении пишется 0.00
4. на почту к  админу и покупателю приходит письмо где сумма указана "итого" (сумма без скидки), скидка не указана.
спасибо.

тогда возникает вопрос того чтобы функция пересчета количества пересчитывала цену со скидкой...у менят нет версии 18 но думаю что именно этот момент упущен...
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Расчет общего веса заказа в корзине VirtueMart 3.6

Автор Valderdag

Ответов: 8
Просмотров: 1274
Последний ответ 01.05.2020, 10:29:02
от Valderdag
Добавить кнопки + - в плагин onestepcheckout при оформлении заказа

Автор Dolphin4ik_1

Ответов: 5
Просмотров: 1285
Последний ответ 15.01.2019, 10:21:04
от Dolphin4ik_1
Разные товары в зависимости от выбора города

Автор PavelK

Ответов: 0
Просмотров: 856
Последний ответ 24.12.2018, 18:40:15
от PavelK
Скидка на второй товар (Настраиваемые поля)

Автор mean

Ответов: 0
Просмотров: 967
Последний ответ 17.06.2018, 23:29:00
от mean
Модуль "Скидка"

Автор stardel

Ответов: 0
Просмотров: 1024
Последний ответ 15.05.2018, 19:45:30
от stardel