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

artanto

  • Захожу иногда
  • 55
  • 2 / 0
  • промокод для Majordomo - MDG78352
Всем привет!
Имеется: Joomla! 2.5.8, Zoo 3.0.5 Pro.
Конфиг модуля:
Код
<?php
defined('_JEXEC') or die('Restricted access');
require_once(JPATH_ADMINISTRATOR.'/components/com_zoo/config.php');
$zoo = App::getInstance('zoo');
$zoo->system->language->load('com_zoo');
$path = dirname(__FILE__);
$zoo->path->register($path, 'mod_zooitem');
if ($application = $zoo->table->application->get($params->get('application', 0))) {
$items = $zoo->module->getItems($params);
if (!empty($items)) {
$renderer = $zoo->renderer->create('item')->addPath(array($zoo->path->path('component.site:'), dirname(__FILE__)));
$layout = $params->get('layout', 'default');
include(JModuleHelper::getLayoutPath('mod_zooitem', $params->get('theme', 'list')));
}
}

Вопрос: как грамотно изменить путь к лэйаутам в папке media/zoo/app/blog/rendered/item, что бы модуль брал лэйауты из приложения, а не из своей папки?
« Последнее редактирование: 18.11.2012, 23:48:08 от artanto »
*

MetaSpirit

  • Завсегдатай
  • 1370
  • 106 / 0
  • R.A.S.Lab[.org]
Re: User path для модуля Zoo Item
« Ответ #1 : 15.11.2012, 16:13:29 »
Код: php
$renderer = $zoo->renderer->create('item')->addPath(array($this->app->path->path('component.site:'), $application->getTemplate()->getPath()));
R.A.S.Lab[.org]: ZOOvirtue - корзина для ZOO, Яндекс.Карты для ZOO, ItemPanes - табы для ZOO, ZOOlendar - календарь для ZOO  и др.
Создание расширений для YOOtheme ZOO на заказ. Становитесь в очередь.
*

artanto

  • Захожу иногда
  • 55
  • 2 / 0
  • промокод для Majordomo - MDG78352
Re: User path для модуля Zoo Item
« Ответ #2 : 15.11.2012, 16:29:30 »
похоже этого мало, в админке модуль продолжает брать свои лэйауты
есть ещё mod_zooitem.xml, в нем
Код
			<fieldset name="basic" addfieldpath="/modules/mod_zooitem/fields">
<field name="theme" type="filename" default="" label="Theme" description="Visual style" path="/tmpl/" />
<field name="layout" type="filename" default="" label="Layout" description="The Item Layout" path="/renderer/item/" />

менял на путь от рута ../../, тоже не помогло
есть у кого ещё идеи?
« Последнее редактирование: 15.11.2012, 16:40:36 от artanto »
*

artanto

  • Захожу иногда
  • 55
  • 2 / 0
  • промокод для Majordomo - MDG78352
Re: User path для модуля Zoo Item
« Ответ #3 : 15.11.2012, 16:29:52 »
это лишний пост, не могу удалить
« Последнее редактирование: 15.11.2012, 16:35:22 от artanto »
*

poiuy

  • Захожу иногда
  • 203
  • 30 / 6
  • o_O
Re: User path для модуля Zoo Item
« Ответ #4 : 15.11.2012, 17:43:52 »
К сожалению, не знаю ответа на ваш вопрос. Мне вот интересно, вам не лень постоянно писать "лайаут", я их называю лаётами и не парюсь. Извините за офтоп  *DRINK*
*

MetaSpirit

  • Завсегдатай
  • 1370
  • 106 / 0
  • R.A.S.Lab[.org]
Re: User path для модуля Zoo Item
« Ответ #5 : 15.11.2012, 18:00:29 »
Детальней задачу нужно ставить... детальней...
А по сути:
1. изменить filename.php
Код: php
class JFormFieldFilename extends JFormField {

protected $type = 'Filename';

public function getInput() {

// get app
$app = App::getInstance('zoo');
                // init vars
                $params = $app->parameterform->convertParams($parent);
                // get application
                if ($application_id = $params->get('application')) {
                $application = $app->table->application->get((int)$application_id);
// create select
$path    = $application->getTemplate()->getPath();
$options = array();

if (is_dir($path)) {
foreach (JFolder::files($path, '^([-_A-Za-z0-9]+)\.php$') as $tmpl) {
$tmpl = basename($tmpl, '.php');
$options[] = $app->html->_('select.option', $tmpl, ucwords($tmpl));
}
}
                }
return $app->html->_('select.genericlist', $options, "{$this->formControl}[{$this->group}][{$this->fieldname}]", '', 'value', 'text', $this->value);
}

}
После, добавить в модуль ранее приведенную модификацию.
И протестировать, т.к. я не тестировал.
Примечание: выбор шаблонов вывода появится только после первичного сохранения настроек. Т.к. берет приложение из сохраненных параметров.
R.A.S.Lab[.org]: ZOOvirtue - корзина для ZOO, Яндекс.Карты для ZOO, ItemPanes - табы для ZOO, ZOOlendar - календарь для ZOO  и др.
Создание расширений для YOOtheme ZOO на заказ. Становитесь в очередь.
*

