Новости Joomla

Перевод и публикация интервью с Joomla евангелистом на греческом портале Joomla

Перевод и публикация интервью на греческом портале Joomla 🇬🇷

Утро, просматриваешь входящие письма и изучаешь новости и внезапно обнаруживаешь, что инициатива, которую ты начал, подхватывается другими людьми. 🎉

Недавно я взял интервью у Билла (Василиса) Коциаса - руководителя студии, читающего лекции в университете и популяризатора Joomla в Греции. Это интервью из журнала NorrNext, в оригинале на английском, теперь доступно на греческом языке и опубликовано на портале joomla.gr. 🎉

До чего же приятно… 😇😊 Работа замечена и с ней посчитали необходимым ознакомить аудиторию страны, в которой Билл читает лекции. И это солнечная Греция - страна, страна, с которой Россию многое связывает. 🇬🇷🇷🇺🕊

Смотрю на греческий алфавит и тут же рисуются картины белоснежных зданий в окружении винограда и амфор, красивых женщин в сандалиях и мужественных воинов, охраняющих покой полисов, в которых ученые мужи работают над трудами, позже вошедшими в века. Красиво! 😇Но вернемся к интервью.

Из него вы узнаете, что в Греции доля Joomla среди CMS занимает порядка 30-40%. По моему мнению это - самый высокий показатель во всем мире. Также чтение лекций о Joomla в университетах позволит привести новых пользователей и к тому же молодое поколение. Ну и огромное кол-во сертификтатов Билла на стене (смотрим фото в статье) свидетельствует о том, что Joomla может применяться как профессиональный инструмент.

🌐 Оригинальное интервью (на английском)
🇬🇷 Интервью на греческом портале (joomla.gr)

Что насчет перевода на русский? Увы, времени всего 24 часа в сутках. Я продолжаю готовить новые интервью. Возможно, после завершения выпуска журнала, рассмотрю перевод некоторых интервью на русский. Но я об этом не говорил. 😊 В блоге @eugenius_blog публикую анонсы интересных событий из мира Joomla, интервью, уроки и полезные советы, а также делюсь мыслями:, связанными с разработкой и веб-дизайном.

Обработка HTTP ответа в Joomla 6+. Изменения по сравнению с Joomla 3 - Joomla 5

👩‍💻 Обработка HTTP ответа в Joomla 6+. Изменения по сравнению с Joomla 3 - Joomla 5.В Joomla для выполнения внешних запросов из PHP к сторонним API используется класс Joomla\Http\Http напрямую или же Joomla\Http\HttpFactory, который возвращает для работы преднастроенный по умолчанию класс Http. О работе с HTTP-запросами подробно рассказывалось в статье 2021 года Создание внешних запросов с использованием HttpFactory (Joomla). Некоторые изменения касаются работы с ответами на запросы. Например, наш запрос:
use Joomla\Http\HttpFactory;$http = (new HttpFactory)->getHttp($options, ['curl', 'stream']);$response = $http->get('https://any-url.ru/api/any/endpoint');
Раньше можно было получить код ответа или тело ответа как свойство $response - $response->code или $response->body. Однако, Joomla, начиная с Joomla 4 во многом переходит на стандарты PSR. В частности для работы с HTTP-ответами - на PSR-7. Также хорошая статья на Хабре о PSR-7: PSR-7 в примерах.
Прямое обращение к свойствам code, headers, body объявлено устаревшим в Joomla 6.0.0 и обещают удалить в Joomla 7.0.0.
Вместо этого нужно работать с HTTP-ответом по стандартам PSR-7. Код ответа.Было $response->code. Стало $response->getStatusCode().Заголовки ответа.Было $response->headers. Стало $response->getHeaders().Тело ответа.Было $response->body. Стало (string)$response->getContents().В тело ответа теперь приходит не строка, а поток - объект класса Laminas\Diactoros\Stream. Поэтому его нужно привести к строке (если это json, к примеру): (string)$response->getContents(). Чаще всего в коде Joomla встречается именно такой вариант. Однако, есть и вариант с перемещением указателя чтения на начало потока:
// Получили ответ в виде потока$stream = $response->getBody();// "перемотали" на начало$stream->rewind();// Получили строковый ответ$json = $stream->getContents();
В итоге результат одинаковый.@joomlafeed#joomla #разработка #php

0 Пользователей и 1 Гость просматривают эту тему.
  • 10 Ответов
  • 2251 Просмотров
*

lalalag

  • Захожу иногда
  • 162
  • 0 / 3
