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

Patriot1986

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
Буду признателен если кто поможет разобраться с CSS сам не так и уж силен... Суть в шаблоне есть социальные кнопки (arendator116.ru) внизу,  я их уже заменил и хотел бы видеть таким образом: в неактивном состоянии черно-белые, при наведении цветные... в самом шаблоне и коде используется два вида картинок обычная и обычная-light, но как я понял из кода идет не замена одна на другую, а просто меняется прозрачность... может кто сможет указать что не так? Код ниже:



.jm-icons {
  display: inline-block;
  width: 100%;
  text-align: center;
}
.jm-icons a {
  display: inline-block;
  text-decoration: none !important;
  position: relative;
  margin: 10px;
}
.jm-icons a.jm-facebook span.bg,
.jm-icons a.jm-google span.bg,
.jm-icons a.jm-twitter span.bg,
.jm-icons a.jm-vk span.bg,
.jm-icons a.jm-linkedin span.bg {
  width: 76px;
  height: 76px;
  display: inline-block;
}
.jm-icons a:hover span.bg {
  opacity: 0.5;
  filter: alpha(opacity=50);
  -webkit-transition: all 0.3s ease-in-out;
  -moz-transition: all 0.3s ease-in-out;
  -o-transition: all 0.3s ease-in-out;
  transition: all 0.3s ease-in-out;
}


.jm-icons a.jm-vk span.bg {
  background: url('../images/social/vk.png');
}



.jm-icons a.jm-facebook span.bg {
  background: url('../images/social/facebook.png');
}
.jm-icons a.jm-google span.bg {
  background: url('../images/social/googleplus.png');
}
.jm-icons a.jm-twitter span.bg {
  background: url('../images/social/twitter.png');
}
.jm-icons a.jm-linkedin span.bg {
  background: url('../images/social/linkedin.png');
}
.jm-footer .jm-icons a.jm-facebook span.bg {
  background: url('../images/social/facebook-light.png');
}
.jm-footer .jm-icons a.jm-google span.bg {
  background: url('../images/social/googleplus-light.png');
}
.jm-footer .jm-icons a.jm-twitter span.bg {
  background: url('../images/social/twitter-light.png');
}
.jm-footer .jm-icons a.jm-linkedin span.bg {
  background: url('../images/social/linkedin-light.png');
}

.jm-footer .jm-icons a.jm-vk span.bg {
  background: url('../images/social/vk-light.png');
}

.jm-icons a span.ttip {
  width: 100px;
  height: auto;
  line-height: 20px;
  padding: 10px 5px;
  right: 50%;
  margin-right: -55px;
  font-weight: 700;
  font-size: 14px;
  color: #ffffff;
  text-align: center;
  text-transform: uppercase;
  position: absolute;
  bottom: 85px;
  opacity: 0;
  filter: alpha(opacity=0);
  pointer-events: none;
  -webkit-transition: all 0.3s ease-in-out;
  -moz-transition: all 0.3s ease-in-out;
  -o-transition: all 0.3s ease-in-out;
  transition: all 0.3s ease-in-out;
}
.jm-icons a span.ttip:before,
.jm-icons a span.ttip:after {
  content: '';
  position: absolute;
  bottom: -7px;
  right: 50%;
  margin-right: -6px;
  width: 0px;
  height: 0px;
  border-style: solid inset;
  border-width: 7px 7px 0 7px;
}
.jm-icons a:hover span.ttip {
  opacity: 1;
  filter: alpha(opacity=100);
}
.jm-icons a.jm-facebook span.ttip {
  background: #4e67a9;
}
.jm-icons a.jm-facebook span.ttip:before,
.jm-icons a.jm-facebook span.ttip:after {
  border-color: #4e67a9 transparent transparent transparent;
}
.jm-icons a.jm-twitter span.ttip {
  background: #42c8f4;
}
.jm-icons a.jm-twitter span.ttip:before,
.jm-icons a.jm-twitter span.ttip:after {
  border-color: #42c8f4 transparent transparent transparent;
}
.jm-icons a.jm-google span.ttip {
  background: #dd4c39;
}
.jm-icons a.jm-google span.ttip:before,
.jm-icons a.jm-google span.ttip:after {
  border-color: #dd4c39 transparent transparent transparent;
}
.jm-icons a.jm-linkedin span.ttip {
  background: #0077b5;
}
.jm-icons a.jm-vk span.ttip {
  background: #5a7fa7;
}
.jm-icons a.jm-vk span.ttip:before,
.jm-icons a.jm-vk span.ttip:after {
  border-color: #5a7fa7 transparent transparent transparent;
}
.jm-icons a.jm-linkedin span.ttip:before,
.jm-icons a.jm-linkedin span.ttip:after {
  border-color: #0077b5 transparent transparent transparent;
}
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Не надо тут второй картинки.

