Новости 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

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

Web_Studio_MAX

  • Захожу иногда
  • 105
  • 0 / 0
Использую mod_virtuemart_cart, когда корзина пуста, при клике открывается главная в новом окне, нужно, что-бы открывалась корзина с надписью "Ваша корзина пуста", так же, как например, появляется после удаления товара из корзины.
 ! Подскажите, ко знает, наверняка кто-то уже делал
« Последнее редактирование: 26.09.2011, 17:15:02 от Web_Studio_MAX »
*

Web_Studio_MAX

  • Захожу иногда
  • 105
  • 0 / 0
 ! помогите пожалуйста
*

fsv

  • Moderator
  • 2782
  • 411 / 2
Использую mod_virtuemart_cart, когда корзина пуста, при клике открывается главная в новом окне, нужно, что-бы открывалась корзина с надписью "Ваша корзина пуста", так же, как например, появляется после удаления товара из корзины.

в новом окне открывается не ваша "главная", а сайта VirtueMart.net ?

тогда
\components\com_virtuemart\themes\default\templates\common\minicart.tpl.php
стр.7
<a href="http://virtuemart.net/" target="_blank">
заменить на
<a href="<?php echo $mm_action_url ?>/index.php?option=com_virtuemart&page=shop.cart">


Веб-разработка: заказ. Только новая разработка.
*

Web_Studio_MAX

  • Захожу иногда
  • 105
  • 0 / 0
в новом окне открывается не ваша "главная", а сайта VirtueMart.net ?

тогда
\components\com_virtuemart\themes\default\templates\common\minicart.tpl.php
стр.7
<a href="http://virtuemart.net/" target="_blank">
заменить на
<a href="<?php echo $mm_action_url ?>/index.php?option=com_virtuemart&page=shop.cart">




нет, именно моя главная страница
*

fsv

  • Moderator
  • 2782
  • 411 / 2
нет, именно моя главная страница

в код вносили изменения?
что у вас в этом файле в стр.6-10 ?
Веб-разработка: заказ. Только новая разработка.
*

Web_Studio_MAX

  • Захожу иногда
  • 105
  • 0 / 0
в код вносили изменения?
что у вас в этом файле в стр.6-10 ?


У меня стоит ссылка на главную, а на что менять, что-бы открывалась корзина?

Вот мой код:
Код
<?php if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );

if($empty_cart) { ?>
   
    <div style="margin: 0 auto; text-align:center;">
    <?php if(!$vmMinicart) { ?>
        <a href="/index.php" target="_blank">
        <img src="<?php echo $mm_action_url ?>components/com_virtuemart/shop_image/ps_image/my_cart.png" alt="Корзина покупок" width="70" border="0" /></a>
        <br />
    <?php }
    echo $VM_LANG->_('PHPSHOP_EMPTY_CART')?>
    </div>
<?php }
*

fsv

  • Moderator
  • 2782
  • 411 / 2
У меня стоит ссылка на главную, а на что менять, что-бы открывалась корзина?

вашу строку
<a href="/index.php" target="_blank">
замените на
<a href="<?php echo $mm_action_url ?>/index.php?option=com_virtuemart&page=shop.cart">

Веб-разработка: заказ. Только новая разработка.
*

Web_Studio_MAX

  • Захожу иногда
  • 105
  • 0 / 0
 
вашу строку
<a href="/index.php" target="_blank">
замените на
<a href="<?php echo $mm_action_url ?>/index.php?option=com_virtuemart&page=shop.cart">



 :D Спасибо огромное, все работает
Плюсую!
*

Web_Studio_MAX

  • Захожу иногда
  • 105
  • 0 / 0
Попробовал еще на другом сайте сделать, там стоит шаблон rt_mynxx_j15, там эта тема не прокатила.
Возможно это связано с тем, что изначально в этом шаблоне уже была корзина, а я ее убрал и поставил стандартный модуль корзины.
Как быть с этим шаблоном, не подскажите?
*

fsv

  • Moderator
  • 2782
  • 411 / 2
С этим шаблоном не знаком. Подписки www.rockettheme.com у меня нет.

Возможно это связано с тем, что изначально в этом шаблоне уже была корзина, а я ее убрал

Веб-разработка: заказ. Только новая разработка.
*

Web_Studio_MAX

  • Захожу иногда
  • 105
  • 0 / 0
Попробовал еще на другом сайте сделать, там стоит шаблон rt_mynxx_j15, там эта тема не прокатила.
Возможно это связано с тем, что изначально в этом шаблоне уже была корзина, а я ее убрал и поставил стандартный модуль корзины.
Как быть с этим шаблоном, не подскажите?

Тупанул немного, просто в этом шаблоне стоит другая тема,
вместо:
\components\com_virtuemart\themes\default\templates\common\minicart.tpl.php

надо было тут изменить:
 \components\com_virtuemart\themes\vm_mynxx\templates\common\minicart.tpl.php

Теперь все работает!
*

GROM33

  • Осваиваюсь на форуме
  • 29
  • 0 / 0

У меня при любом изменении файла minicart.tpl.php перестает работать сайт. Выскакивает белая страница с тестом Parse error: syntax error, unexpected '}' in Z:\home\101tovar.by\www\components\com_virtuemart\themes\default\templates\common\minicart.tpl.php on line 2 даже если удалить одну букву в ссылке сайта VirtueMart.
*

