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

Шмайсер

  • Давно я тут
  • 801
  • 35 / 3
В ЗОО сделано так: есть каталог (раздел), в нем можно создавать категории. Если к пункту меню привязать именно раздел, то он просто выведет список категорий ( и подкатегорий - если они есть) рядом с которыми в скобочках указано, сколько айтемов в данной категории.
Мне нужно, чтобы выводилась страница каталога (раздела) на ней были названия категорий, а под названиями _item'ы этих категорий.

Пример
категория 1
_item  _item  _item  _item

категория 2
_item  _item  _item  _item

категория 3
_item  _item  _item  _item

и так далее в зависимости от того сколько категорий в каталоге(разделе)

Плачу 700 яндексрублей.

З.Ы. Вообще срочно, ага..))
« Последнее редактирование: 28.06.2010, 16:02:07 от Sulpher »
Разработка сайтов любой сложности, на Joomla 3.9-4.x и не только на ней. Пишу компоненты, модули и плагины на заказ. Переношу сайты с ветки 2.5.х на 4-ю версию Joomla. Пишу любые скрипты и интерфейсы.
*

Виталик

  • Завсегдатай
  • 1244
  • 130 / 0
Re: Подшаманить ZOO 1.1.6
« Ответ #1 : 04.05.2010, 00:25:51 »
Код: php
<?php

// no direct access
defined('_JEXEC') or die('Restricted access');

// include assets css/js
if (strtolower(substr($GLOBALS['mainframe']->getTemplate(), 0, 3))!= 'yoo')
{
JHTML::stylesheet('reset.css', 'components/com_zoo/assets/css/');
}

JHTML::stylesheet('zoo.css.php', 'components/com_zoo/templates/auto/assets/css/');
JHTML::script('zoo.js', 'components/com_zoo/assets/js/');

?>

