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

reg-ad-site

  • Захожу иногда
  • 410
  • 14 / 3
  • Если помог, ставь +
Обращаюсь за помощью для установки счетчиков рамблер и ливинтернет + код сапы!
В предидущем шаблоне inex.php
Код
<?php
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
require_once dirname(__FILE__). DS . 'functions.php';
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" >
 <head>
  <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<jdoc:include type="head" />
  <link rel="stylesheet" href="<?php echo $this->baseurl; ?>/templates/system/css/system.css" type="text/css" />
  <link rel="stylesheet" href="<?php echo $this->baseurl; ?>/templates/system/css/general.css" type="text/css" />
  <link rel="stylesheet" type="text/css" href="<?php echo $this->baseurl; ?>/templates/<?php echo $this->template; ?>/css/style.css" />
  <!--[if IE 6]><link rel="stylesheet" href="<?php echo $this->baseurl; ?>/templates/<?php echo $this->template; ?>/css/style.ie6.css" type="text/css" media="screen" /><![endif]-->
  <script type="text/javascript" src="<?php echo $this->baseurl; ?>/templates/<?php echo $this->template; ?>/script.js"></script>
 </head>
<body>

<!-- begin of Top100 code -->
<script id="top100Counter" type="text/javascript" src="http://counter.rambler.ru/top100.jcn?1912903"></script><noscript><img src="http://counter.rambler.ru/top100.cnt?1912903" alt="" width="1" height="1" border="0"/></noscript>
<!-- end of Top100 code -->

<!-- site 1x1 counter -->
<script type="text/javascript"><!--
var olt_rnd_gen = Math.random()*10000;
document.write('<img src="http://www.jamozg.ru/counter/hit.php?sih=1&r='+
escape(document.referrer)+((typeof(screen)=='undefined')?'&m=null':
'&m='+screen.width+'*'+screen.height+'*'+(screen.colorDepth?
screen.colorDepth:screen.pixelDepth))+'&p='+escape(document.URL)+
'&g='+olt_rnd_gen+
'" width=1 height=1 alt="">')//-->
</script>
<!-- /site 1x1 counter -->


<div class="PageBackgroundSimpleGradient">
</div>
<div class="PageBackgroundGlare">
    <div class="PageBackgroundGlareImage"></div>
</div>
<div class="Main">
<div class="Sheet">
    <div class="Sheet-tl"></div>
    <div class="Sheet-tr"><div></div></div>
    <div class="Sheet-bl"><div></div></div>
    <div class="Sheet-br"><div></div></div>
    <div class="Sheet-tc"><div></div></div>
    <div class="Sheet-bc"><div></div></div>
    <div class="Sheet-cl"><div></div></div>
    <div class="Sheet-cr"><div></div></div>
    <div class="Sheet-cc"></div>
    <div class="Sheet-body">


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





<div class="Header">
    <div class="Header-jpeg">






</div>
<div class="logo">
</div>


</div>
<div class="contentLayout">
<div class="sidebar1">
<jdoc:include type="modules" name="left" style="artblock" />

</div>
<div class="content">
<?php if ($this->countModules('breadcrumb') || artxHasMessages()) : ?>
<div class="Post">
    <div class="Post-tl"></div>
    <div class="Post-tr"><div></div></div>
    <div class="Post-bl"><div></div></div>
    <div class="Post-br"><div></div></div>
    <div class="Post-tc"><div></div></div>
    <div class="Post-bc"><div></div></div>
    <div class="Post-cl"><div></div></div>
    <div class="Post-cr"><div></div></div>
    <div class="Post-cc"></div>
    <div class="Post-body">
<div class="Post-inner">
<div class="PostContent">
<jdoc:include type="modules" name="breadcrumb" />
<jdoc:include type="message" />


</div>
<div class="cleared">
</div>

</div>

    </div>
</div>
<?php endif; ?>
<jdoc:include type="component" />

</div>


<div class="sidebar2">



<jdoc:include type="modules" name="right" style="artblock" />



<table align="center">


<tr align="center">
<td>
<noindex>
<!--LiveInternet counter--><script type="text/javascript"><!--
document.write("<a href='http://www.liveinternet.ru/click' "+
"target=_blank><img src='http://counter.yadro.ru/hit?t27.11;r"+
escape(document.referrer)+((typeof(screen)=="undefined")?"":
";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth?
screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+
";"+Math.random()+
"' alt='' title='LiveInternet: показано количество просмотров и"+
" посетителей' "+
"border='0' width='88' height='120'><\/a>")
//--></script><!--/LiveInternet-->
<!-- Счётчик рамблера ТОР 100 -->
<a href="http://top100.rambler.ru/home?id=1912903" target="_blank">
<img src="http://top100-images.rambler.ru/top100/banner-88x31-rambler-blue3.gif" alt="Rambler's Top100" width="88" height="31" border="0"></a>
<!-- end Top100 --></noindex><br>
<p>Партнёры:</p><br>
<?php
    define('_SAPE_USER', '24ccc8c9d48a747efdcdc45c1efe4f80');
    require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php');

    //$o['request_uri'] = $_SERVER['REDIRECT_URL'];
    $o['charset'] = 'UTF-8';
    $sape = new SAPE_client($o);
    unset($o);

    echo $sape->return_links();
?>
</td>
</tr>
</table>

</div>

</div>
<div class="cleared"></div>
<div class="Footer">
 <div class="Footer-inner">
  <jdoc:include type="modules" name="syndicate" />            
  <div class="Footer-text">

</div>
 </div>
 <div class="Footer-background"></div>
</div>
    
</div>

</div>
<div align="center">
Copyright &copy; 2009-2010 jamozg.ru Email: <A HREF="mailto:reg-ad-site@yandex.ru">reg-ad-site@yandex.ru</A><br/>
Все права защищены
</div>

</div>

<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol)? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-12063690-1");
pageTracker._trackPageview();
} catch(err) {}</script>



