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

Lepricon

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
Здравствуйте!
Просмотрел на форуме много статей на эту тему, но наверно кривые руки и мало опыта работы с Joomla.

Подскажите, как сделать на Главной странице -> Список ВСЕХ категорий в 3, 4 столбца?  !!!???!!!
(Joomla! 3.8.3)
« Последнее редактирование: 17.12.2017, 00:58:24 от Lepricon »
*

kern.USR

  • Давно я тут
  • 827
  • 68 / 1
Если я вас правильно понимаю, то в шаблоне компонента com_content/categories/default_items.php (или как вы там его обозвали)
Сначала ищите нечто подобное
Код
$class = ' class="first"';

и меняете на такую конструкцию
Код
$class = ' class="first cat-item"';

После объявления переменной class, вставляете
Код
$columns=4;
Число - количество столбцов
и добавляете счётчик
Код
$i=0;

Дальше ищете цикл перебора разделов
Код
foreach($this->items[$this->parent->id] as $id => $item)

Сразу в цикле есть условие
Код
if ($this->params->get('show_empty_categories_cat') || $item->numitems || count($item->getChildren())) :
Прямо в следующей строке вставляете
Код
$i++;

там, буквально в третьей строке, найдёте такое
Код
if (!isset($this->items[$this->parent->id][$id + 1]))
{
$class = ' class="last"';
}
присвоение $class замените на это
Код
$class = ' class="last cat-item"';

Дальше находим вывод div'а оборачивающего категорию в списке
Код
<div <?php echo $class; ?> >

и меняем на
Код
<div <?php echo $class . ' ' . style="width:'.number_format(100/$columns, 1).'%;"'; ?> >

дальше находите вот такой код:
Код
<?php $class = ''; ?>
и меняете на
Код
<?php $class = 'class="cat-item"'; ?>

перед концом цикла
Код
endforeach;
есть ещё конец условия
Код
endif;
вот перед ним вставляете
Код
<?php if(($i+1)%($columns)==0): ?>
<div class="clr"></div>
<?php endif; ?>

Теперь в файле со стилями осталось дописать
Код
.cat-item{
display: inline-block;
float: left;
box-sizing: border-box;
margin-left: 0;
margin-right: 0;
}
.clr{
display: table;
width: 100%;
clear: both;
}
Чтоб добавить отступы между разделами по-горизонтали - в секцию .cat-item допишите
Код
padding-left: 15px;
padding-right: 15px;

Всё вышенаписанное истинно для стандартного шаблона. Для других гарантии не даю!
*

Lepricon

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
Спасибо ОГРОМНОЕ  *DRINK* за ответ, но хотелось бы еще пару уточнений.

1. \components\com_content\views\categories\tmpl\default_items.php правильно ли я понял какой файл?

2. Файл со стилями. Это который находится в папке templates\имя шаблона\css\joomla.css?
*

Lepricon

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
Почти все получилось!

Еще вопрос, как и где выставить ширину для <div class="cat-item" style="width: 0.0%;"> ?
*

kern.USR

  • Давно я тут
  • 827
  • 68 / 1
1. \components\com_content\views\categories\tmpl\default_items.php правильно ли я понял какой файл?
Нееееет!! Глупец, остановись!  *suicide*
Не нужно править шаблон в компоненте. Он слетит при первом же обновлении!
Сделай сначала копию себе в templates
Спойлер
[свернуть]

Ну только шаблон выбери тот, который у тебя по-умолчанию стоит

Цитировать
Файл со стилями. Это который находится в папке templates\имя шаблона\css\joomla.css?
Всё зависит от шаблона. Но папку верно определил! Остальось файл поправить, чтоб не слетело в случае обновления

Цитировать
Еще вопрос, как и где выставить ширину для <div class="cat-item" style="width: 0.0%;"> ?
Вот тут вот странно... У всех разделов width 0.0?
*

Lepricon

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
 ;D Остановился, бэкап был, вернул на место все.

1. Что значит "Осталось файл поправить, чтоб не слетело в случае обновления"? Что и где ему поправить?

2. Да, у всех разделов получается width 0.0. Получается divы друг на друга лезут http://joxi.ru/a2XKGwnH1G3zYm , вот если вручную добавить % http://joxi.ru/p27b3J4So1kJNm

 и еще ...

3. Может так и надо, но получается один div болтается не в блоке или ... http://joxi.ru/Grqv9RGsQPDBym
*