fsv

  • Moderator
  • 2782
  • 411 / 2
У меня при любом изменении файла minicart.tpl.php перестает работать сайт. Выскакивает белая страница с тестом Parse error: syntax error, unexpected '}' in Z:\home\101tovar.by\www\components\com_virtuemart\themes\default\templates\common\minicart.tpl.php on line 2 даже если удалить одну букву в ссылке сайта VirtueMart.

А что у вас во 2 строке? В дефолтном шаблоне там пусто.
Покажите код.

Веб-разработка: заказ. Только новая разработка.
*

GROM33

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
А что у вас во 2 строке? В дефолтном шаблоне там пусто.
Покажите код.



Вот код.
Код
<?php if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );



if($empty_cart) { ?>

    

    <div style="margin: 0 auto;">

    <?php if(!$vmMinicart) { ?>

        <a href="http://virtuemart.net/" target="_blank">

        <img src="<?php echo $mm_action_url ?>components/com_virtuemart/shop_image/ps_image/menu_logo.gif" alt="VirtueMart" width="80" border="0" /></a>

        <br />

    <?php }

    echo $VM_LANG->_('PHPSHOP_EMPTY_CART')?>

    </div>

<?php }

else {

    // Loop through each row and build the table

    foreach( $minicart as $cart ) {

foreach( $cart as $attr => $val ) {

// Using this we make all the variables available in the template

// translated example: $this->set( 'product_name', $product_name );

$this->set( $attr, $val );

}

        if(!$vmMinicart) { // Build Minicart

            ?>

            <div class="gk_vm_minicart_product clearfix">

<div class="gk_vm_product">

             <a href="<?php echo $cart['url'] ?>"><?php echo $cart['product_name'] ?></a> (<strong><?php echo $cart['quantity'] ?></strong>x)

             </div>

             <div class="gk_vm_attributes">

             <?php echo $cart['attributes']; ?>

             </div>

               <div class="gk_vm_price">

             <?php echo $cart['price'] ?>

             </div>

            </div>

            <?

        }

    }

}

 ?>

<div class="lf" ><?php echo $total_products ?></div>

<div class="rf"><?php echo $total_price ?></div>

<?php if (!$empty_cart && !$vmMinicart) { ?>

    <div class="gk_vm_show_cart">

    <?php echo $show_cart ?>

    </div>



<?php }

echo $saved_cart;

?>
Но если взять и вставить отредактированный файл(у меня был готовый правда от ВМ 1.1.3) Ссылка пропала и корзина стала по центру.Все хорошо, но меня смущает,что сам файл от более старой версии у меня ВМ 1.1.6.
« Последнее редактирование: 28.03.2012, 14:56:35 от fsv »
*

fsv

  • Moderator
  • 2782
  • 411 / 2
Но если взять и вставить отредактированный файл(у меня был готовый правда от ВМ 1.1.3) Ссылка пропала и корзина стала по центру.Все хорошо, но меня смущает,что сам файл от более старой версии у меня ВМ 1.1.6.

Это код не дефолтной корзины. Идет вместе с шаблоном+темой VM. Так?
Тогда лучше спросите в поддержке разработчика шаблона, что у них там отваливается, если редактировать их тему.

А с файлами из цитаты выше я не понял... Если вести речь о дефолтном шаблоне, то с 1.1.3 до 1.1.9 этот файл не менялся.

Веб-разработка: заказ. Только новая разработка.
*

Art_i

  • Захожу иногда
  • 143
  • 5 / 0
Здравствуйте.
Подскажите пожалуйста как вывести рядом с заголовком <h3>Корзина</h3>  , "Корзина пуста" - если она пустая, и соответственно если добавлен товар, то количество, типа - "Корзина n товара" .
Я пытался вставить код с проверкой с этого файла minicart.tpl.php, но ничего не вышло.
Код
<?php 
if($empty_cart) {
    echo $VM_LANG->_('PHPSHOP_EMPTY_CART');
}
...
?>

Вот содержимое файла mod_virtuemart_cart.php , где я пытался это реализовать
Код
<?php
if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );
/**
* VirtueMart MiniCart Module
*
* @version $Id: mod_virtuemart_cart.php 1159 2008-01-14 20:30:30Z soeren_nb $
* @package VirtueMart
* @subpackage modules
*
* @copyright (C) 2004-2007 soeren - All Rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
* VirtueMart is Free Software.
* VirtueMart comes with absolute no warranty.
*
* www.virtuemart.net
*/

// Load the VirtueMart main parse code
if( file_exists(dirname(__FILE__).'/../../components/com_virtuemart/virtuemart_parser.php' )) {
require_once( dirname(__FILE__).'/../../components/com_virtuemart/virtuemart_parser.php' );
} else {
require_once( dirname(__FILE__).'/../components/com_virtuemart/virtuemart_parser.php' );
}

//Start of routine output correct div to enable AJAX update to display correctly

echo '<h3>Корзина</h3>';

echo '<div class="vmCartModule">';

global $VM_LANG, $sess, $mm_action_url;

$_SESSION['vmUseGreyBox'] = $params->get( 'vmEnableGreyBox');
$_SESSION['vmCartDirection'] = $params->get( 'vmCartDirection');

include (PAGEPATH.'shop.basket_short.php') ;

echo "</div>";
?>

Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться