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

Se

  • Захожу иногда
  • 223
  • 2 / 1
Как вставить рекламный блок в центр главной страницы, то есть он должен находится между материалами. Позиции шаблона насколько я понимаю это не позволяют. При помощи позиций рекламные блоки можно вставлять, только внизу и вверху страницы, ну и сбоку конечно. Сам сайт  http://travelvideophoto.com
*

darkghost

  • Живу я здесь
  • 2212
  • 97 / 0
Вариантов у ГУГЛ хватает, даже слишком
Но наверное охота установить рекламу не модулем ..., а произвольным блоком ---->>>
Спойлер
[свернуть]
*

Se

  • Захожу иногда
  • 223
  • 2 / 1
Вариантов у ГУГЛ хватает, даже слишком
Но наверное охота установить рекламу не модулем ..., а произвольным блоком ---->>>

Спойлер
[свернуть]

По этой ссылке http://site-on.net/create/cms/27-insert-advertising ответа не нашел так как у меня совсем другие пути до нужного файла, но это не главное файл можно найти.
У меня там совсем другой код. У меня нет такого $this->item->text
Файл называется edit.php и вот его код
Код

<?php
/**
 * @package     Joomla.Site
 * @subpackage  com_content
 *
 * @copyright   Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

JHtml::_('behavior.tabstate');
JHtml::_('behavior.keepalive');
JHtml::_('behavior.calendar');
JHtml::_('behavior.formvalidation');
JHtml::_('formbehavior.chosen', 'select');
JHtml::_('behavior.modal', 'a.modal_jform_contenthistory');

// Create shortcut to parameters.
$params = $this->state->get('params');
//$images = json_decode($this->item->images);
//$urls = json_decode($this->item->urls);

// This checks if the editor config options have ever been saved. If they haven't they will fall back to the original settings.
$editoroptions = isset($params->show_publishing_options);
if (!$editoroptions)
{
$params->show_urls_images_frontend = '0';
}
?>

<script type="text/javascript">
Joomla.submitbutton = function(task)
{
if (task == 'article.cancel' || document.formvalidator.isValid(document.getElementById('adminForm')))
{
<?php echo $this->form->getField('articletext')->save(); ?>
Joomla.submitform(task);
}
}
</script>
<div class="edit item-page<?php echo $this->pageclass_sfx; ?>">
<?php if ($params->get('show_page_heading', 1)) : ?>
<div class="page-header">
<h1>
<?php echo $this->escape($params->get('page_heading')); ?>
</h1>
</div>
<?php endif; ?>

<form action="<?php echo JRoute::_('index.php?option=com_content&a_id='.(int) $this->item->id); ?>" method="post" name="adminForm" id="adminForm" class="form-validate form-vertical">
<div class="btn-toolbar">

<button type="button" class="btn btn-primary" onclick="Joomla.submitbutton('article.save')">
<?php echo JText::_('JSAVE')?>
</button>
<button type="button" class="btn" onclick="Joomla.submitbutton('article.cancel')">
<?php echo JText::_('JCANCEL')?>
</button>
<?php if ($params->get('save_history', 0)) : ?>
<?php echo $this->form->getInput('contenthistory'); ?>
<?php endif; ?>
</div>
<fieldset>
<ul class="nav nav-tabs">
<li class="active"><a href="#editor" data-toggle="tab"><?php echo JText::_('COM_CONTENT_ARTICLE_CONTENT')?></a></li>
<?php if ($params->get('show_urls_images_frontend') ) : ?>
<li><a href="#images" data-toggle="tab"><?php echo JText::_('COM_CONTENT_IMAGES_AND_URLS')?></a></li>
<?php endif; ?>
<li><a href="#publishing" data-toggle="tab"><?php echo JText::_('COM_CONTENT_PUBLISHING')?></a></li>
<li><a href="#language" data-toggle="tab"><?php echo JText::_('JFIELD_LANGUAGE_LABEL')?></a></li>
<li><a href="#metadata" data-toggle="tab"><?php echo JText::_('COM_CONTENT_METADATA')?></a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="editor">
<?php echo $this->form->renderField('title'); ?>

<?php if (is_null($this->item->id)) : ?>
<?php echo $this->form->renderField('alias'); ?>
<?php endif; ?>

<?php echo $this->form->getInput('articletext'); ?>
</div>
<?php if ($params->get('show_urls_images_frontend')): ?>
<div class="tab-pane" id="images">
<?php echo $this->form->renderField('image_intro', 'images'); ?>
<?php echo $this->form->renderField('image_intro_alt', 'images'); ?>
<?php echo $this->form->renderField('image_intro_caption', 'images'); ?>
<?php echo $this->form->renderField('float_intro', 'images'); ?>
<?php echo $this->form->renderField('image_fulltext', 'images'); ?>
<?php echo $this->form->renderField('image_fulltext_alt', 'images'); ?>
<?php echo $this->form->renderField('image_fulltext_caption', 'images'); ?>
<?php echo $this->form->renderField('float_fulltext', 'images'); ?>
<?php echo $this->form->renderField('urla', 'urls'); ?>
<?php echo $this->form->renderField('urlatext', 'urls'); ?>
<div class="control-group">
<div class="controls">
<?php echo $this->form->getInput('targeta', 'urls'); ?>
</div>
</div>
<?php echo $this->form->renderField('urlb', 'urls'); ?>
<?php echo $this->form->renderField('urlbtext', 'urls'); ?>
<div class="control-group">
<div class="controls">
<?php echo $this->form->getInput('targetb', 'urls'); ?>
</div>
</div>
<?php echo $this->form->renderField('urlc', 'urls'); ?>
<?php echo $this->form->renderField('urlctext', 'urls'); ?>
<div class="control-group">
<div class="controls">
<?php echo $this->form->getInput('targetc', 'urls'); ?>
</div>
</div>
</div>
<?php endif; ?>
<div class="tab-pane" id="publishing">
<?php echo $this->form->renderField('catid'); ?>
<?php echo $this->form->renderField('tags'); ?>
<?php if ($params->get('save_history', 0)) : ?>
<?php echo $this->form->renderField('version_note'); ?>
<?php endif; ?>
<?php echo $this->form->renderField('created_by_alias'); ?>
<?php if ($this->item->params->get('access-change')) : ?>
<?php echo $this->form->renderField('state'); ?>
<?php echo $this->form->renderField('featured'); ?>
<?php echo $this->form->renderField('publish_up'); ?>
<?php echo $this->form->renderField('publish_down'); ?>
<?php endif; ?>
<?php echo $this->form->renderField('access'); ?>
<?php if (is_null($this->item->id)):?>
<div class="control-group">
<div class="control-label">
</div>
<div class="controls">
<?php echo JText::_('COM_CONTENT_ORDERING'); ?>
</div>
</div>
<?php endif; ?>
</div>
<div class="tab-pane" id="language">
<?php echo $this->form->renderField('language'); ?>
</div>
<div class="tab-pane" id="metadata">
<?php echo $this->form->renderField('metadesc'); ?>
<?php echo $this->form->renderField('metakey'); ?>

<input type="hidden" name="task" value="" />
<input type="hidden" name="return" value="<?php echo $this->return_page; ?>" />
<?php if ($this->params->get('enable_category', 0) == 1) :?>
<input type="hidden" name="jform[catid]" value="<?php echo $this->params->get('catid', 1); ?>" />
<?php endif; ?>
</div>
</div>
<?php echo JHtml::_('form.token'); ?>
</fieldset>
</form>
</div>


Хорошо бы конечно использовать модуль это удобнее всего по ссылке с запросом Google пишут о модуле  Nutre Google Adsense это то что надо для статей. Но его уже нет в доступе даже и в том числе на сайте производителя. То что я находил, по сути заменяют обычный HTML модуль. А нужно что бы можно было автоматически вставлять рекламные блоки в тексты статьи.

Вообще изначально стоял вопрос как возможно как можно вставить рекламный блок в центр главной страницы сайта. В текст статьей по крайне мере в ручную можно вставлять.
*

vipiusss

  • Гуру
  • 5739
  • 344 / 11
  • Скайп: renor_
Миграция, установка, обновление версий Joomla  |  Создание сайтов "под ключ"  |  Эксклюзивные заглушки "offline"  |  Работа с "напильником" над шаблонами и расширениями
*

Se

  • Захожу иногда
  • 223
  • 2 / 1
https://webors.in.ua/dobavlyaem-pozitsiyu-modulya-v-kod-lyubogo-komponenta-joomla/


Статья правильная, но опять же у меня совсем другой путь в отличии от указанного в статье  templates/travelagent/html/com_content/form/ и там только два файла edit.php и index.html.
Как быть, что можно сделать?
*

vipiusss

  • Гуру
  • 5739
  • 344 / 11
  • Скайп: renor_
А вы com_content полностью переопределите в папку HTML и будут ещё папки и файлы ;)
И при обнове не потрётся.
Миграция, установка, обновление версий Joomla  |  Создание сайтов "под ключ"  |  Эксклюзивные заглушки "offline"  |  Работа с "напильником" над шаблонами и расширениями
*

Se

  • Захожу иногда
  • 223
  • 2 / 1
А вы com_content полностью переопределите в папку HTML и будут ещё папки и файлы ;)
И при обнове не потрётся.
Что мне для этого нужно?
Из /components/com_content/views/ скопировать /category/tmpl/blog.php в
templates/travelagent/html/com_content/ или можно без /tmpl ?
*

vipiusss

  • Гуру
  • 5739
  • 344 / 11
  • Скайп: renor_
https://boxapp.net/blog/joomla/makety-v-joomla-3-sozdanie-sobstvennykh-maketov

Только бекап сделайте и ваш файл учтите edit.php
Миграция, установка, обновление версий Joomla  |  Создание сайтов "под ключ"  |  Эксклюзивные заглушки "offline"  |  Работа с "напильником" над шаблонами и расширениями
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Перенести описание категории вниз страницы

Автор jimka

Ответов: 1
Просмотров: 1218
Последний ответ 18.07.2024, 08:02:46
от Vastriet
Как вставить видео с Telegram в материал?

Автор Ishti39

Ответов: 2
Просмотров: 1192
Последний ответ 18.06.2024, 10:41:30
от Olg
Шаблон для данной страницы недоступен. сообщите об этом Администратору сайта

Автор 62411

Ответов: 2
Просмотров: 1432
Последний ответ 30.03.2024, 13:15:16
от web1
Как установить header Cache-Control только для одной страницы по URL?

Автор Slava77

Ответов: 0
Просмотров: 999
Последний ответ 23.03.2024, 00:16:36
от Slava77
Как вставить модуль в код нужной страницы php?

Автор zvi

Ответов: 9
Просмотров: 5005
Последний ответ 21.02.2024, 11:03:08
от saynez