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

jackmc

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
У меня на сайте для всех страниц используется один шаблон. Мне необходимо ТОЛЬКО на главной отобразить модуль (mod_custom), на всех же страницах этот модуль не показывать, как это можно сделать?
« Последнее редактирование: 26.10.2009, 20:26:08 от PaLyCH »
*

SKeeper

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Re: Модуль только на одной странице
« Ответ #1 : 19.11.2008, 16:07:42 »
У меня на сайте для всех страниц используется один шаблон. Мне необходимо ТОЛЬКО на главной отобразить модуль (mod_custom), на всех же страницах этот модуль не показывать, как это можно сделать?

Можно попытаться привязать модуль к пункту меню:
В Менеджере модулей выбираем нужный модуль и в пункте Назначение меню выбрать нужный пункт (в Вашем случае пункт соответствующий главной странице)
*

jackmc

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Re: Модуль только на одной странице
« Ответ #2 : 19.11.2008, 17:25:38 »
Можно попытаться привязать модуль к пункту меню:
В Менеджере модулей выбираем нужный модуль и в пункте Назначение меню выбрать нужный пункт (в Вашем случае пункт соответствующий главной странице)

А можно ли как-нибудь сделать через код?
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Модуль только на одной странице
« Ответ #3 : 19.11.2008, 17:33:05 »
Можно, добавьте в шаблон новую область (например frontpage_top):

Код: php
<?php
$option = JRequest::getCmd('option');
$view = JRequest::getVar('view', 'frontpage');
if ($option == 'com_content' && $view == 'frontpage') {
?>
<jdoc:include type="modules" name="frontpage_top" style="raw" />
<?php
}

Подкорректируйте xml-файл шаблона, добавив в нем эту область в список областей, и затем опубликуйте ваш модуль в этой области.

Либо используйте какую-то из существующих, заключив ее в указанный блок проверок - тогда править xml-файл не придётся.
*

Dimchik

  • Осваиваюсь на форуме
  • 34
  • 6 / 0
Re: Модуль только на одной странице
« Ответ #4 : 02.12.2008, 18:39:12 »
спасибо! помогло
*

kavkaz07

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
Re: Модуль только на одной странице
« Ответ #5 : 08.12.2008, 15:31:26 »
а если нужно чтоб модуль был виден только на главной странице компонента и больше нигде?
*

pedrosoft

  • Захожу иногда
  • 367
  • 113 / 7
Re: Модуль только на одной странице
« Ответ #6 : 19.12.2008, 18:02:37 »
какого именно компонента?

для com_content см. код выше от Смарта
Интернет Хостинг Центр: отличные цены, лучшее качество, расположение в дата-центре «Оверсан-Меркурий»
*

MAzZY

  • Захожу иногда
  • 93
  • 5 / 0
Re: Модуль только на одной странице
« Ответ #7 : 02.01.2009, 19:18:39 »
У меня сходная проблема. Мне нужно, чтобы модуль отображался на страницах статей, но не показывался на страницах самих категорий и разделов. Как такое можно сделать?
И еще вдогонку. Нужно сделать отображение этого модуля на страницах PhocaGallery.
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: Модуль только на одной странице
« Ответ #8 : 03.01.2009, 21:35:08 »
У меня сходная проблема. Мне нужно, чтобы модуль отображался на страницах статей, но не показывался на страницах самих категорий и разделов. Как такое можно сделать?
Код: php
if ($view==article) { } else {}
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

MAzZY

  • Захожу иногда
  • 93
  • 5 / 0
Re: Модуль только на одной странице
« Ответ #9 : 03.01.2009, 22:16:40 »
Вот спасибо. Действительно помогло.
Правда, я что-то накосячил и у меня теперь модуль отображается в статьях как положено, а на других страницах на его месте просто пустота, хотя не должно быть ничего. Т.е. отведено место под блок (в этом блоке только один модуль), но там пусто. Кстати говоря, когда не было условия, такой ситуации не возникало
Вот код, который я сделал:

Код
<?php 
$option = JRequest::getCmd('option');
$view = JRequest::getVar('view');
if ($option == 'com_content' && $view == 'article') {?>
<!-- BEGIN: RIGHT COLUMN -->
<div id="ja-col2">
<jdoc:include type="modules" name="right_new" style="jarounded" />
</div><br />
<!-- END: RIGHT COLUMN -->
<?php }?>
Сделано из кода правой панели стиля ja_purity.

А как определить параметры для PhocaGallery чтобы можно было составить такое же условие? Где их можно найти?
« Последнее редактирование: 03.01.2009, 22:21:01 от MAzZY »
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: Модуль только на одной странице
« Ответ #10 : 03.01.2009, 22:20:57 »
Правда, я что-то накосячил и у меня теперь модуль отображается в статьях как положено, а на других страницах на его месте просто пустота, хотя не должно быть ничего.
правильно, у тебя условие - если компонент com_content и режим просмотра полный текст статьи - то показать модуль, иначе - пусто.
Аналогичное условие можно применить не только к позиции модуля, но и DIV либо ячейке таблицы, в которую он заключен, тогда не будет пустого куска экрана
Проверяй, что у тебя является родителем для <div id="ja-col2">
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

