Новости 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

Quantum Manager нужен сообществу, а автору нужна ваша поддержка!

Quantum Manager нужен сообществу, а автору нужна ваша поддержка!Файловый менеджер Quantum — одно...

Файловый менеджер Quantum — одно из самых популярных решений для Joomla, созданное разработчиком из сообщества Joomla, Дмитрием Цымбалом (@tsymbalmitia). Он делает Quantum удобным, безопасным и современным, обновляет его, исправляет уязвимости и отвечает пользователям — всё это в свободное от основной работы время.

Теперь настал момент для следующего шага: развитие проекта требует больше времени и ресурсов.

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

sasha_klimenchuk

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
Прочитала тему Как вставить модуль в контент  компонента. Нужен было выводить модуль после 3, 6, 9, 12 и так далее материала. Вот какой код у меня получился.
<?php $leadingcount = 1; ?>
<?php
jimport( 'joomla.application.module.helper' );
$module = JModuleHelper::getModules('position-2');
$attribs['style'] = 'none';
?>
......
      <?php
         if($leadingcount%3 == 0){
            foreach($modules as $moduleitem){
               echo JModuleHelper::renderModule($moduleitem, $attribs);
            }
         }
      ?>
      <?php $leadingcount++; ?>
   <?php endforeach; ?>
</div>
<?php endif; ?>
Создала переопределение файла /components/com_content/views/category/tmpl/blog.php и в параметрах категории указала альтернативный макет. Модуль опубликован. Но ничего не отображается( Помогите, пожалуйста!
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Позиция уникальная, нет в шаблоне, модуль опубликован для всех страниц, тестовый текст выводит в переопределенном макете ?
*

sasha_klimenchuk

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
Позиция уникальная, нет в шаблоне, модуль опубликован для всех страниц, тестовый текст выводит в переопределенном макете ?
Позиция пользовательская не из шаблона, модуль опубликован для всех страниц, тестовый текст не пробовала. Сейчас сделаю и отпишусь
*

sasha_klimenchuk

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
<?php
         if($leadingcount%3 == 0){
            echo "Привет мир!";
         }
      ?>
не выводит
*

sasha_klimenchuk

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
Без if тоже не выводит
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Потому что вы модули получили в переменную $module, а перебираете в цикле переменную $modules

Но оптимальне так что бы каждый раз не делать перебор!
$modules = JModuleHelper::getModules('position-2');
$moduleContent = '';
foreach($modules as $module){
$moduleContent .=  JModuleHelper::renderModule($module, array('style'=>'none'));
}

.....

if(!($leadingcount % 3)){
echo $moduleContent;
}
*

sasha_klimenchuk

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
Потому что вы модули получили в переменную $module, а перебираете в цикле переменную $modules

Но оптимальне так что бы каждый раз не делать перебор!
$modules = JModuleHelper::getModules('position-2');
$moduleContent = '';
foreach($modules as $module){
$moduleContent .=  JModuleHelper::renderModule($module, array('style'=>'none'));
}

.....

if(!($leadingcount % 3)){
echo $moduleContent;
}
Не выводит
Прикрепила скрины с настройками
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Вы перебираете массив $leadingcount, но обычно все материалы выводятся через только введения http://tinyurl.com/ycottk32
Может у вас аналогичные настройки либо в "всю ширину" (это и есть $leadingcount) меньше трех вот условие и не отрабатывает.
Я бы рекомендовал там поставить 0, указывать количество в введениях и работать с массивом $this->intro_items
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
сделайте сразу после цикла foreach($modules as $module)  echo $moduleContent; будет ли какой то вывод? если будет то ошибка в цикле вывода
« Последнее редактирование: 24.01.2018, 19:06:05 от Aleks.Denezh »
*

sasha_klimenchuk

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
Вы перебираете массив $leadingcount, но обычно все материалы выводятся через только введения http://tinyurl.com/ycottk32
Может у вас аналогичные настройки либо в "всю ширину" (это и есть $leadingcount) меньше трех вот условие и не отрабатывает.
Я бы рекомендовал там поставить 0, указывать количество в введениях и работать с массивом $this->intro_items
Действительно, у меня у самой только введения выводятся. Попытаюсь привязаться к intro_items.
*

sasha_klimenchuk

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
Всё получилось! Проблема была в том, что альтернативный макет, созданный мной не цеплялся. Joomla подхватывает только файл /html/com_content/category/blog.php из шаблона, а любые другие, что я там создаю - не подхватывает, хотя и отражаются в списке альтернативных макетов категории. Внесла изменения в файл /html/com_content/category/blog.php в шаблоне и всё заработало. Всем спасибо!
*

sasha_klimenchuk

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
Теперь другая проблема) При переходе на 2 страницу блога, модули начинают выводиться с первого, а нужно, чтоб продолжали с 3.

