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

makc9I

  • Захожу иногда
  • 89
  • 0 / 0
Всем привет. Возникла странная проблема. Слегка покосилась верстка главной страницы. И я даже толком не могу сказать, после каких действий. Так как косяк не очень заметный и мог заметить не сразу.
Суть проблемы. Есть сайт: musaget.net
На главной есть блок, созданный модулем произвольного HTML кода и вставленный в позицию position-9. Вот как это выглядит на старой версии, развернутой с бекапа.
Спойлер
[свернуть]
При отображении позиций выглядит вот так:
Спойлер
[свернуть]

На боевом сайте я занимался тем, что переопределял внешний вид модулей и компонентов, вынося все правки в папку с шаблоном, каталог HTML. Предварительно все те же действия делал на локальной машине, проблем не было. Скорее всего их не было и на боевом сайте, но еще раз повторюсь, косяк небольшой, я мог не заметить.
Но вот теперь заметил и не знаю, как его победить. А косяк в том, что на сайте главная выглядит так:
Спойлер
[свернуть]
Проблемы 2: блок "Смотреть больше мероприятий" уехал вверх, и футер обрезается шириной внутреннего контента, хотя должен быть в ширину всего окна. Причем проблема с футером наблюдается только на главной, на любой другой странице он ведет себя, как положено.
А вот так выглядит странице при отображении позиций:
Спойлер
[свернуть]
position-9 каким-то чудесным образом переехала вверх.

Я пытался выцепить какие-то зависимости через панель разработчика браузера, анализируя стили, никаких аномалий не вижу. Файлы templateDetails.xls и index.php абсолютно такие-же, как и в бекапе, где все работает, на боевом index.php отличается только тем, что я добавил скрипты Яндекс метрики и Google аналитики, грешил на них, но уже проверил этот вариант, удалив их. Не помогло.
Я уже не понимаю, в чем дело. очень хочется разобраться в ситуации, чтобы знать, как действовать в таких случаях, а не тупо откатиться на бекап.
« Последнее редактирование: 09.11.2014, 21:17:46 от makc9I »
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
привет.
на счет первой проблемы - не понял, где косяк, т.к. не наблюдаю этого блока на сайте.
на счет ширины футера - скорее всего имеем где-то незакрытый div, т.к. на главной футер попадает в блок #all с фиксированной шириной, а на прочих страницах он вне его находится.
обычно лечится поочередным отключением модулей главной страницы. если при отключении какого-то из них глюк пропадает - то лезем в шаблон этого модуля и фиксим там лишний/недостающий тег.
ну либо может в основном шаблоне с условиями перемудрили и в условиях для главной странице где-то пропущен/лишний тег закрывающий.
*

makc9I

  • Захожу иногда
  • 89
  • 0 / 0
привет. Первая проблема: блок уехал за надпись : "Календарь мероприятий" сразу под слайдером вверху, а должен быть над футером.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
ну наверно проблемы связаны ))
я так понимаю, на главной блок с новостями  выводится компонентом?
если да - то закомментируте в шаблоне вызов компонента и посмотрите результат.
просто сейчас там внушает сомнение структура
<div class="blog">:
<div class="items-row cols-3 row-1"> вложена внутрь <div class="items-row cols-3 row-0">, хотя по смыслу они вроде бы одноранговые должны быть.
<div class="items-row cols-3 row-1">
*

makc9I

  • Захожу иногда
  • 89
  • 0 / 0
да, проблема именно в этом компоненте, его отключил, все спозиционировалось нормально. Буду колупать код.
*

makc9I

  • Захожу иногда
  • 89
  • 0 / 0
вот листинг кода, вроде как реально накинуты лишние закрывающие дивы в конце, но пытаюсь что-то удалять, вообще все летит.
Код: php
<?php
/**
 * @package Joomla.Site
 * @subpackage com_content
 * @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
 * @license GNU General Public License version 2 or later; see LICENSE.txt
 */

// no direct access
defined('_JEXEC') or die;

// Create a shortcut for params.
$params = &$this->item->params;
$images = json_decode($this->item->images);
$canEdit = $this->item->params->get('access-edit');
JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.framework');

?>

<?php if ($this->item->state == 0) : ?>
<div class="system-unpublished">
<?php endif; ?>


<?php if ($params->get('show_print_icon') || $params->get('show_email_icon') || $canEdit) : ?>
<ul class="actions">
<?php if ($params->get('show_print_icon')) : ?>
<li class="print-icon">
<?php echo JHtml::_('icon.print_popup', $this->item, $params); ?>
</li>
<?php endif; ?>
<?php if ($params->get('show_email_icon')) : ?>
<li class="email-icon">
<?php echo JHtml::_('icon.email', $this->item, $params); ?>
</li>
<?php endif; ?>
<?php if ($canEdit) : ?>
<li class="edit-icon">
<?php echo JHtml::_('icon.edit', $this->item, $params); ?>
</li>
<?php endif; ?>
</ul>
<?php endif; ?>

