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

dmonco

  • Осваиваюсь на форуме
  • 28
  • 0 / 0
  • http://dmitryboruk.com
Делаю бонусную программу для сайта. Не получается вывести нужные данные. Либо знаний MySQL не хватает, либо PHP, либо вывод через PHP именно в Joomla... (либо плохому танцору яйяяя мешают crazy!)

Есть две таблицы:
родная таблица ВиртМарта `jos_vm_orders`, где по id юзера можно посчитать, какие покупки он сделал
и таблица `jos_vm_friends`, созданная мною, где есть привязка друзья друзей: поля id, user_id, user_friend_id

Вопрос: нужно получить сумму совершённых заказов друзей, которые подписались под меня.

Например, запрос 1: выводим сначала друзей, которые под меня подписаны:

<?php
        $db =& JFactory::getDBO();
        $query =  'SELECT `user_friend_id` FROM  `jos_vm_friends` WHERE `user_id` = '.$auth['user_id'].'';
           $db =& JFactory::getDBO();
                  $result = $db->setQuery($query);
        $res =  $db->loadAssoc();
?>

Запрос 2: вывести сумму заказа по id.

<?php
        $db =& JFactory::getDBO();
        $query2 =  'SELECT SUM( order_total ) AS  `total` FROM  `jos_vm_orders` WHERE `order_status` =  "ЗД" AND `user_id` = "120"';
           $db =& JFactory::getDBO();
                  $result = $db->setQuery($query);
        $res =  $db->loadAssoc();
?>

Как объединить эти запросы и вывести сумму покупок всех моих друзей?

Заранее благодарю!

Модераторы! Не знал, куда эту тему прикрутить. Если больше к разработке подходит, прошу перенести тему и сильно не меня не матюггать  8)
« Последнее редактирование: 26.12.2009, 18:26:03 от dmonco »
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Код: php
$user =& JFactory::getUser();
$db =& JFactory::getDBO();

$query = 'select f.user_friend_id AS fid, SUM(o.order_total) AS osun
from #__vm_friends as f
join jos_vm_orders as o on o.user_id = f.user_friend_id
where f.user_id = "'.$user->id.'" and o.order_status =  "ЗД"
group by f.user_friend_id';

$db->setQuery($query);
$rows = $db->loadObjectList();

foreach ( $rows as $row )
{
echo $row->fid.' - '.$row->osun;
}

То есть - получили объект авторизованного пользователя (в запросе используем его id), написали общий запрос, берущий ID друга и сумму его объектов из второй таблицы и в цикле выводим.
Будет работать в стандартном окружении движка (компонент\модуль\плагин\шаблон), писал на глаз, в синтаксисе мог где ошибиться
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

dmonco

  • Осваиваюсь на форуме
  • 28
  • 0 / 0
  • http://dmitryboruk.com
Принцип понял! Огромное спасибо!
Чё-то на самом деле где-то ошибочка. В мускуле проверяю:

SELECT `f.user_friend_id` AS `fid`, SUM( o.order_total ) AS `osun`
FROM `jos_vm_friends` AS `f` JOIN `jos_vm_orders` AS `o` ON `o.user_id` = `f.user_friend_id`
WHERE `f.user_id` = "131" AND `o.order_status` = "ЗО" GROUP BY `f.user_friend_id`

пишет Unknown column 'f.user_friend_id' in 'field list'
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
пишет Unknown column 'f.user_friend_id' in 'field list'
проверьте по структуре ваших таблиц, я же ее досконально не знаю, но принцип надеюсь понятен :)
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

dmonco

  • Осваиваюсь на форуме
  • 28
  • 0 / 0
  • http://dmitryboruk.com
Блин, знаю, что 100% какая-то мелочь, а что именно найти не получается.

Beliyadm, помогите, пожалуйста.

Пробовал разбить на части, проверить, например, таким запросом:

SELECT `user_id`, `user_friend_id`, `order_total`
FROM `jos_vm_friends`
INNER JOIN `jos_vm_orders`
ON `jos_vm_friends.user_friend_id` = `jos_vm_orders.user_id`

Выдает ошибку: #1052 - Column 'user_id' in field list is ambiguous

Структура таблиц следующая:

jos_vm_friends
   id   user_id   user_friend_id
   1   131           130
   2   131           140
   3   131           122

jos_vm_orders
   order_id   user_id   order_total
   1           130           5060.00000
   2           140           1070.00000
   3           122           2430.00000

Заранее благодарю!
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Ну тут два варианта :) Либо поля user_id нет ни в одной таблице, либо оно есть с таким названием в обоих таблицах, а вы в SELECT не указываете псевдоним, соответственно запрос не знает из какой таблицы брать данное поле
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Код: sql
SELECT f.user_id, f.user_friend_id, o.order_total
FROM jos_vm_friends AS f
INNER JOIN jos_vm_orders AS o ON f.user_friend_id = o.user_id
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

dmonco

  • Осваиваюсь на форуме
  • 28
  • 0 / 0
  • http://dmitryboruk.com
Огромное спасибо!  :D :D :D :D :D :D

Всё работает чётко!

Вот окончательный вариант, может пригодится кому-то:

Код
SELECT f.user_id, f.user_friend_id, SUM(o.order_total)
FROM jos_vm_friends AS f
INNER JOIN jos_vm_orders AS o ON f.user_friend_id = o.user_id where f.user_id = "'.$user->id.'" and o.order_status =  "ЗД"
group by f.user_friend_id

Тему можно закрывать.
*

nik_neman

  • Захожу иногда
  • 52
  • 2 / 0
А как вывести php на отдельной странице Joomla?
Подскажите, пожалуйста, принцип...
Заранее спасибо.
*

RoooMka

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
  • RoooM
Может знаете, как добавить в order.order_list.php (список продаж) столбец с названием товара или хотя бы производителя?

$list  = "SELECT #__{vm}_orders.order_id,order_status, #__{vm}_orders.cdate,#__{vm}_orders.mdate,order_total,order_currency,#__{vm}_orders.user_id, ";
$list .= "first_name, last_name FROM #__{vm}_orders, #__{vm}_order_user_info WHERE ";
$count = "SELECT count(*) as num_rows FROM #__{vm}_orders, #__{vm}_order_user_info WHERE ";

Заранее спасибо!
*

Mick_20

  • Завсегдатай
  • 1029
  • 13 / 0
  • Что тут писать?
Ребят а как просто вывести все содержимое  таблицы?
Мой сайт про корабли
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как заставить Joomla 1.5 работать на сервере с MySQL версии 5.7 и выше?

Автор Palomnik

Ответов: 14
Просмотров: 8929
Последний ответ 01.10.2024, 00:22:40
от jesus
Как установить Joomla 1.5 на php 7?

Автор Marius

Ответов: 8
Просмотров: 4471
Последний ответ 30.05.2021, 21:11:21
от Marius
При попытке войти в админку 404 ошибка компонента - Joomla 1.5: Общие вопросы

Автор omezik

Ответов: 1
Просмотров: 4014
Последний ответ 30.08.2019, 16:10:56
от voland
Нужно починить модуль импорта на сайте Joomla

Автор matus-8

Ответов: 0
Просмотров: 3841
Последний ответ 22.08.2019, 15:09:17
от matus-8
Восстановление Joomla на локальном компьютере из резерной копии

Автор raf88

Ответов: 6
Просмотров: 8853
Последний ответ 28.12.2018, 01:48:46
от natalileto