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

sanchexxx

  • Новичок
  • 7
  • 0 / 0
Добрый день, господа!

Столкнулся вот с такой проблемой, http://prntscr.com/396oki

кусок фона на главной, как задать исключением, т.е. чтобы на главной не было, а на других страницах фон присутствовал - не могу смекнуть, в php дело, все перерыл разобраться не могу.
Шаблон сам от Rokettheme, код от index.php в приложении, помогите где что подправить можно, буду благодарен!

Код
<?php
/**
* @version   $Id: index.php 7319 2013-02-07 05:07:38Z kevin $
 * @author RocketTheme http://www.rockettheme.com
 * @copyright Copyright (C) 2007 - 2013 RocketTheme, LLC
 * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
 *
 * Gantry uses the Joomla Framework (http://www.joomla.org), a GNU/GPLv2 content management system
 *
 */
// no direct access
defined( '_JEXEC' ) or die( 'Restricted index access' );

// load and inititialize gantry class
require_once(dirname(__FILE__). '/lib/gantry/gantry.php');
$gantry->init();

// get the current preset
$gpreset = str_replace(' ','',strtolower($gantry->get('name')));

?>
<!doctype html>
<html xml:lang="<?php echo $gantry->language; ?>" lang="<?php echo $gantry->language;?>" >
<head>
<?php if ($gantry->get('layout-mode') == '960fixed') : ?>
<meta name="viewport" content="width=960px">
<?php elseif ($gantry->get('layout-mode') == '1200fixed') : ?>
<meta name="viewport" content="width=1200px">
<?php else : ?>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<?php endif; ?>
    <?php
        $gantry->displayHead();

$gantry->addStyle('grid-responsive.css', 5);
$gantry->addLess('bootstrap.less', 'bootstrap.css', 6);
        $gantry->addLess('global.less', 'master.css', 8, array('main-accent'=>$gantry->get('main-accent','#f28355'), 'main-accent2'=>$gantry->get('main-accent2','#55b8df'), 'main-overlay'=>$gantry->get('main-overlay', 'brown'), 'background-pattern'=>$gantry->get('background-pattern', 'diagonal'), 'background-color'=>$gantry->get('background-color', '#251c1d'), 'body'=>$gantry->get('body', 'beigecolor'), 'logo-type'=>$gantry->get('logo-type', 'style1')));

        if ($gantry->browser->name == 'ie'){
        if ($gantry->browser->shortversion == 9){
        $gantry->addInlineScript("if (typeof RokMediaQueries !== 'undefined') window.addEvent('domready', function(){ RokMediaQueries._fireEvent(RokMediaQueries.getQuery()); });");
        }
if ($gantry->browser->shortversion == 8){
$gantry->addScript('html5shim.js');
}
}
if ($gantry->get('layout-mode', 'responsive') == 'responsive') $gantry->addScript('rokmediaqueries.js');
if ($gantry->get('loadtransition')) {
$gantry->addScript('load-transition.js');
$hidden = ' class="rt-hidden"';}

    ?>
</head>
<body <?php echo $gantry->displayBodyTag(); ?>>
<div id="rt-page-surround">
    <?php /** Begin Top Surround **/ if ($gantry->countModules('top') or $gantry->countModules('header')) : ?>
    <header id="rt-top-surround" class="<?php echo ($gantry->get('background-overlay') == 'light' ? 'rt-light' : 'rt-dark'); ?>">
<?php /** Begin Top **/ if ($gantry->countModules('top')) : ?>
<div id="rt-top" <?php echo $gantry->displayClassesByTag('rt-top'); ?>>
<div class="rt-container">
<?php echo $gantry->displayModules('top','standard','standard'); ?>
<div class="clear"></div>
</div>
</div>
<?php /** End Top **/ endif; ?>
<?php /** Begin Header **/ if ($gantry->countModules('header')) : ?>
<div id="rt-header">
<div class="rt-header-border"></div>
<div class="rt-container">
<?php echo $gantry->displayModules('header','standard','standard'); ?>
<div class="clear"></div>
</div>
</div>
<?php /** End Header **/ endif; ?>
</header>
<?php /** End Top Surround **/ endif; ?>
<div class="rt-page-container rt-container rt-dark">
<?php /** Begin Drawer **/ if ($gantry->countModules('drawer')) : ?>
    <div id="rt-drawer">
            <?php echo $gantry->displayModules('drawer','standard','standard'); ?>
            <div class="clear"></div>
    </div>
    <?php /** End Drawer **/ endif; ?>