<?php if (!$params->get('show_intro')) : ?>
<?php echo $this->item->event->afterDisplayTitle; ?>
<?php endif; ?>

<?php echo $this->item->event->beforeDisplayContent; ?>

<?php // to do not that elegant would be nice to group the params ?>

<?php if (($params->get('show_author')) or ($params->get('show_category')) or ($params->get('show_create_date')) or ($params->get('show_modify_date')) or ($params->get('show_publish_date')) or ($params->get('show_parent_category')) or ($params->get('show_hits'))) : ?>
 <dl class="article-info">
 <dt class="article-info-term"><?php echo JText::_('COM_CONTENT_ARTICLE_INFO'); ?></dt>
<?php endif; ?>

<?php if ($params->get('show_parent_category') && $this->item->parent_id != 1) : ?>
<dd class="parent-category-name">
<?php $title = $this->escape($this->item->parent_title);
$url = '<a href="' . JRoute::_(ContentHelperRoute::getCategoryRoute($this->item->parent_id)). '">' . $title . '</a>'; ?>
<?php if ($params->get('link_parent_category')) : ?>
<?php echo JText::sprintf('COM_CONTENT_PARENT', $url); ?>
<?php else : ?>
<?php echo JText::sprintf('COM_CONTENT_PARENT', $title); ?>
<?php endif; ?>
</dd>
<?php endif; ?>

<?php if ($params->get('show_category')) : ?>
<dd class="category-name">
<?php $title = $this->escape($this->item->category_title);
$url = '<a href="' . JRoute::_(ContentHelperRoute::getCategoryRoute($this->item->catid)). '">' . $title . '</a>'; ?>
<?php if ($params->get('link_category')) : ?>
<?php echo JText::sprintf('COM_CONTENT_CATEGORY', $url); ?>
<?php else : ?>
<?php echo JText::sprintf('COM_CONTENT_CATEGORY', $title); ?>
<?php endif; ?>
</dd>
<?php endif; ?>

<?php if ($params->get('show_create_date')) : ?>
<dd class="create">
<?php echo JText::sprintf('COM_CONTENT_CREATED_DATE_ON', JHtml::_('date', $this->item->created, JText::_('DATE_FORMAT_LC2'))); ?>
</dd>
<?php endif; ?>

<?php if ($params->get('show_modify_date')) : ?>
<dd class="modified">
<?php echo JText::sprintf('COM_CONTENT_LAST_UPDATED', JHtml::_('date', $this->item->modified, JText::_('DATE_FORMAT_LC2'))); ?>
</dd>
<?php endif; ?>

<?php if ($params->get('show_publish_date')) : ?>
<dd class="published">
<?php echo JText::sprintf('COM_CONTENT_PUBLISHED_DATE_ON', JHtml::_('date', $this->item->publish_up, JText::_('DATE_FORMAT_LC2'))); ?>
</dd>
<?php endif; ?>

<?php if ($params->get('show_author') && !empty($this->item->author )) : ?>
<dd class="createdby">
<?php $author =  $this->item->author; ?>
<?php $author = ($this->item->created_by_alias ? $this->item->created_by_alias : $author);?>

<?php if (!empty($this->item->contactid ) &&  $params->get('link_author') == true):?>
<?php echo JText::sprintf('COM_CONTENT_WRITTEN_BY' ,
JHtml::_('link', JRoute::_('index.php?option=com_contact&view=contact&id='.$this->item->contactid), $author)); ?>

<?php else :?>
<?php echo JText::sprintf('COM_CONTENT_WRITTEN_BY', $author); ?>
<?php endif; ?>
</dd>
<?php endif; ?>

<?php if ($params->get('show_hits')) : ?>
<dd class="hits">
<?php echo JText::sprintf('COM_CONTENT_ARTICLE_HITS', $this->item->hits); ?>
</dd>
<?php endif; ?>

<?php if (($params->get('show_author')) or ($params->get('show_category')) or ($params->get('show_create_date')) or ($params->get('show_modify_date')) or ($params->get('show_publish_date')) or ($params->get('show_parent_category')) or ($params->get('show_hits'))) :?>
  </dl>
<?php endif; ?>