Всем привет.
Помогите вывести заголовок материала в коде шаблона.
У меня например yootheme pro
Надо чтоб заголовок выводился в шапке с меню и тд с проверкой отображения заголовка на странице.

В материале так:
<h1 class="uk-article-title uk-margin-remove-top"><?= $title ?></h1>

Вроде пишут что надо:
<h1 class="uk-article-title uk-margin-remove-top"><?= $this->article->title ?></h1>

Joomla 3.8
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Вывод title в любом месте шаблона
« Ответ #1 : 08.10.2017, 19:18:36 »
Надо чтоб заголовок выводился в шапке с меню и тд с проверкой отображения заголовка на странице.

Только на странице самого материала или на любой странице?
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

lalalag

  • Захожу иногда
  • 162
  • 0 / 3
Re: Вывод title в любом месте шаблона
« Ответ #2 : 08.10.2017, 20:06:59 »
Только на странице самого материала или на любой странице?
На странице материала. Ну и если можно отдельно код чтоб категории выводило, если открыта категория
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Вывод title в любом месте шаблона
« Ответ #3 : 09.10.2017, 07:31:39 »
На странице материала. Ну и если можно отдельно код чтоб категории выводило, если открыта категория

Пробовал на версии 3.7.5, не уверен что будет работать на 3.8.1 - но все равно попробуй...
Что бы начать пользоваться, в нужном месте надо написать
Код: php
<?php $article = PlgContentPrepareFactory::getContext(); ?>

Что бы вывести заголовок, напиши
Код: php
<?php echo $article->title; ?>

Что бы проверить вывод заголовка, напиши
Код: php
<?php echo $article->params->get('show_title'); ?>
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

lalalag

  • Захожу иногда
  • 162
  • 0 / 3
Re: Вывод title в любом месте шаблона
« Ответ #4 : 09.10.2017, 15:04:35 »
пустую страницу стал выдавать.
Когда строку
Код
<?php $article = PlgContentPrepareFactory::getContext(); ?>
убираю все ок.
а без неё ничего не выводит.
*

lalalag

  • Захожу иногда
  • 162
  • 0 / 3
Re: Вывод title в любом месте шаблона
« Ответ #5 : 09.10.2017, 15:09:11 »
Плагин ставил
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Вывод title в любом месте шаблона
« Ответ #6 : 09.10.2017, 15:27:01 »
пустую страницу стал выдавать.
Когда строку
Код
<?php $article = PlgContentPrepareFactory::getContext(); ?>
убираю все ок.
а без неё ничего не выводит.

А покажите полностью код файла
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

lalalag

  • Захожу иногда
  • 162
  • 0 / 3
Re: Вывод title в любом месте шаблона
« Ответ #7 : 09.10.2017, 15:45:23 »
Код
<?php

// Options
$layout = $theme->get('header.layout');
$fullwidth = $theme->get('header.fullwidth');
$logo_padding_remove = $theme->get('header.logo_padding_remove');
$logo = $theme->get('logo.image') || $theme->get('logo.text');
$class = array_merge(['tm-header', 'uk--visible@' . $theme->get('mobile.breakpoint')], isset($class)? (array) $class : []);
$attrs = array_merge(['uk-header' => true], isset($attrs)? (array) $attrs : []);
$attrs_sticky = [];

// Container
$container = ['class' => ['uk-navbar-container']];

// Navbar
$navbar = $theme->get('navbar', []);

// Dropdown options
if (!(strpos($layout, 'offcanvas') === 0 || strpos($layout, 'modal') === 0)) {

    $attrs_navbar = [
        'class' => 'uk-navbar',
        'uk-navbar' => json_encode(array_filter([
            'align' => $navbar['dropdown_align'],
            'click' => $navbar['dropdown_click'],
            'boundary-align' => $navbar['dropdown_boundary'],
            'dropbar' => $navbar['dropbar'] ? true : null,
            'dropbar-anchor' => $navbar['dropbar'] ? '!.uk-navbar-container' : null,
            'dropbar-mode' => $navbar['dropbar']
        ]))
    ];

} else {

    $attrs_navbar = [
        'class' => 'uk-navbar',
        'uk-navbar' => true
    ];

}

// Sticky
if ($sticky = $navbar['sticky']) {
    $attrs_sticky = array_filter([
        'uk-sticky' => true,
        'media' => 0,
        'show-on-up' => $sticky == 2,
        'animation' => $sticky == 2 ? 'uk-animation-slide-top' : '',
        'cls-active' => 'uk-navbar-sticky',
        'sel-target' => '.uk-navbar-container',
    ]);
}

?>

<div<?= $this->attrs(['class' => $class], $attrs)?>>