<?php /** Begin Showcase **/ if ($gantry->countModules('showcase')) : ?>
<div id="rt-showcase">
<?php echo $gantry->displayModules('showcase','standard','standard'); ?>
<div class="clear"></div>
</div>
<?php /** End Showcase **/ endif; ?>
<div id="rt-transition"<?php if ($gantry->get('loadtransition')) echo $hidden; ?>>
<div id="rt-mainbody-surround">
<?php /** Begin Feature **/ if ($gantry->countModules('feature')) : ?>
<div id="rt-feature">
<?php echo $gantry->displayModules('feature','standard','standard'); ?>
<div class="clear"></div>
</div>
<?php /** End Feature **/ endif; ?>
<?php /** Begin Utility **/ if ($gantry->countModules('utility')) : ?>
<div id="rt-utility">
<?php echo $gantry->displayModules('utility','standard','standard'); ?>
<div class="clear"></div>
</div>
<?php /** End Utility **/ endif; ?>
<?php /** Begin Breadcrumbs **/ if ($gantry->countModules('breadcrumb')) : ?>
<div id="rt-breadcrumbs">
<?php echo $gantry->displayModules('breadcrumb','standard','standard'); ?>
<div class="clear"></div>
</div>
<?php /** End Breadcrumbs **/ endif; ?>
<?php /** Begin Main Top **/ if ($gantry->countModules('maintop')) : ?>
<div id="rt-maintop">
<?php echo $gantry->displayModules('maintop','standard','standard'); ?>
<div class="clear"></div>
</div>
<?php /** End Main Top **/ endif; ?>
<?php /** Begin Main Body **/ ?>
    <?php echo $gantry->displayMainbody('mainbody','sidebar','standard','standard','standard','standard','standard'); ?>
<?php /** End Main Body **/ ?>
<?php /** Begin Main Bottom **/ if ($gantry->countModules('mainbottom')) : ?>
<div id="rt-mainbottom">
<?php echo $gantry->displayModules('mainbottom','standard','standard'); ?>
<div class="clear"></div>
</div>
<?php /** End Main Bottom **/ endif; ?>
<?php /** Begin Extension **/ if ($gantry->countModules('extension')) : ?>
<div id="rt-extension">
<?php echo $gantry->displayModules('extension','standard','standard'); ?>
<div class="clear"></div>
</div>
<?php /** End Extension **/ endif; ?>
</div>
</div>
<?php /** Begin Bottom **/ if ($gantry->countModules('bottom')) : ?>
<div id="rt-bottom">
<?php echo $gantry->displayModules('bottom','standard','standard'); ?>
<div class="clear"></div>
</div>
<?php /** End Bottom **/ endif; ?>
</div>
<?php /** Begin Footer Section **/ if ($gantry->countModules('footer') or $gantry->countModules('copyright')) : ?>
<footer id="rt-footer-surround" class="<?php echo ($gantry->get('background-overlay') == 'light' ? 'rt-light' : 'rt-dark'); ?>">
<?php /** Begin Footer **/ if ($gantry->countModules('footer')) : ?>
<div id="rt-footer">
<div class="rt-container">
<?php echo $gantry->displayModules('footer','standard','standard'); ?>
<div class="clear"></div>
</div>
</div>
<?php /** End Footer **/ endif; ?>
<?php /** Begin Copyright **/ if ($gantry->countModules('copyright')) : ?>
<div id="rt-copyright">
<div class="rt-container">
<?php echo $gantry->displayModules('copyright','standard','standard'); ?>
<div class="clear"></div>
</div>
</div>
<?php /** End Copyright **/ endif; ?>
</footer>
<?php /** End Footer Surround **/ endif; ?>
<?php /** Begin Debug **/ if ($gantry->countModules('debug')) : ?>
<div id="rt-debug">
<div class="rt-container">
<?php echo $gantry->displayModules('debug','standard','standard'); ?>
<div class="clear"></div>
</div>
</div>
<?php /** End Debug **/ endif; ?>
<?php /** Begin Popups **/
echo $gantry->displayModules('popup','popup','popup');
echo $gantry->displayModules('login','login','popup');
/** End Popup s**/ ?>
<?php /** Begin Analytics **/ if ($gantry->countModules('analytics')) : ?>
<?php echo $gantry->displayModules('analytics','basic','basic'); ?>
<?php /** End Analytics **/ endif; ?>
</div>
</body>
</html>
<?php
$gantry->finalize();
?>
<?php
$app = JFactory::getApplication();
$menu = $app->getMenu();
if ($menu->getActive() == $menu->getDefault()): ?>
Содержание главной
<?php else: ?>
<jdoc:include type="component" /> Содержание не на главной
<?php endif; ?>
*

Grigory S.

  • Давно я тут
  • 658
  • 70 / 0
  • (с)