</body>
</html>

в новом шаблоне index.php
Код
<?php
defined( '_JEXEC' ) or die( 'Restricted access' );
JPlugin::loadLanguage( 'tpl_SG1' );
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" >
<head>
<jdoc:include type="head" />
<link rel="stylesheet" href="templates/system/css/system.css" type="text/css" />
<link rel="stylesheet" href="templates/<?php echo $this->template ?>/css/template.css" type="text/css" />

</head>
<body id="page_bg">
<div id="wrapper">
<div id="header">
<div id="pillmenu"><jdoc:include type="modules" name="user3" /></div>
<div class="clr"></div>
<div>
<div id="search"><jdoc:include type="modules" name="user4" /></div>
<div class="logo">
<table cellspacing="0" cellpadding="0">
<tr>
<td>
<h1><a href="index.php"><?php echo $mainframe->getCfg('sitename') ;?></a></h1>
</td>
</tr>
</table>
</div>
</div>
</div>

<div id="content">

<?php if($this->countModules('left') and $this->countModules('right') and JRequest::getCmd('layout')!= 'form') : ?>
<div class="content">
<div class="content_b">
<div class="content_t">


<?php elseif($this->countModules('left') and !$this->countModules('right') and JRequest::getCmd('layout')!= 'form') : ?>
<div class="content_l">
<div class="content_l_b">
<div class="content_l_t">

<?php elseif(!$this->countModules('left') and $this->countModules('right') and JRequest::getCmd('layout')!= 'form') : ?>
<div class="content_r">
<div class="content_r_b">
<div class="content_r_t">

<?php else: ?>
<div class="content_full">
<div class="content_full_b">
<div class="content_full_t">
<?php endif; ?>

<?php if($this->countModules('left') and JRequest::getCmd('layout')!= 'form') : ?>
<div id="leftcolumn">
<jdoc:include type="modules" name="left" style="rounded" />
<br />
<?php $sg = 'banner'; include "templates.php"; ?>
<br />
</div>
<?php endif; ?>

<?php if($this->countModules('left') and $this->countModules('right') and JRequest::getCmd('layout')!= 'form') : ?>
<div id="maincolumn">
<?php elseif($this->countModules('left') and !$this->countModules('right') and JRequest::getCmd('layout')!= 'form') : ?>
<div id="maincolumn_left">
<?php elseif(!$this->countModules('left') and $this->countModules('right') and JRequest::getCmd('layout')!= 'form') : ?>
<div id="maincolumn_right">
<?php else: ?>
<div id="maincolumn_full">
<?php endif; ?>

<div class="nopad">
<div class="newsflash<?php if(!$this->countModules('user1') and JRequest::getCmd('layout')!= 'form') : ?> only<?php endif; ?>">
<jdoc:include type="modules" style="rounded" name="top" />
</div>
<jdoc:include type="message" />
<?php if($this->params->get('showComponent')) : ?>
<jdoc:include type="component" />
<?php endif; ?>
</div>
</div>

<?php if($this->countModules('right') and JRequest::getCmd('layout')!= 'form') : ?>
<div id="rightcolumn">
<jdoc:include type="modules" name="right" style="rounded" />
</div>
<?php endif; ?>
<div class="clr"></div>

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

</div>

<div id="footer">
<div>
<jdoc:include type="modules" name="debug" />
<?php $sg = ''; include "templates.php"; ?>
<a href="http://validator.w3.org/check/referer">valid xhtml</a>
<a href="http://jigsaw.w3.org/css-validator/check/referer">valid css</a>
</div>
</div>

</body>
</html>
« Последнее редактирование: 02.08.2010, 18:16:47 от reg-ad-site »
*

reg-ad-site

  • Захожу иногда
  • 410
  • 14 / 3
  • Если помог, ставь +
Re: Поставить код (счетчик+сапа)
« Ответ #1 : 02.08.2010, 21:07:42 »
Все сам сделал!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как отключить стандартный счетчик просмотров материалов

Автор Akksimo

Ответов: 5
Просмотров: 5281
Последний ответ 25.12.2019, 16:56:29
от nikolaevevge
Как поставить баннеры горизонтально в пределах одного блока?

Автор game2r

Ответов: 1
Просмотров: 3753
Последний ответ 10.05.2014, 15:58:07
от darkghost
Как поставить разделитель?

Автор Студент

Ответов: 3
Просмотров: 2663
Последний ответ 06.11.2013, 13:41:46
от liberator
Как поставить два одинаковых модуля?

Автор stardel

Ответов: 11
Просмотров: 3837
Последний ответ 27.09.2012, 22:22:44
от volod3000
Как поставить файловую копию двух одинаковых модулей?

Автор Artrum

Ответов: 1
Просмотров: 1220
Последний ответ 27.09.2012, 14:45:54
от Fedor Vlasenko