artanto

  • Захожу иногда
  • 55
  • 2 / 0
  • промокод для Majordomo - MDG78352
Re: User path для модуля Zoo Item
« Ответ #6 : 15.11.2012, 18:01:01 »
Мне вот интересно, вам не лень постоянно писать "лайаут", я их называю лаётами и не парюсь. Извините за офтоп  *DRINK*
так я это... как произносится, так и пишу, если напрягает, буду писать лаёты (хотя я бы с первого раза не понял, что под словом "лаёт" имеется ввиду layout xD)

жаль, однако, что по сабжу идей ни у кого нет, видимо я действительно извращенец, если хочу без углубленных знаний языка добиться от Joomla эффективности Битрикса


*

MetaSpirit

  • Завсегдатай
  • 1370
  • 106 / 0
  • R.A.S.Lab[.org]
Re: User path для модуля Zoo Item
« Ответ #7 : 15.11.2012, 18:04:51 »
Забыл сказать, т.к. filename.php используется и для тем, создайте его копию, напр., layoutsfilename.php и добавляйте модификацию в него, также внесите изменения в <field name="layout" type="layoutsfilename" default="" label="Layout" description="The Item Layout" />

И еще уточняю: ...getTemplate()->getPath() следует изменить на - ...getTemplate()->getPath().'/renderer/item' везде где я упоминал
« Последнее редактирование: 15.11.2012, 18:08:55 от MetaSpirit »
R.A.S.Lab[.org]: ZOOvirtue - корзина для ZOO, Яндекс.Карты для ZOO, ItemPanes - табы для ZOO, ZOOlendar - календарь для ZOO  и др.
Создание расширений для YOOtheme ZOO на заказ. Становитесь в очередь.
*

MetaSpirit

  • Завсегдатай
  • 1370
  • 106 / 0
  • R.A.S.Lab[.org]
Re: User path для модуля Zoo Item
« Ответ #8 : 15.11.2012, 18:20:02 »
добиться от Joomla эффективности Битрикса
Тут вы батенька загнули, Битрикс намного г***нистей Joomla...
R.A.S.Lab[.org]: ZOOvirtue - корзина для ZOO, Яндекс.Карты для ZOO, ItemPanes - табы для ZOO, ZOOlendar - календарь для ZOO  и др.
Создание расширений для YOOtheme ZOO на заказ. Становитесь в очередь.
*

artanto

  • Захожу иногда
  • 55
  • 2 / 0
  • промокод для Majordomo - MDG78352
Re: User path для модуля Zoo Item
« Ответ #9 : 15.11.2012, 18:29:57 »
mod_zooitem.php
Код
<?php
defined('_JEXEC') or die('Restricted access');
require_once(JPATH_ADMINISTRATOR.'/components/com_zoo/config.php');
$zoo = App::getInstance('zoo');
$zoo->system->language->load('com_zoo');
$path = dirname(__FILE__);
$zoo->path->register($path, 'mod_zooitem');
if ($application = $zoo->table->application->get($params->get('application', 0))) {
$items = $zoo->module->getItems($params);
if (!empty($items)) {
$renderer = $zoo->renderer->create('item')->addPath(array($this->app->path->path('component.site:'), $application->getTemplate()->getPath().'/renderer/item'));
$layout = $params->get('layout', 'default');
include(JModuleHelper::getLayoutPath('mod_zooitem', $params->get('theme', 'list')));
}
}

filename.php (пока оставил это название)
Код
<?php
defined('JPATH_BASE') or die;
jimport('joomla.form.formfield');
require_once(JPATH_ADMINISTRATOR.'/components/com_zoo/config.php');
class JFormFieldFilename extends JFormField {
protected $type = 'Filename';
public function getInput() {
$app = App::getInstance('zoo');
                $params = $app->parameterform->convertParams($parent);
                if ($application_id = $params->get('application')) {
                $application = $app->table->application->get((int)$application_id);
$path    = $application->getTemplate()->getPath().'/renderer/item';
$options = array();
if (is_dir($path)) {
foreach (JFolder::files($path, '^([-_A-Za-z0-9]+)\.php$') as $tmpl) {
$tmpl = basename($tmpl, '.php');
$options[] = $app->html->_('select.option', $tmpl, ucwords($tmpl));
}
}
                }
return $app->html->_('select.genericlist', $options, "{$this->formControl}[{$this->group}][{$this->fieldname}]", '', 'value', 'text', $this->value);
}
 
}