$countofmodules=0;//количество модулей
$modulenumber=0;  //порядковый номер модуля
jimport( 'joomla.application.module.helper' );
$modules = JModuleHelper::getModules('position-2');
foreach($modules as $moduleitem) $countofmodules++;
$countforblock=1;//номер строки в блоге
// Article columns
foreach ($intro as $i => $item) {
    $columns[$i % $count][] = $item;
}
.....

<?php foreach ($columns as $column) : ?>
    <div><?php foreach ($column as $item)
{
echo $article($item);
echo $countofmodules;
echo $modulenumber;
if($countforblock%3 == 0 && $modulenumber < $countofmodules)
{        echo JModuleHelper::renderModule($modules[$modulenumber], $attribs);
           $modulenumber++;
         }
$countforblock++; 
 }
?>
  </div>
 
    <?php endforeach ?>
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Тогда придется дополнительно плясать от пагинации, от переменной $this->pagination->pagesCurrent, если не 1 то добавлять какое-то условие для изменения позиции модуля
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
что бы отображались не с первого нужно:
if(!($countforblock%3) && $countforblock)
*

sasha_klimenchuk

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
Все работает, как надо. На первой странице вывод начинается с 1 модуля, всего выводится 2 модуля, на второй странице вывод начинается с 3 модуля.
Только на 2 странице к url добавляется /?start=6. Не могу понять, что это. Это может быть номер статьи? Потому, что у меня количество статей, отображающихся, как вводные равно 6. Код, который получился:

jimport( 'joomla.application.module.helper' );
jimport( 'joomla.html.pagination' );
$modules = JModuleHelper::getModules('position-2');
$countofmodules=count($modules);//количество модулей
$countforblock=1;//номер строки в блоге
$pagenumber =  $this->pagination->pagesCurrent;//текущая страница
$introcount=count($this->intro_items);//количество вводных статей на странице
$itemsbeforblock=3; //количество статей между вставными блоками;
$newp=floor($introcount/$itemsbeforblock);
$modulenumber=($pagenumber-1)*$newp;  //порядковый номер модуля из position-2, с которого начнется вывод на странице

...

<?php foreach ($columns as $column) : ?>
    <div>
     <?php foreach ($column as $item)
      { echo $article($item);
         if($countforblock%$itemsbeforblock==0 && $modulenumber < $countofmodules)
         {
            echo JModuleHelper::renderModule($modules[$modulenumber], $attribs);
            $modulenumber++;
         }       
        $countforblock++; 
       }
     ?>
  </div>
 
<?php endforeach ?>
« Последнее редактирование: 25.01.2018, 22:32:27 от sasha_klimenchuk »
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Цитировать
Только на 2 странице к url добавляется /?start=6.
Это нормально, работа пагинации, чтобы можно было передать прямую ссылку кому-нибудь и попасть именно на эту страницу, обычный GET параметр
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

sasha_klimenchuk

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
Это нормально, работа пагинации, чтобы можно было передать прямую ссылку кому-нибудь и попасть именно на эту страницу, обычный GET параметр
а можно сделать так, чтоб выводился номер страницы?
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Скорей всего нет, номер страницы же генерируется автоматически исходя из кол-ва материалов, потому может меняться. А параметр start скажет скрипту пагинации с какого места начинать вывод.
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

sasha_klimenchuk

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
Скорей всего нет, номер страницы же генерируется автоматически исходя из кол-ва материалов, потому может меняться. А параметр start скажет скрипту пагинации с какого места начинать вывод.
Понятно) Спасибо!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вывести модуль в модуле

Автор jimka

Ответов: 2
Просмотров: 1663
Последний ответ 18.04.2025, 15:39:36
от fbr
Как вставить модуль в код нужной страницы php?

Автор zvi

Ответов: 9
Просмотров: 5003
Последний ответ 21.02.2024, 11:03:08
от saynez
Блог | Тайтл, description подкатегории

Автор darkghost

Ответов: 0
Просмотров: 643
Последний ответ 02.02.2024, 22:25:53
от darkghost
Убрать из модуля новостей ссылку на статью, на которой выводится модуль

Автор zeus07

Ответов: 3
Просмотров: 1466
Последний ответ 08.11.2023, 21:17:26
от GrayAn
Криво выводится футер

Автор Zegeberg

Ответов: 1
Просмотров: 902
Последний ответ 07.11.2023, 15:56:52
от Zegeberg