Ссылку в студию...
Не задав правильный вопрос, невозможно получить правильный ответ.
Для "спасибок" существует кнопочка "+".
*

sanchexxx

  • Новичок
  • 7
  • 0 / 0
Разобрался, друзья! Может кому нибудь поможет решение из таких же новичков как и я, мало ли!)

На примере шаблона от Рокетов - Левитан

templates/rt_leviathan/html/layouts/body_mainbody.php

Добавлено
$app = JFactory::getApplication();
$menu = $app->getMenu();
На строке 42, 43 (это для работы следующего условия).

Добавлено <?php if ($menu->getActive()!= $menu->getDefault()) : ?>
перед блоком с <jdoc:include type="component" /> на строке 55



body_mainbody.php

Код
<?php
/**
 * @version   $Id: body_mainbody.php 6377 2013-01-10 16:58:13Z arifin $
 * @author    RocketTheme http://www.rockettheme.com
 * @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
 * @license   http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
 *
 * Gantry uses the Joomla Framework (http://www.joomla.org), a GNU/GPLv2 content management system
 *
 */
defined('GANTRY_VERSION') or die();

gantry_import('core.gantrylayout');

/**
 *
 * @package    gantry
 * @subpackage HTML.layouts
 */
class GantryLayoutBody_MainBody extends GantryLayout {
    var $render_params = array(
        'schema'        =>  null,
        'pushPull'      =>  null,
        'classKey'      =>  null,
        'sidebars'      =>  '',
        'contentTop'    =>  null,
        'contentBottom' =>  null
    );
    function render($params = array()){
        /** @var $gantry Gantry */
global $gantry;

        $fparams = $this->_getParams($params);
        $app=JFactory::getApplication();

        // logic to determine if the component should be displayed
        $display_mainbody = !($gantry->get("mainbody-enabled",true)==false && $app->input->getCmd('view') == 'featured');
        $display_component = !($gantry->get("component-enabled",true)==false && ($app->input->getCmd('option') == 'com_content' && $app->input->getCmd('view') == 'featured'));
        ob_start();
// XHTML LAYOUT

$app = JFactory::getApplication();
$menu = $app->getMenu();

?>
<?php if ($display_mainbody) : ?>         
<div id="rt-main" class="<?php echo $fparams->classKey; ?>">
                    <div class="rt-main-wrapper rt-grid-<?php echo $fparams->schema['mb']; ?> <?php echo $fparams->pushPull[0]; ?>">
                        <?php if (isset($fparams->contentTop)) : ?>
                        <div id="rt-content-top" class="<?php echo ($gantry->get('body') == 'dark' ? 'rt-dark' : 'rt-light'); ?>">
                            <?php echo $fparams->contentTop; ?>
                        </div>
                        <?php endif; ?>
                        <div class="rt-block">
                        <?php if ($menu->getActive()!= $menu->getDefault()) : ?>
<div id="rt-mainbody" class="<?php echo ($gantry->get('body') == 'dark' ? 'rt-dark' : 'rt-light'); ?>">
<div class="component-content">
                            <jdoc:include type="component" />
</div>
                        </div>
<?php endif; ?>
</div>
                        <?php if (isset($fparams->contentBottom)) : ?>
                        <div id="rt-content-bottom" class="<?php echo ($gantry->get('body') == 'dark' ? 'rt-dark' : 'rt-light'); ?>">
                            <?php echo $fparams->contentBottom; ?>
                        </div>
                        <?php endif; ?>
                        <div class="rt-pages"></div>
                    </div>
                    <?php echo $fparams->sidebars; ?>
                    <div class="clear"></div>
            </div>
<?php endif; ?>
<?php
        return ob_get_clean();
    }
}
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Съезжают модули на странице материала

Автор sibdes

Ответов: 3
Просмотров: 3093
Последний ответ 24.04.2023, 12:50:21
от beliyadm
Цвет фона меню

Автор IhorPH

Ответов: 7
Просмотров: 3173
Последний ответ 21.03.2023, 11:47:29
от marksetter
Где в Joomla 3.4.3 шаблон материала? Шаблон Yootheme Organic

Автор annushka

Ответов: 13
Просмотров: 5863
Последний ответ 13.09.2022, 11:14:56
от tuztref
Отображение модуля меню на странице материала

Автор kunsaid

Ответов: 9
Просмотров: 1308
Последний ответ 21.07.2021, 10:50:29
от kunsaid
Страница 404 в шаблоне Vina Fashion II

Автор Concolor

Ответов: 0
Просмотров: 863
Последний ответ 15.04.2021, 11:17:31
от Concolor