MAzZY

  • Захожу иногда
  • 93
  • 5 / 0
Re: Модуль только на одной странице
« Ответ #11 : 03.01.2009, 22:26:30 »
С условием
Код
if ($view == 'article')
получается точно также.
Или я что-то не так понял...
*

MAzZY

  • Захожу иногда
  • 93
  • 5 / 0
Re: Модуль только на одной странице
« Ответ #12 : 03.01.2009, 22:28:52 »
Проверяй, что у тебя является родителем для <div id="ja-col2">
Вот такая там конструкция:
Код
<div id="ja-containerwrap<?php echo $divid; ?>">
<div id="ja-containerwrap2">
<div id="ja-container">
<div id="ja-container2" class="clearfix">

Как к ним применить такое условие?
« Последнее редактирование: 03.01.2009, 22:37:31 от MAzZY »
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: Модуль только на одной странице
« Ответ #13 : 03.01.2009, 22:40:41 »
готового решения не дам, ибо шаблон на дивах, с ними невозможно не видя кода CSS дать подобное решение (какой блок можно отключить), если приложите и файл стилей - может быть кто нибудь и даст готовое решение
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

MAzZY

  • Захожу иногда
  • 93
  • 5 / 0
Re: Модуль только на одной странице
« Ответ #14 : 03.01.2009, 22:47:14 »
Код
#ja-containerwrap {
background: url(../images/cw-bg1.gif) repeat-y 50% 0;
}

#ja-containerwrap2 {
background: url(../images/cw-bg2.gif) no-repeat 50% 0;
}

#ja-container {
background: url(../images/c-bg1.gif) repeat-y 18% 0;
}

#ja-container2 {
padding: 20px 0;
background: url(../images/c-bg2.gif) no-repeat 18% 0;
}

#ja-col2 {
float: right;
width: 20%;
overflow: hidden;
}

Код
/* Clearfix */
.clearfix:after {
clear: both;
display: block;
content: ".";
height: 0;
visibility: hidden;
}

* html > body .clearfix {
width: 100%;
display: block;
}

* html .clearfix {
height: 1%;
}
Вот все задействованные строки, если я ничего не упустил.

Может есть какое-то более простое решение, какое-то другое условие?
« Последнее редактирование: 03.01.2009, 22:50:18 от MAzZY »
*

MAzZY

  • Захожу иногда
  • 93
  • 5 / 0
Re: Модуль только на одной странице
« Ответ #15 : 03.01.2009, 22:58:11 »
А может проблема с отображением пустого поля возникает из-за того, что модуль включен для всех страниц?
*

MAzZY

  • Захожу иногда
  • 93
  • 5 / 0
Re: Модуль только на одной странице
« Ответ #16 : 05.01.2009, 18:00:13 »
Решил проблему методом костыля: т.к. этот блок является копией правой колонки, то я просто вставил в неё другой модуль и теперь все пустые места закрыты.
Но все равно, хотелось бы решить проблему грамотно. Подскажите, как это все исправить?
*

ZHart

  • Захожу иногда
  • 324
  • 53 / 2
Re: Модуль только на одной странице
« Ответ #17 : 10.11.2009, 18:46:14 »
У меня сходная проблема. Мне нужно, чтобы модуль отображался на страницах статей, но не показывался на страницах самих категорий и разделов. Как такое можно сделать?

А можно сделать что-то подобное без вмешательства в код модуля?
Сложность в том, что нужно один модуль отображать только на главной странице, другой (такого же типа) - на всех страницах сайта, третий (тоже того же типа) - только на страницах статей (когда статьи отображаются в full mode).
Речь идет о модуле mod_jatabs, который шел в комплекте с шаблоном от JoomlArt (лицензионным).
Как такое проще всего реализовать?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Модуль Материалы той же категории, что и открытая статья

Автор genius

Ответов: 12
Просмотров: 2774
Последний ответ 15.11.2017, 13:14:03
от genius
[HOW-TO]Начало статьи - видно всем, продолжение - только зарегистрированным.

Автор Wild Tiger

Ответов: 6
Просмотров: 10051
Последний ответ 14.11.2011, 17:56:04
от Wild Tiger
Title на странице результатов поиска

Автор delphine

Ответов: 3
Просмотров: 26729
Последний ответ 22.06.2009, 09:46:03
от delphine
Изменение адреса к странице administrator

Автор phaestos

Ответов: 1
Просмотров: 37955
Последний ответ 24.12.2008, 00:24:52
от ChaosDay
Как показать модуль только не зарегистрированным пользователям?

Автор jfsv

Ответов: 1
Просмотров: 29412
Последний ответ 13.11.2008, 14:18:13
от beliyadm