<?php

/*
 * Horizontal layouts
 */

if (in_array($layout, ['horizontal-left', 'horizontal-center', 'horizontal-right'])) : ?>

    <?php if ($sticky) : ?>
    <div<?= $this->attrs($attrs_sticky)?>>
    <?php endif ?>

        <div<?= $this->attrs($container)?>>

            <div class="uk-container<?= $fullwidth ? ' uk-container-expand' : '' ?><?= $logo && $logo_padding_remove ? ' uk-padding-remove-left' : '' ?>">
                <nav<?= $this->attrs($attrs_navbar)?>>

                    <?php if ($logo || $layout == 'horizontal-left' && $this->countModules('navbar')) : ?>
                    <div class="uk-navbar-left">

                        <?= $logo ? $this->render('header-logo', ['class' => 'uk-navbar-item', 'img' => 'uk-responsive-height']) : '' ?>

                        <?php if ($layout == 'horizontal-left') : ?>
                            <jdoc:include type="modules" name="navbar" />
                        <?php endif ?>

                    </div>
                    <?php endif ?>

                    <?php if ($layout == 'horizontal-center' && $this->countModules('navbar')) : ?>
                    <div class="uk-navbar-center">
                        <jdoc:include type="modules" name="navbar" />
                    </div>
                    <?php endif ?>

                    <?php if ($this->countModules('header') || $layout == 'horizontal-right' && $this->countModules('navbar')) : ?>
                    <div class="uk-navbar-right">

                        <?php if ($layout == 'horizontal-right' && $this->countModules('navbar')) : ?>
                            <jdoc:include type="modules" name="navbar" />
                        <?php endif ?>

                        <jdoc:include type="modules" name="header" />

                    </div>
                    <?php endif ?>

                </nav>
            </div>

        </div>

    <?php if ($sticky) : ?>
    </div>
    <?php endif ?>

<?php endif ?>

<?php

/*
 * Stacked Center layouts
 */

if (in_array($layout, ['stacked-center-a', 'stacked-center-b', 'stacked-center-split'])) : ?>

    <?php if ($logo && $layout != 'stacked-center-split' || $layout == 'stacked-center-a' && $this->countModules('header')) : ?>
    <div class="tm-headerbar-top">
        <div class="uk-container<?= $fullwidth ? ' uk-container-expand' : '' ?>">

            <?php if ($logo) : ?>
            <div class="uk-text-center">
                <?= $this->render('header-logo')?>
            </div>
            <?php endif ?>

            <?php if ($layout == 'stacked-center-a' && $this->countModules('header')) : ?>
            <div class="tm-headerbar-stacked uk-grid-medium uk-child-width-auto uk-flex-center uk-flex-middle" uk-grid>
                <jdoc:include type="modules" name="header" style="cell" />
            </div>
            <?php endif ?>

        </div>
    </div>
    <?php endif ?>

    <?php if ($this->countModules('navbar')) : ?>

        <?php if ($sticky) : ?>
        <div<?= $this->attrs($attrs_sticky)?>>
        <?php endif ?>

            <div<?= $this->attrs($container)?>>

                <div class="uk-container<?= $fullwidth ? ' uk-container-expand' : '' ?>">
                    <nav<?= $this->attrs($attrs_navbar)?>>

                        <div class="uk-navbar-center">

                            <?php if ($layout == 'stacked-center-split') : ?>

                                <div class="uk-navbar-center-left"><div>
                                    <jdoc:include type="modules" name="navbar-split" />
                                </div></div>

                                <?= $this->render('header-logo', ['class' => 'uk-navbar-item', 'img' => 'uk-responsive-height']); ?>

                                <div class="uk-navbar-center-right"><div>
                                    <jdoc:include type="modules" name="navbar" />
                                </div></div>

                            <?php else: ?>
                                <jdoc:include type="modules" name="navbar" />
                            <?php endif ?>

                        </div>

                    </nav>
                </div>

            </div>

        <?php if ($sticky) : ?>
        </div>
        <?php endif ?>

    <?php endif ?>

    <?php if (in_array($layout, ['stacked-center-b', 'stacked-center-split']) && $this->countModules('header')) : ?>
    <div class="tm-headerbar-bottom">
        <div class="uk-container<?= $fullwidth ? ' uk-container-expand' : '' ?>">
            <div class="uk-grid-medium uk-child-width-auto uk-flex-center uk-flex-middle" uk-grid>
                <jdoc:include type="modules" name="header" style="cell" />
            </div>
        </div>
    </div>
    <?php endif ?>

<?php endif ?>

<?php

/*
 * Stacked Left layouts
 */