в админке создаю новый модуль Zoo item и дебагер пишет - Warning: Invalid argument supplied for foreach() in /home/***/public_html/libraries/joomla/html/html/select.php on line 504

чяднт? заранее прошу меня извинить, htmlем я владею лучше чем php, поэтому сам не могу разобраться в путях к renderer
« Последнее редактирование: 15.11.2012, 18:35:57 от artanto »
*

MetaSpirit

  • Завсегдатай
  • 1370
  • 106 / 0
  • R.A.S.Lab[.org]
Re: User path для модуля Zoo Item
« Ответ #10 : 15.11.2012, 19:20:30 »
/renderer/item, после item еще слэшь нужно поставить - /renderer/item/
R.A.S.Lab[.org]: ZOOvirtue - корзина для ZOO, Яндекс.Карты для ZOO, ItemPanes - табы для ZOO, ZOOlendar - календарь для ZOO  и др.
Создание расширений для YOOtheme ZOO на заказ. Становитесь в очередь.
*

artanto

  • Захожу иногда
  • 55
  • 2 / 0
  • промокод для Majordomo - MDG78352
Re: User path для модуля Zoo Item
« Ответ #11 : 15.11.2012, 23:33:20 »
увы, и со слэшем после item тоже выдает Warning: Invalid argument supplied for foreach() in /home/***/public_html/libraries/joomla/html/html/select.php on line 504
меня смущают эти строки:
Код
$zoo = App::getInstance('zoo');
$zoo->system->language->load('com_zoo');
$path = dirname(__FILE__);
$zoo->path->register($path, 'mod_zooitem');

так как $renderer = $zoo->renderer->create('item')..... может ли быть это связано с назначением каталога для пути к лаётам?
*

MetaSpirit

  • Завсегдатай
  • 1370
  • 106 / 0
  • R.A.S.Lab[.org]
Re: User path для модуля Zoo Item
« Ответ #12 : 16.11.2012, 01:28:00 »
я же писал, сделать отдельные файлы для темы и шаблона вывода.
R.A.S.Lab[.org]: ZOOvirtue - корзина для ZOO, Яндекс.Карты для ZOO, ItemPanes - табы для ZOO, ZOOlendar - календарь для ZOO  и др.
Создание расширений для YOOtheme ZOO на заказ. Становитесь в очередь.
*

artanto

  • Захожу иногда
  • 55
  • 2 / 0
  • промокод для Majordomo - MDG78352
Re: User path для модуля Zoo Item
« Ответ #13 : 16.11.2012, 11:02:46 »
Сделал новый layoutsfilename.php, внес туда Ваш правленый код (со слэшем), в mod_zooitem.xml исправил на
Код
<field name="layout" type="layoutsfilename" default="" label="Layout" description="The Item Layout" />

ответ дебагера:
Fatal error: Cannot redeclare class JFormFieldFilename in /home/***/public_html/modules/mod_zooitem/fields/layoutsfilename.php on line 5

Ок, лезу в layoutsfilename.php, строка 5:
Код
class JFormFieldFilename extends JFormField {
понимаю, что JFormFieldFilename нужно заменить на JFormFieldLayoutsfilename, меняю...
ошибки перестал выдавать, но селектор Layout в модуле теперь пуст, видимо заблудился в поисках лаётов в каталоге приложения ))

на всякий случай, попробовал оставить path="/renderer/item/" в field name="layout" type="layoutsfilename", так же пусто
« Последнее редактирование: 16.11.2012, 11:16:12 от artanto »
*

MetaSpirit

  • Завсегдатай
  • 1370
  • 106 / 0
  • R.A.S.Lab[.org]
Re: User path для модуля Zoo Item
« Ответ #14 : 16.11.2012, 11:44:15 »
Сделал новый layoutsfilename.php, внес туда Ваш правленый код (со слэшем), в mod_zooitem.xml исправил на
Код
<field name="layout" type="layoutsfilename" default="" label="Layout" description="The Item Layout" />

ответ дебагера:
Fatal error: Cannot redeclare class JFormFieldFilename in /home/***/public_html/modules/mod_zooitem/fields/layoutsfilename.php on line 5