Код: css
img:not(:hover) {
 -webkit-filter: grayscale(1;
 -moz-filter: grayscale(1);
 -ms-filter: grayscale(1);
 filter: grayscale(1);
}
*

Patriot1986

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
Не надо тут второй картинки.

Код: css
img:not(:hover) {
 -webkit-filter: grayscale(1;
 -moz-filter: grayscale(1);
 -ms-filter: grayscale(1);
 filter: grayscale(1);
}

Это вместо чего и куда?
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Код: css
.jm-icons a:not(:hover) span.bg {
 -webkit-filter: grayscale(1;
 -moz-filter: grayscale(1);
 -ms-filter: grayscale(1);
 filter: grayscale(1);
}

А отсюда убрать две строки:

Код: css
.jm-icons a:hover span.bg {
  opacity: 0.5; /*эту*/
  filter: alpha(opacity=50); /* и эту*/
  -webkit-transition: all 0.3s ease-in-out;
  -moz-transition: all 0.3s ease-in-out;
  -o-transition: all 0.3s ease-in-out;
  transition: all 0.3s ease-in-out;
}
*

Patriot1986

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
Этот вариант не работает... :(
*

Patriot1986

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
Этот вариант не работает... :(
Код: css
.jm-icons a:not(:hover) span.bg {
 -webkit-filter: grayscale(1;
 -moz-filter: grayscale(1);
 -ms-filter: grayscale(1);
 filter: grayscale(1);
}

А отсюда убрать две строки:

Код: css
.jm-icons a:hover span.bg {
  opacity: 0.5; /*эту*/
  filter: alpha(opacity=50); /* и эту*/
  -webkit-transition: all 0.3s ease-in-out;
  -moz-transition: all 0.3s ease-in-out;
  -o-transition: all 0.3s ease-in-out;
  transition: all 0.3s ease-in-out;
}
[/quot
Код: css
.jm-icons a:not(:hover) span.bg {
 -webkit-filter: grayscale(1;
 -moz-filter: grayscale(1);
 -ms-filter: grayscale(1);
 filter: grayscale(1);
}

А отсюда убрать две строки:

Код: css
.jm-icons a:hover span.bg {
  opacity: 0.5; /*эту*/
  filter: alpha(opacity=50); /* и эту*/
  -webkit-transition: all 0.3s ease-in-out;
  -moz-transition: all 0.3s ease-in-out;
  -o-transition: all 0.3s ease-in-out;
  transition: all 0.3s ease-in-out;
}

Я правильно понимаю он такой должен стать?


.jm-icons {
  display: inline-block;
  width: 100%;
  text-align: center;
}
.jm-icons a {
  display: inline-block;
  text-decoration: none !important;
  position: relative;
  margin: 10px;
}
.jm-icons a.jm-facebook span.bg,
.jm-icons a.jm-google span.bg,
.jm-icons a.jm-twitter span.bg,
.jm-icons a.jm-vk span.bg,
.jm-icons a.jm-linkedin span.bg {
  width: 76px;
  height: 76px;
  display: inline-block;
}
.jm-icons a:not(:hover) span.bg {
 -webkit-filter: grayscale(1;
 -moz-filter: grayscale(1);
 -ms-filter: grayscale(1);
 filter: grayscale(1);
}
.jm-icons a:hover span.bg {
  -webkit-transition: all 0.3s ease-in-out;
  -moz-transition: all 0.3s ease-in-out;
  -o-transition: all 0.3s ease-in-out;
  transition: all 0.3s ease-in-out;
}
.jm-icons a.jm-vk span.bg {
  background: url('../images/social/vk.png');
}
.jm-icons a.jm-facebook span.bg {
  background: url('../images/social/facebook.png');
}
.jm-icons a.jm-google span.bg {
  background: url('../images/social/googleplus.png');
}
.jm-icons a.jm-twitter span.bg {
  background: url('../images/social/twitter.png');
}
.jm-icons a.jm-linkedin span.bg {
  background: url('../images/social/linkedin.png');
}
.jm-footer .jm-icons a.jm-facebook span.bg {
  background: url('../images/social/facebook-light.png');
}
.jm-footer .jm-icons a.jm-google span.bg {
  background: url('../images/social/googleplus-light.png');
}
.jm-footer .jm-icons a.jm-twitter span.bg {
  background: url('../images/social/twitter-light.png');
}
.jm-footer .jm-icons a.jm-linkedin span.bg {
  background: url('../images/social/linkedin-light.png');
}
.jm-footer .jm-icons a.jm-vk span.bg {
  background: url('../images/social/vk-light.png');
}
.jm-icons a span.ttip {
  width: 100px;
  height: auto;
  line-height: 20px;
  padding: 10px 5px;
  right: 50%;
  margin-right: -55px;
  font-weight: 700;
  font-size: 14px;
  color: #ffffff;
  text-align: center;
  text-transform: uppercase;
  position: absolute;
  bottom: 85px;
  opacity: 0;
  filter: alpha(opacity=0);
  pointer-events: none;
  -webkit-transition: all 0.3s ease-in-out;
  -moz-transition: all 0.3s ease-in-out;
  -o-transition: all 0.3s ease-in-out;
  transition: all 0.3s ease-in-out;
}
.jm-icons a span.ttip:before,
.jm-icons a span.ttip:after {
  content: '';
  position: absolute;
  bottom: -7px;
  right: 50%;
  margin-right: -6px;
  width: 0px;
  height: 0px;
  border-style: solid inset;
  border-width: 7px 7px 0 7px;
}
.jm-icons a:hover span.ttip {
  opacity: 1;
  filter: alpha(opacity=100);
}
.jm-icons a.jm-facebook span.ttip {
  background: #4e67a9;
}
.jm-icons a.jm-facebook span.ttip:before,
.jm-icons a.jm-facebook span.ttip:after {
  border-color: #4e67a9 transparent transparent transparent;
}
.jm-icons a.jm-twitter span.ttip {
  background: #42c8f4;
}
.jm-icons a.jm-twitter span.ttip:before,
.jm-icons a.jm-twitter span.ttip:after {
  border-color: #42c8f4 transparent transparent transparent;
}
.jm-icons a.jm-google span.ttip {
  background: #dd4c39;
}
.jm-icons a.jm-google span.ttip:before,
.jm-icons a.jm-google span.ttip:after {
  border-color: #dd4c39 transparent transparent transparent;
}
.jm-icons a.jm-linkedin span.ttip {
  background: #0077b5;
}
.jm-icons a.jm-vk span.ttip {
  background: #5a7fa7;
}
.jm-icons a.jm-vk span.ttip:before,
.jm-icons a.jm-vk span.ttip:after {
  border-color: #5a7fa7 transparent transparent transparent;
}
.jm-icons a.jm-linkedin span.ttip:before,
.jm-icons a.jm-linkedin span.ttip:after {
  border-color: #0077b5 transparent transparent transparent;
}
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

как из Стиль модуля - none, убрать custom

Автор all_zer

Ответов: 3
Просмотров: 137
Последний ответ 15.11.2025, 16:20:01
от all_zer
Как в шаблоне protostar подключить стиль с другой папки?

Автор azm1n

Ответов: 2
Просмотров: 1239
Последний ответ 18.04.2025, 11:05:27
от azm1n
widgetkit slideset - js, как убрать стиль?

Автор all_zer

Ответов: 0
Просмотров: 711
Последний ответ 22.09.2023, 12:02:27
от all_zer
Изменение отображения модуля от разрешения экрана

Автор mag_num83

Ответов: 5
Просмотров: 1041
Последний ответ 17.05.2023, 09:35:23
от Театрал
CSS стиль для значения поля в списке материалов

Автор Vlad1

Ответов: 8
Просмотров: 868
Последний ответ 29.06.2022, 03:09:37
от Ciaoatutti