if ($layout == 'stacked-left-a' || $layout == 'stacked-left-b') : ?>

    <?php if ($logo || $this->countModules('header')) : ?>
    <div class="tm-headerbar-top">
        <div class="uk-container<?= $fullwidth ? ' uk-container-expand' : '' ?><?= $logo && $logo_padding_remove ? ' uk-padding-remove-left' : '' ?> uk-flex uk-flex-middle">

            <?= $logo ? $this->render('header-logo') : '' ?>

            <?php if ($this->countModules('header')) : ?>
            <div class="uk-margin-auto-left">
                <div class="uk-grid-medium uk-child-width-auto uk-flex-middle" uk-grid>
                    <jdoc:include type="modules" name="header" style="cell" />
                </div>
            </div>
            <?php endif ?>

        </div>
    </div>
    <?php endif ?>

    <?php if ($this->countModules('navbar')) : ?>

        <?php if ($sticky) : ?>
        <div<?= $this->attrs($attrs_sticky)?>>
        <?php endif ?>

            <div<?= $this->attrs($container)?>>

                <div class="uk-container<?= $fullwidth ? ' uk-container-expand' : '' ?>">
                    <nav<?= $this->attrs($attrs_navbar)?>>

                        <?php if ($layout == 'stacked-left-a') : ?>
                        <div class="uk-navbar-left">
                            <jdoc:include type="modules" name="navbar" />
                        </div>
                        <?php endif ?>

                        <?php if ($layout == 'stacked-left-b') : ?>
                        <div class="uk-navbar-left uk-flex-auto">
                            <jdoc:include type="modules" name="navbar" />
                        </div>
                        <?php endif ?>

                    </nav>
                </div>

            </div>

        <?php if ($sticky) : ?>
        </div>
        <?php endif ?>

    <?php endif ?>

<?php endif ?>

<?php

/*
 * Toggle layouts
 */

if (strpos($layout, 'offcanvas') === 0 || strpos($layout, 'modal') === 0) :

    $attrs_toggle = [];

    $attrs_toggle['class'][] = strpos($layout, 'modal') === 0 ? 'uk-modal-body uk-padding-large uk-margin-auto' : 'uk-offcanvas-bar';
    $attrs_toggle['class'][] = $navbar['toggle_menu_center'] ? 'uk-text-center' : '';
    $attrs_toggle['class'][] = 'uk-flex uk-flex-column';

    ?>

    <?php if ($sticky) : ?>
    <div<?= $this->attrs($attrs_sticky)?>>
    <?php endif ?>

        <div<?= $this->attrs($container)?>>
            <div class="uk-container<?= $fullwidth ? ' uk-container-expand' : '' ?><?= $logo && $logo_padding_remove ? ' uk-padding-remove-left' : '' ?>">
                <nav<?= $this->attrs($attrs_navbar)?>>

                    <?php if ($logo) : ?>
                    <div class="uk-navbar-left">
                        <?= $this->render('header-logo', ['class' => 'uk-navbar-item', 'img' => 'uk-responsive-height'])?>
                    </div>
                    <?php endif ?>

                    <?php if ($this->countModules('header') || $this->countModules('navbar')) : ?>
                    <div class="uk-navbar-right">

                        <jdoc:include type="modules" name="header" />

                        <?php if ($this->countModules('navbar')) : ?>
                        <a class="open-menu" href="#" uk-toggle="!.tm-header > [uk-offcanvas], [uk-modal]">
<div class="menu-button"> <img src="/images/topot-menu.png"  alt="Топот" style="width: 54px; height: 80px;"></div>   

                        </a>
                        <?php endif ?>

                    </div>
                    <?php endif ?>











                </nav>
            </div>
        </div>

    <?php if ($sticky) : ?>
    </div>
    <?php endif ?>

    <?php if (strpos($layout, 'offcanvas') === 0 && $this->countModules('navbar')) : ?>
    <div uk-offcanvas="flip: true"<?= $this->attrs($navbar['offcanvas'] ?: [])?>>
        <div<?= $this->attrs($attrs_toggle)?>>

            <button class="uk-offcanvas-close uk-close-large uk-margin-remove-adjacent" type="button" uk-close></button>

            <jdoc:include type="modules" name="navbar" />

        </div>
    </div>
    <?php endif ?>

    <?php if (strpos($layout, 'modal') === 0 && $this->countModules('navbar')) : ?>
    <div class="uk-modal-full" uk-modal>
        <div class="uk-modal-dialog uk-flex">

            <button class="uk-modal-close-full uk-close-large uk-margin-remove-adjacent" type="button"  style="border: 0;">