Lepricon

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
И да, файл редактировал по адресу templates\мой шаблон\html\com_content\categories\default_items.php правильно я понял?
*

kern.USR

  • Давно я тут
  • 827
  • 68 / 1
Что значит "Осталось файл поправить, чтоб не слетело в случае обновления"? Что и где ему поправить?
У тебя ведь в папке CSS много разных файлов? Посмотри в head'е, кто подключается последним - его и редактируй!

Да, у всех разделов получается width 0.0. Получается divы друг на друга лезут http://joxi.ru/a2XKGwnH1G3zYm , вот если вручную добавить % http://joxi.ru/p27b3J4So1kJNm
Тут 2 варианта:
1. Ты поменял название переменной 
Код
$columns=4;
2. Не верно копируется код с форума.

Для решения проблемы можно обратно поменять
Код
<div <?php echo $class . ' ' . style="width:'.number_format(100/$columns, 1).'%;"'; ?> >
на
Код
<div <?php echo $class; ?> >
а в стилях прописать
Код
.cat-item{
width: 25%; //если в 3 колонки, то 33%
}
И да, файл редактировал по адресу templates\мой шаблон\html\com_content\categories\default_items.php правильно я понял?
Да, то что нужно
*

Lepricon

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
Да, причина в строке <div <?php echo $class . ' ' . style="width:'.number_format(100/$columns, 1).'%;"'; ?> >, "работать" http://joxi.ru/brRQpwKiJlqKbA она начала вот в таком формате <div <?php echo $class.' style="width: '.number_format(100/$colums, 1).'%;"'; ?> >.

Поменял как вы сказали на <div <?php echo $class; ?> >, стало работать.  *DRINK*

Поставил ширину 25%, получилось в первой "строке" 3 div'a, дальше как и заказывал по четыре http://joxi.ru/Dr84OqPF4Oqbgr
« Последнее редактирование: 19.12.2017, 15:10:17 от Lepricon »
*

kern.USR

  • Давно я тут
  • 827
  • 68 / 1
Поставил ширину 25%, получилось в первой "строке" 3 div'a, дальше как и заказывал по четыре http://joxi.ru/Dr84OqPF4Oqbgr
Тут я ошибся немного =) Два раза счётчик увеличил
Вот это
Код
<?php if(($i+1)%($columns)==0): ?>
   <div class="clr"></div>
<?php endif; ?>
Замените на это:
Код
<?php if(($i)%($columns)==0): ?>
   <div class="clr"></div>
<?php endif; ?>
*

Lepricon

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
Как отблагодарить? Все работает!  *DRINK*
*

Lepricon

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
Не сочтите за наглость, тут назрел еще вопрос.

Может подскажите, как сделать категории картинкой и переходом по клику на картинку?
*

kern.USR

  • Давно я тут
  • 827
  • 68 / 1
В смысле, картинкой? Чтоб вместо картинка+текст была только картинка?
*

Lepricon

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
Нет, сейчас текст это Заголовок категории http://joxi.ru/Dr84OqPF4OR0vr
Если добавляем картинку в Описание категории и вставляем ссылку, то получаются скачки из-за текста http://joxi.ru/D2P30wdUpVn9gm
Если добавить картинку во вкладке Параметры, то она не будет как ссылка.
И вроде как нельзя убрать картинку внутри Категории, но чтоб она отображалась на Главной странице, тогда чтоб не пустовало место, можно написать текст описания категории, но его не получается сделать обтеканием картинки и он уходит вниз, вот пример http://joxi.ru/KAxb71JSMPxOXm
*

kern.USR

  • Давно я тут
  • 827
  • 68 / 1
Жуть какая!

Во-первых - найдите картинку-заглушку, которую будете использовать для категорий, которым не задано изображение. Загрузите эту картинку на сервер. Рекомендую в папку /images/ своего шаблона (имеено шаблона, а не шаблона компонента!)

Теперь правим код!

В самое начало фалйал, сразу после
Код
defined('_JEXEC') or die;
Вставляйте
Код
$app = JFactory::getApplication();

Ищите секцию (она после вывода h3 идёт)
Код
<?php if ($this->params->get('show_description_image') && $item->getParams()->get('image')) : ?>
<img src="<?php echo $item->getParams()->get('image'); ?>" alt="<?php echo htmlspecialchars($item->getParams()->get('image_alt'), ENT_COMPAT, 'UTF-8'); ?>" />
<?php endif; ?>