Ок, лезу в layoutsfilename.php, строка 5:
Код
class JFormFieldFilename extends JFormField {
понимаю, что JFormFieldFilename нужно заменить на JFormFieldLayoutsfilename, меняю...
ошибки перестал выдавать, но селектор Layout в модуле теперь пуст, видимо заблудился в поисках лаётов в каталоге приложения ))

на всякий случай, попробовал оставить path="/renderer/item/" в field name="layout" type="layoutsfilename", так же пусто
Правильно, он и будет пуст сначала, т.к. в параметрах еще нет сведений об ИД приложения.
Сначала нужно выбрать приложение в настройках, потом сохранится, а после сохранения появится выбор шаблонов разметки.
R.A.S.Lab[.org]: ZOOvirtue - корзина для ZOO, Яндекс.Карты для ZOO, ItemPanes - табы для ZOO, ZOOlendar - календарь для ZOO  и др.
Создание расширений для YOOtheme ZOO на заказ. Становитесь в очередь.
*

artanto

  • Захожу иногда
  • 55
  • 2 / 0
  • промокод для Majordomo - MDG78352
Re: User path для модуля Zoo Item
« Ответ #15 : 16.11.2012, 12:41:43 »
да, я тоже так думал, сделал аж 3 новых модуля в админке на разные (заполненные!) приложения с полями и лаётами
Спойлер
[свернуть]
по-прежнему пусто.
в positions.config все лаёты прописаны, но модулю похоже пофиг на конфиг

p.s.: а вот как реагирует на это фронтэнд дебагер:
Fatal error: Using $this when not in object context in /home/***/public_html/modules/mod_zooitem/mod_zooitem.php on line 11

что-то не стыкуется или это просто не реально заставить модуль брать чужие лаёты?
« Последнее редактирование: 17.11.2012, 16:34:54 от artanto »
*

artanto

  • Захожу иногда
  • 55
  • 2 / 0
  • промокод для Majordomo - MDG78352
Re: User path для модуля Zoo Item
« Ответ #16 : 17.11.2012, 16:35:01 »
в этой 11-ой строке речь идет о
Код
$renderer = $zoo->renderer->create('item')->addPath(array($this->app->path->path('component.site:'), $application->getTemplate()->getPath().'/renderer/item/'));
*

MetaSpirit

  • Завсегдатай
  • 1370
  • 106 / 0
  • R.A.S.Lab[.org]
Re: User path для модуля Zoo Item
« Ответ #17 : 18.11.2012, 21:31:03 »
Замените $this->app на $zoo и должно заработать.
R.A.S.Lab[.org]: ZOOvirtue - корзина для ZOO, Яндекс.Карты для ZOO, ItemPanes - табы для ZOO, ZOOlendar - календарь для ZOO  и др.
Создание расширений для YOOtheme ZOO на заказ. Становитесь в очередь.
*

artanto

  • Захожу иногда
  • 55
  • 2 / 0
  • промокод для Majordomo - MDG78352
Re: User path для модуля Zoo Item
« Ответ #18 : 18.11.2012, 23:09:48 »
Замените $this->app на $zoo и должно заработать.

Renderer Layout "item.default" not found. (File: administrator/components/com_zoo/classes/renderer/item.php, Line: 45)

LOL, модуль прогулялся аж до самого каталога компонента))
Ладно, х** с ним, я уже забил на эту идею. Тупо через элемент-картинку буду аватар в лаёт модуля вставлять. Но спасибо за помощь и терпение.
« Последнее редактирование: 18.11.2012, 23:48:52 от artanto »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как убрать /item/ из тела ссылки элемента?

Автор Evenfrost

Ответов: 151
Просмотров: 50864
Последний ответ 12.03.2018, 12:05:20
от Apoca1ypto
[Решено] Как в модуле ZOO Item вывести название и описание категории?

Автор frolov.ar

Ответов: 13
Просмотров: 6373
Последний ответ 01.04.2017, 13:29:52
от rivermc
Модуль: ZOO item популярные за неделю ( НЕ бесплатно)

Автор dee88

Ответов: 4
Просмотров: 2450
Последний ответ 29.08.2016, 16:13:28
от ameli90
Zoo item (настройка)

Автор altry1st

Ответов: 26
Просмотров: 11025
Последний ответ 12.02.2016, 10:30:16
от ssttaass
Подключение "модуля" с html-кодом

Автор winka4ka

Ответов: 6
Просмотров: 1764
Последний ответ 08.10.2015, 17:15:15
от winka4ka