<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 20 20" ratio="1">
<line fill="none" stroke="#000" stroke-width="4" x1="1" y1="1" x2="19" y2="19"></line>
<line fill="none" stroke="#000" stroke-width="4" x1="19" y1="1" x2="1" y2="19"></line></svg>
</button>

            <div <?= $this->attrs($attrs_toggle)?> uk-height-viewport>
                <jdoc:include type="modules" name="navbar" />
            </div>

        </div>
    </div>
    <?php endif ?>

<?php endif ?>

</div>
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Вывод title в любом месте шаблона
« Ответ #8 : 09.10.2017, 15:51:45 »
В общих настройках включите отображение php ошибок для разработчиков. Вставьте код куда надо и перейдите на страницу. Какие ошибки выдает?
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

lalalag

  • Захожу иногда
  • 162
  • 0 / 3
Re: Вывод title в любом месте шаблона
« Ответ #9 : 09.10.2017, 16:09:04 »
Когда плагин включен
https://yadi.sk/i/-3wzYdTb3NbfGH

Когда выключен
https://yadi.sk/i/rQuql0FZ3Nbfic

Код:
Код
<body class=""><jdoc:include type="head">
<link href="/templates/topot/css/my.css" rel="stylesheet" type="text/css">
   
   

       
       
         
           
           
<div class="tm-header uk--visible@s" uk-header="">





        <div uk-sticky="" show-on-up="" animation="uk-animation-slide-top" cls-active="uk-navbar-sticky" sel-target=".uk-navbar-container">
   
        <div class="uk-navbar-container">
            <div class="uk-container uk-container-expand">
                <nav class="uk-navbar" uk-navbar="">

                                        <div class="uk-navbar-left">
                        <a href="https://thetopot.com" class="uk-navbar-item uk-logo">
    <img src="/templates/topot/cache/topot-logo-fab42b16.png" srcset="/templates/topot/cache/topot-logo-b9f09adb.png 57w, /templates/topot/cache/topot-logo-fab42b16.png 71w" sizes="(min-width: 71px) 71px, 100vw" class="uk-responsive-height" alt="Топот"><img src="/templates/topot/cache/topot-logo-fab42b16.png" srcset="/templates/topot/cache/topot-logo-b9f09adb.png 57w, /templates/topot/cache/topot-logo-fab42b16.png 71w" sizes="(min-width: 71px) 71px, 100vw" class="uk-responsive-height uk-logo-inverse" alt="Топот"></a>
                    </div>
                   
                                        <div class="uk-navbar-right">

                        <jdoc:include type="modules" name="header">

                                                <a class="open-menu" href="#" uk-toggle="!.tm-header > [uk-offcanvas], [uk-modal]">
<div class="menu-button"> <img src="/images/topot-menu.png" alt="Топот" style="width: 54px; height: 80px;"></div>   

                        </a>
                       
                    </jdoc:include></div>
                   



</nav></div></div></div></div></jdoc:include><script async="" src="//www.googletagmanager.com/gtm.js?id=GTM-NWFT6PW"></script><script>var dataLayer=dataLayer || [];
(function(w,d,s,l,i,h){if(h=='2tagmanager.google.com'){return}w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','GTM-NWFT6PW',window.location.hostname);
</script></body>
« Последнее редактирование: 09.10.2017, 16:12:18 от lalalag »
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Вывод title в любом месте шаблона
« Ответ #10 : 09.10.2017, 16:27:44 »
Замените плагины!

Перед использованием, в шаблоне добавьте код
Код: php
echo (int)class_exists('PlgSystemContentPrepareFactory');

Если выдает цифру 1, то все норм...
Все тоже самое только класс другой PlgSystemContentPrepareFactory
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как получить параметры стиля шаблона?

Автор Spam

Ответов: 16
Просмотров: 6142
Последний ответ 20.07.2025, 20:25:55
от fbr
Почему обновление шаблона ломает шаблон?

Автор gorbi_U

Ответов: 8
Просмотров: 3560
Последний ответ 03.05.2023, 22:54:19
от SmiP
Xelix Ultimate редактирование шаблона

Автор Darov

Ответов: 42
Просмотров: 8359
Последний ответ 20.03.2023, 12:16:59
от marksetter
Установка шаблона или быстрого старта qnap

Автор weser

Ответов: 12
Просмотров: 3344
Последний ответ 09.02.2023, 17:16:58
от weser
Не подлючает модуль из шаблона

Автор misteri27

Ответов: 0
Просмотров: 1920
Последний ответ 31.01.2023, 12:58:05
от misteri27