и меняете на
Код
<?php if ($this->params->get('show_description_image')) : ?>
<?php if($item->getParams()->get('image')): ?>
<img src="<?php echo $item->getParams()->get('image'); ?>" alt="<?php echo htmlspecialchars($item->getParams()->get('image_alt'), ENT_COMPAT, 'UTF-8'); ?>" />
<?php else: ?>
<img src="<?php echo JURI::base(true). '/templates/' . $app->getTemplate(); ?>/images/<НАЗВАНИЕ КРТИНКИ.ЖэПэГэ>" alt="<?php echo htmlspecialchars($item->title, ENT_COMPAT, 'UTF-8'); ?>" />
<?php endif; ?>
<?php endif; ?>

Вроде бы должно работать
*

Lepricon

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
Получилось вот как http://joxi.ru/Y2LKEwQH9jaR5m , как бы указать высоту блока текста, чтоб не было ступенек?

И как вставлять картинки, если берется один файл "заглушка", и переход по клику на нее?
*

Lepricon

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
И еще, между первым и вторым рядом отступ больше чем у остальных, выше на скрине видно.
*

kern.USR

  • Давно я тут
  • 827
  • 68 / 1
Цитировать
И как вставлять картинки, если берется один файл "заглушка", и переход по клику на нее?

Картинки ставятся через параметры категории.

По поводу ссылки - забыл.
Вот такой код должен быть, чтоб ссылки открывались по картинке
Код
<?php if ($this->params->get('show_description_image')) : ?>
<a href="<?php echo JRoute::_(ContentHelperRoute::getCategoryRoute($item->id, $item->language)); ?>">
<?php if($item->getParams()->get('image')): ?>
<img src="<?php echo $item->getParams()->get('image'); ?>" alt="<?php echo htmlspecialchars($item->getParams()->get('image_alt'), ENT_COMPAT, 'UTF-8'); ?>" />
<?php else: ?>
<img src="<?php echo JURI::base(true). '/templates/' . $app->getTemplate(); ?>/images/<НАЗВАНИЕ КРТИНКИ.ЖэПэГэ>" alt="<?php echo htmlspecialchars($item->title, ENT_COMPAT, 'UTF-8'); ?>" />
<?php endif; ?>
</a>
<?php endif; ?>

Чтоб сделать высоту у заголовков одинаковую (из расчёта, что больше 2х строк не будет)
Код
.page-header.item-title{
height: 45px;/*в два раза больше, чем одна строка*/
}
*

Lepricon

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
Все просто замечательно  yes! ! Я не знаю как благодарить  *DRINK*  *DRINK*  *DRINK*

Жаль нет смайла на форуме, чтоб хоть графически передать благодарность вам!
*

kern.USR

  • Давно я тут
  • 827
  • 68 / 1
Простого "спасибо" мне вполне достаточно!
*

Lepricon

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
ОГРОМНЕЙШЕЕ СПАСИБИЩЕ тебе добрый человек  *DRINK*
*

Алекс33

  • Новичок
  • 4
  • 0 / 0
Просто восхищён подробным ответом!  *DRINK*
На Joomla! 3.8.4, шаблон - копия Protostar заработало. Обновился до Joomla! 3.8.5 - работает.
Вопрос, подскажите пожалуйста как сделать вывод списка категорий в 2-4 столбца по алфавиту, чтобы следующая буква начиналась с новой строки, а не продолжалась во 2-4 столбце.
Спасибо!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Helix3 сделать несколько рядов не столбцов!

Автор Bowa

Ответов: 6
Просмотров: 3958
Последний ответ 04.03.2023, 20:33:40
от Petrovich
Как сделать вывод ссылок в обратном порядке (com_weblinks)?

Автор Slava77

Ответов: 0
Просмотров: 849
Последний ответ 24.11.2022, 16:42:09
от Slava77
Хлебные крошки: вместо title сделать заголовок

Автор Zelyonkin

Ответов: 2
Просмотров: 804
Последний ответ 09.09.2022, 08:46:10
от Zelyonkin
Как в мобильной версии поставить &quot;блок особенностей&quot; в два столбца?

Автор sergspb

Ответов: 7
Просмотров: 997
Последний ответ 15.04.2021, 13:51:54
от xpank
Как слово Menu сделать русским?

Автор qqazz12

Ответов: 2
Просмотров: 877
Последний ответ 29.08.2020, 17:54:10
от qqazz12