<?php  if (isset($images->image_intro) and !empty($images->image_intro)) : ?>
<?php $imgfloat = (empty($images->float_intro))? $params->get('float_intro') : $images->float_intro; ?>
<div class="img-intro-<?php echo htmlspecialchars($imgfloat); ?>">
<div class="img-wrapper"><img
<?php if ($images->image_intro_caption):
echo 'class="caption"'.' title="' .htmlspecialchars($images->image_intro_caption).'"';
endif; ?>
src="<?php echo htmlspecialchars($images->image_intro); ?>" alt="<?php echo htmlspecialchars($images->image_intro_alt); ?>"/>
</div>

<div class="corner">
<?php if ($params->get('show_title')) : ?>

<h2>
<?php if ($params->get('link_titles') && $params->get('access-view')) : ?>
<a href="<?php echo JRoute::_(ContentHelperRoute::getArticleRoute($this->item->slug, $this->item->catid)); ?>">
<?php echo $this->escape($this->item->title); ?></a>
<?php else : ?>
<?php echo $this->escape($this->item->title); ?>
<?php endif; ?>
</h2>
<?php echo $this->item->introtext; ?>
<?php endif; ?>


<?php if ($params->get('show_readmore') && $this->item->readmore) :
if ($params->get('access-view')) :
$link = JRoute::_(ContentHelperRoute::getArticleRoute($this->item->slug, $this->item->catid));
else :
$menu = JFactory::getApplication()->getMenu();
$active = $menu->getActive();
$itemId = $active->id;
$link1 = JRoute::_('index.php?option=com_users&view=login&Itemid=' . $itemId);
$returnURL = JRoute::_(ContentHelperRoute::getArticleRoute($this->item->slug, $this->item->catid));
$link = new JURI($link1);
$link->setVar('return', base64_encode(urlencode($returnURL)));
endif;
?>
<p class="readmore">
<a href="<?php echo $link; ?>">
<?php if (!$params->get('access-view')) :
echo JText::_('COM_CONTENT_REGISTER_TO_READ_MORE');
elseif ($readmore = $this->item->alternative_readmore) :
echo $readmore;
if ($params->get('show_readmore_title', 0)!= 0) :
echo JHtml::_('string.truncate', ($this->item->title), $params->get('readmore_limit'));
endif;
elseif ($params->get('show_readmore_title', 0) == 0) :
echo JText::sprintf('COM_CONTENT_READ_MORE_TITLE');
else :
echo JText::_('COM_CONTENT_READ_MORE');
echo JHtml::_('string.truncate', ($this->item->title), $params->get('readmore_limit'));
endif; ?></a>
</p>

<?php endif; ?>

</div>
</div>

<?php endif; ?>







<?php if ($this->item->state == 0) : ?>
</div>
<?php endif; ?>

<div class="item-separator"></div>
<?php echo $this->item->event->afterDisplayContent; ?>

*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
ну мне-то точно этот код ничего не даст - каша такая, как её визуально разобрать?
надо менять и смотреть.
лучше наоборот, по одному закрывающему добавьте по очереди к каждому существующему закрывающему тегу
*

almika

  • Захожу иногда
  • 325
  • 27 / 0
Мне кажется, что дело не в компоненте, а во вводном тексте какого-то материала. В одном из них должен быть незакрытый <div> (До ссылки readmore).

*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
кстати, да. если шаблон не сам переделывал, то более вероятно.
тогда то же самое для материалов - по одному отключаем те, что на главную выводятся и смотрим результат
*

makc9I

  • Захожу иногда
  • 89
  • 0 / 0
Цитировать
Мне кажется, что дело не в компоненте, а во вводном тексте какого-то материала. В одном из них должен быть незакрытый <div> (До ссылки readmore).
Бинго! Так оно и было. Я нашел этот материал. Ух, спасибо огромное. Сколько же нервов и сил угробил на такую мелочь.
Проблема исчезла.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Проблемы с мобильной версией

Автор gromlan

Ответов: 0
Просмотров: 1126
Последний ответ 04.07.2018, 15:23:33
от gromlan
Слетела верстка на Joomla 2.5 после установки JL No Doubles

Автор qvaro

Ответов: 3
Просмотров: 1042
Последний ответ 02.07.2017, 21:53:43
от vipiusss
Проблемы с кодировкой Joomshoping

Автор mary_NK

Ответов: 3
Просмотров: 1324
Последний ответ 06.06.2017, 10:19:14
от darkghost
Удаление дублей страниц и связанные с этим проблемы

Автор Deska

Ответов: 1
Просмотров: 1772
Последний ответ 14.03.2017, 19:57:10
от Deska
Проблемы с формой GET

Автор Yan

Ответов: 1
Просмотров: 1606
Последний ответ 01.07.2016, 14:52:42
от saharin88