<div id="yoo-zoo">
<div class="product page-<?php echo $this->catalog->alias; ?>">
<?php if ($this->alpha_index) : ?>
<div class="alpha-index">
<div class="alpha-index-r">
<div class="alpha-index-m">
<?php
$alpha_index = array('#', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');
foreach($alpha_index as $char)
{
$link = JRoute::_($this->link_base.'&view=category&alpha_char='.($char == '#' ? 0 : strtolower($char)));
if (count($this->categories['index'][($char == '#' ? 0 : strtolower($char))])) {
echo '<a href="'.$link.'" title="'.$char.'">'.$char.'</a>';
}
else
{
echo '<span title="'.$char.'">'.$char.'</span>';
}
}
?>
</div>
</div>
</div>
<?php endif; ?>
<?php if (($image = $this->catalog->getImage()) || $this->catalog->description) : ?>
<div class="category">
<div class="box-t1">
<div class="box-t2">
<div class="box-t3"></div>
</div>
</div>
<div class="box-1">
<h1 class="name"><?php echo $this->catalog->name; ?></h1>

<div class="description">
<?php if ($image) : ?>
<img class="image" src="<?php echo $image['src']; ?>" title="<?php echo $this->catalog->name; ?>" alt="<?php echo $this->catalog->name; ?>" <?php echo $image['width_height']; ?>/>
<?php endif; ?>
<?php echo $this->catalog->description; ?>
</div>
</div>
<div class="box-b1">
<div class="box-b2">
<div class="box-b3"></div>
</div>
</div>
</div>
<?php endif; ?>
<?php if ($this->category->countItems() - $this->category->item_count) : ?>
<div class="sub-categories <?php if ($this->catalog->get('categories_title')) echo 'header'; ?>">
<?php if ($title = $this->catalog->get('categories_title')) : ?>
<h1 class="sub-categories-title"><span><span><?php echo $title; ?></span></span></h1>
<?php endif; ?>
<div class="box-t1">
<div class="box-t2">
<div class="box-t3"></div>
</div>
</div>
<div class="box-1">
<?php $i = 0; ?>
<?php while((list($key, $category) = each($this->selected_categories)) || ($i % $this->category_cols != 0)) : ?>
<?php if ($category && !$category->countItems()) continue; ?>



<?php if ($this->category->countItems() - $this->category->item_count) : ?>
<div class="sub-categories">
<?php $i = 0; ?>
<?php while((list($key, $category) = each($this->selected_categories)) || ($i % $this->category_cols != 0)) : ?>
<!-- 123 -->
<?php if ($category && !$category->countItems()) : ?>
<?php continue; ?>
<?php endif ?>
<?php if ($i % $this->category_cols == 0) echo ($i > 0 ? '</div><div class="row">' : '<div class="row first-row">'); ?>


<div class="sub-category">
<?php if ($category) : ?>
<h2 class="category-name">
<?php echo $category->getName(); ?>
</h2>
<div class="items">
<?php
// Получаем объект модели
$model = $this->getModel();
$model->items = null;
// Записываем в него id категории
$model->category_id = $category->id;
// Получаем массив элементов
$items = $model->getItems();
?>
<?php $k = 0; ?>
<?php while((list($key, $item) = each($items)) || ($k % $this->item_cols != 0)) : ?>
<?php
if ($k % $this->item_cols == 0)
{
echo ($k > 0 ? '</div><div class="row">' : '<div class="row first-row">');
}
?>
<div class="<?php echo 'width'.intval(100 / $this->item_cols); ?> <?php if ($k % $this->item_cols == 0) echo 'first-item'; ?>">
<?php echo $this->partial('item', array('item' => $item)); ?>
</div>
<?php $k++; ?>

<?php endwhile; ?>
</div>
</div> <!-- end <div class="items"> -->
<?php endif; ?>
<?php $i++; ?>
</div>
<!-- 123 -->
<?php endwhile; ?></div>
</div>
<?php endif; ?>






<?php endwhile; ?>
</div>
</div>
<div class="box-b1">
<div class="box-b2">
<div class="box-b3"></div>
</div>
</div>
</div>
<?php endif; ?>
<?php if (!$this->alpha_char && count($this->items)) : ?>
<div class="items <?php if ($this->catalog->get('items_title')) echo 'header'; ?>">
<?php if ($title = $this->catalog->get('items_title')) : ?>
<h1 class="items-title"><span><span><?php echo $title; ?></span></span></h1>
<?php endif; ?>
<div class="box-t1">
<div class="box-t2">
<div class="box-t3"></div>
</div>
</div>
<div class="box-1">
<?php $i = 0; ?>
<?php while((list($key, $item) = each($this->items)) || ($i % $this->item_cols != 0)) : ?>
<?php if ($i % $this->item_cols == 0) echo ($i > 0 ? '</div><div class="row">' : '<div class="row first-row">'); ?>
<div class="<?php echo 'width'.intval(100 / $this->item_cols); ?> <?php if ($i % $this->item_cols == 0) echo 'first-item'; ?>">
<?php echo $this->partial('item', array('item' => $item)); ?>
</div>
<?php $i++; ?>
<?php endwhile; ?>
</div>
<?php $link = $this->link_base.'&view=category&category_id='.$this->category->id; ?>
<?php if ($pagination = $this->pagination->render($link)) : ?>
<div class="pagination"><span class="pagination-bg"><?php echo $pagination; ?></span></div>
<?php endif; ?>
</div>
<div class="box-b1">
<div class="box-b2">
<div class="box-b3"></div>
</div>
</div>
</div>
<?php endif; ?>
</div>
</div>


замени в шаблоне содержимое файла catalog.php на это
*

Шмайсер

  • Давно я тут
  • 801
  • 35 / 3
Re: Подшаманить ZOO 1.1.6
« Ответ #2 : 04.05.2010, 00:35:14 »
Виталик, спасибо огромное, но уже оплачено, делает Voland
Разработка сайтов любой сложности, на Joomla 3.9-4.x и не только на ней. Пишу компоненты, модули и плагины на заказ. Переношу сайты с ветки 2.5.х на 4-ю версию Joomla. Пишу любые скрипты и интерфейсы.
*

Sulpher

  • Живу я здесь
  • 2136
  • 402 / 16
  • Шаблоны и расширения Joomla
Re: Подшаманить ZOO 1.1.6
« Ответ #3 : 28.06.2010, 15:13:12 »
Виталик, Шмайсер, никто не будет возражать если сделаем выжимку решения и разместим в соответствующем разделе ZOO?
*

Виталик

  • Завсегдатай
  • 1244
  • 130 / 0
Re: Подшаманить ZOO 1.1.6
« Ответ #4 : 28.06.2010, 15:16:15 »
Виталик, Шмайсер, никто не будет возражать если сделаем выжимку решения и разместим в соответствующем разделе ZOO?
я не против
*

Шмайсер

  • Давно я тут
  • 801
  • 35 / 3
я конешно тоже не против, скоро освобожусь и выложу )) Решение, данное Виталием не совсем то что нужно было мне.
Разработка сайтов любой сложности, на Joomla 3.9-4.x и не только на ней. Пишу компоненты, модули и плагины на заказ. Переношу сайты с ветки 2.5.х на 4-ю версию Joomla. Пишу любые скрипты и интерфейсы.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как убрать описание у превью категорий?

Автор 7Rei

Ответов: 6
Просмотров: 5337
Последний ответ 11.01.2015, 18:06:07
от Cathelen
Сортировка каталога по комментариям и рейтингу.

Автор panasenko

Ответов: 4
Просмотров: 4886
Последний ответ 15.10.2013, 01:51:42
от шдш
Порядок Item'ов...

Автор KVT

Ответов: 41
Просмотров: 12466
Последний ответ 28.05.2012, 11:10:53
от Ole4ka
Item'ы ZOO в других модулях (например YOOCarousel)

Автор werewolfGSM

Ответов: 18
Просмотров: 8377
Последний ответ 28.03.2012, 15:55:30
от tigra-uki
Zoo Pro 1.0.7,как добиться вывода показа модулей в строгоопределенных категориях?

Автор gustov

Ответов: 2
Просмотров: 4563
Последний ответ 19.11.2011, 22:15:09
от gustov