Новости Joomla

Как тестировать Joomla PHP-разработчику? Компонент Patch tester.

👩‍💻 Как тестировать Joomla PHP-разработчику? Компонент Patch tester.Joomla - open source PHP-фреймворк с готовой админкой. Его основная разработка ведётся на GitHub. Для того, чтобы международному сообществу разработчиков было удобнее тестировать Pull Requests был создан компонент Patch Tester, который позволяет "накатить" на текущую установку Joomla именно те изменения, которые необходимо протестировать. На стороне инфраструктуры Joomla для каждого PR собираются готовые пакеты, в которых находится ядро + предложенные изменения. В каждом PR обычно находятся инструкции по тестированию: куда зайти, что нажать, ожидаемый результат. Тестировщики могут предположить дополнительные сценарии, исходя из своего опыта и найти баги, о которых сообщить разработчику. Или не найти, и тогда улучшение или исправление ошибки быстрее войдёт в ядро Joomla. Напомню, что для того, чтобы PR вошёл в ядро Joomla нужны минимум 2 положительных теста от 2 участников сообщества, кроме автора. Видео на YouTubeВидео на VK ВидеоВидео на RuTubeКомпонент на GitHub https://github.com/joomla-extensions/patchtester@joomlafeed#joomla #php #webdev #community

Вышел релиз Revo PageBuilder Toolkit for YOOtheme Pro 1.6

Вышел релиз Revo PageBuilder Toolkit for YOOtheme Pro 1.6.2PageBuilder Toolkit - это специализированный плагин для конструктора страниц Yootheme Pro, содержит набор различных утилит для ускорения процесса работы и отладки макета, множественные улучшения в интерфейсе, включая поддержку dark mode, подсказки, быстрая смена разрешения в окне просмотра и много чего еще.v.1.6.2 Что нового?- Индикатор статусов: теперь не просто показывает состояние запросов, но и делает автоматические попытки их отправки при кратковременных сбоях в сети, а если это не помогло, то переводит конструктор в ручной режим, что позволяет сохранит макет и настройки темы прежде чем вы потеряете все, что было сделано с момента последнего сохранения- Подсветка ошибок в макете: плагин анализирует код страницы и может автоматически подсвечивать data атрибуты с кучей мусора, которые попадают в код страницы при копипасте из Figma в TinyMCE (пригодится для старых макетов, в текущей работе плагин сам очищает код мусора). Также есть подсветка семантических ошибок сборки - дубли h1 тега на странице и вложенных друг в друга заголовков.- Улучшена поддержка будущего релиза Yootheme Pro 5 и редактора CodeMirror 6Плагин для русскоязычных пользователей доступен в каталоге расширений SovMart и распространяется за символическую плату (100р). Разработчики Joomla расширений и партнеры автора могут получить плагин бесплатно.Для работы плагина необходим конструктор страниц Yootheme Pro.Разработчик плагина - участник нашего сообщества Александр Судьбинов (@alexrevo), член официальной группы поддержки Yootheme Pro. Страница расширенияОписание на сайте автора@joomlafeed#joomla #yootheme

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

alexey711

  • Захожу иногда
  • 68
  • 0 / 0
Нужна помощь с выводом RSS
« : 16.11.2017, 10:12:40 »
Всем доброго дня. Необходимо подправить вывод своего RSS потока. В частности чтоб изображения отдельно от статьи обрамлялись тегом <enclosure>. Попытался использовать
if ($data->items[$i]->enclosure != null)
            {
                $feed .= "<enclosure url=\"";
                $feed .= $data->items[$i]->enclosure->url;
                $feed .= "\" length=\"";
                $feed .= $data->items[$i]->enclosure->length;
                $feed .= "\" type=\"";
                $feed .= $data->items[$i]->enclosure->type;
                $feed .= "\"/>\n";
            }
но результатов ноль. подскажите пожалуйста что можно применить

вот сам код

Код
<?php
/**
 * Joomla! Content Management System
 *
 * [member=126442]copyright[/member]  Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
 * @license    GNU General Public License version 2 or later; see LICENSE.txt
 */

namespace Joomla\CMS\Document\Renderer\Feed;

defined('JPATH_PLATFORM') or die;

use Joomla\CMS\Document\DocumentRenderer;
use Joomla\CMS\Uri\Uri;

/**
 * RssRenderer is a feed that implements RSS 2.0 Specification
 *
 * @link   http://www.rssboard.org/rss-specification
 * @since  3.5
 *
 * @property-read  \Joomla\CMS\Document\FeedDocument  $_doc  Reference to the Document object that instantiated the renderer
 */
class RssRenderer extends DocumentRenderer
{
/**
* Renderer mime type
*
* @var    string
* @since  3.5
*/
protected $_mime = 'application/rss+xml';

/**
* Render the feed.
*
* @param   string  $name     The name of the element to render
* @param   array   $params   Array of values
* @param   string  $content  Override the output of the renderer
*
* @return  string  The output of the script
*
* @see     DocumentRenderer::render()
* @since   3.5
*/
public function render($name = '', $params = null, $content = null)
{
$app = \JFactory::getApplication();

// Gets and sets timezone offset from site configuration
$tz  = new \DateTimeZone($app->get('offset'));
$now = \JFactory::getDate();
$now->setTimeZone($tz);

$data = $this->_doc;

$url = Uri::getInstance()->toString(array('scheme', 'user', 'pass', 'host', 'port'));
$syndicationURL = \JRoute::_('&format=feed&type=rss');

$title = $data->getTitle();

if ($app->get('sitename_pagetitles', 0) == 1)
{
$title = \JText::sprintf('JPAGETITLE', $app->get('sitename'), $data->getTitle());
}
elseif ($app->get('sitename_pagetitles', 0) == 2)
{
$title = \JText::sprintf('JPAGETITLE', $data->getTitle(), $app->get('sitename'));
}

$feed_title = htmlspecialchars($title, ENT_COMPAT, 'UTF-8');

$datalink = $data->getLink();

if (preg_match('/[\x80-\xFF]/', $datalink))
{
$datalink = implode('/', array_map('rawurlencode', explode('/', $datalink)));
}

$feed = "<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\">\n";
$feed .= " <channel>\n";
$feed .= " <title>" . $feed_title . "</title>\n";
$feed .= " <description><![CDATA[" . $data->getDescription(). "]]></description>\n";
$feed .= " <link>" . str_replace(' ', '%20', $url . $datalink). "</link>\n";
$feed .= " <lastBuildDate>" . htmlspecialchars($now->toRFC822(true), ENT_COMPAT, 'UTF-8'). "</lastBuildDate>\n";
$feed .= " <atom:link rel=\"self\" type=\"application/rss+xml\" href=\"" . str_replace(' ', '%20', $url . $syndicationURL). "\"/>\n";
if ($data->image != null)
{
$feed .= " <image>\n";
$feed .= " <url>" . $data->image->url . "</url>\n";
$feed .= " <title>" . htmlspecialchars($data->image->title, ENT_COMPAT, 'UTF-8'). "</title>\n";
$feed .= " <link>" . str_replace(' ', '%20', $data->image->link). "</link>\n";

if ($data->image->width != '')
{
$feed .= " <width>" . $data->image->width . "</width>\n";
}

if ($data->image->height != '')
{
$feed .= " <height>" . $data->image->height . "</height>\n";
}

if ($data->image->description != '')
{
$feed .= " <description><![CDATA[" . $data->image->description . "]]></description>\n";
}

$feed .= " </image>\n";
}

if ($data->getLanguage()!== '')
{
$feed .= " <language>" . $data->getLanguage(). "</language>\n";
}

if ($data->copyright != '')
{
$feed .= " <copyright>" . htmlspecialchars($data->copyright, ENT_COMPAT, 'UTF-8'). "</copyright>\n";
}

if ($data->editorEmail != '')
{
$feed .= " <managingEditor>" . htmlspecialchars($data->editorEmail, ENT_COMPAT, 'UTF-8'). ' ('
. htmlspecialchars($data->editor, ENT_COMPAT, 'UTF-8'). ")</managingEditor>\n";
}

if ($data->webmaster != '')
{
$feed .= " <webMaster>" . htmlspecialchars($data->webmaster, ENT_COMPAT, 'UTF-8'). "</webMaster>\n";
}

if ($data->pubDate != '')
{
$pubDate = \JFactory::getDate($data->pubDate);
$pubDate->setTimeZone($tz);
$feed .= " <pubDate>" . htmlspecialchars($pubDate->toRFC822(true), ENT_COMPAT, 'UTF-8'). "</pubDate>\n";
}

if (!empty($data->category))
{
if (is_array($data->category))
{
foreach ($data->category as $cat)
{
$feed .= " <category>" . htmlspecialchars($cat, ENT_COMPAT, 'UTF-8'). "</category>\n";
}
}
else
{
$feed .= " <category>" . htmlspecialchars($data->category, ENT_COMPAT, 'UTF-8'). "</category>\n";
}
}

if ($data->docs != '')
{
$feed .= " <docs>" . htmlspecialchars($data->docs, ENT_COMPAT, 'UTF-8'). "</docs>\n";
}

if ($data->ttl != '')
{
$feed .= " <ttl>" . htmlspecialchars($data->ttl, ENT_COMPAT, 'UTF-8'). "</ttl>\n";
}

if ($data->rating != '')
{
$feed .= " <rating>" . htmlspecialchars($data->rating, ENT_COMPAT, 'UTF-8'). "</rating>\n";
}

if ($data->skipHours != '')
{
$feed .= " <skipHours>" . htmlspecialchars($data->skipHours, ENT_COMPAT, 'UTF-8'). "</skipHours>\n";
}

if ($data->skipDays != '')
{
$feed .= " <skipDays>" . htmlspecialchars($data->skipDays, ENT_COMPAT, 'UTF-8'). "</skipDays>\n";
}

for ($i = 0, $count = count($data->items); $i < $count; $i++)
{
$itemlink = $data->items[$i]->link;

if (preg_match('/[\x80-\xFF]/', $itemlink))
{
$itemlink = implode('/', array_map('rawurlencode', explode('/', $itemlink)));
}

if ((strpos($itemlink, 'http://') === false) && (strpos($itemlink, 'https://') === false))
{
$itemlink = str_replace(' ', '%20', $url . $itemlink);
}

$feed .= " <item>\n";
$feed .= " <title>" . htmlspecialchars(strip_tags($data->items[$i]->title), ENT_COMPAT, 'UTF-8'). "</title>\n";
$feed .= " <link>" . str_replace(' ', '%20', $itemlink). "</link>\n";

if (empty($data->items[$i]->guid))
{
$feed .= " <guid isPermaLink=\"true\">" . str_replace(' ', '%20', $itemlink). "</guid>\n";
}
else
{
$feed .= " <guid isPermaLink=\"false\">" . htmlspecialchars($data->items[$i]->guid, ENT_COMPAT, 'UTF-8'). "</guid>\n";
}
            $feed.= '<enclosure url="'.str_replace(' ','%20',$data->image->link).'" type="image/jpeg"/>';
$feed .= " <description><![CDATA[" . $this->_relToAbs($data->items[$i]->description). "]]></description>\n";

if ($data->items[$i]->authorEmail != '')
{
$feed .= ' <author>'
. htmlspecialchars($data->items[$i]->authorEmail . ' (' . $data->items[$i]->author . ')', ENT_COMPAT, 'UTF-8'). "</author>\n";
}

/*
* @todo: On hold
* if ($data->items[$i]->source!='')
* {
*   $data.= " <source>" . htmlspecialchars($data->items[$i]->source, ENT_COMPAT, 'UTF-8'). "</source>\n";
* }
*/

if (empty($data->items[$i]->category) === false)
{
if (is_array($data->items[$i]->category))
{
foreach ($data->items[$i]->category as $cat)
{
$feed .= " <category>" . htmlspecialchars($cat, ENT_COMPAT, 'UTF-8'). "</category>\n";
}
}
else
{
$feed .= " <category>" . htmlspecialchars($data->items[$i]->category, ENT_COMPAT, 'UTF-8'). "</category>\n";
}
}

if ($data->items[$i]->comments != '')
{
$feed .= " <comments>" . htmlspecialchars($data->items[$i]->comments, ENT_COMPAT, 'UTF-8'). "</comments>\n";
}

if ($data->items[$i]->date != '')
{
$itemDate = \JFactory::getDate($data->items[$i]->date);
$itemDate->setTimeZone($tz);
$feed .= " <pubDate>" . htmlspecialchars($itemDate->toRFC822(true), ENT_COMPAT, 'UTF-8'). "</pubDate>\n";
}

if ($data->items[$i]->enclosure != null)
{
$feed .= " <enclosure url=\"";
$feed .= $data->items[$i]->enclosure->url;
$feed .= "\" length=\"";
$feed .= $data->items[$i]->enclosure->length;
$feed .= "\" type=\"";
$feed .= $data->items[$i]->enclosure->type;
$feed .= "\"/>\n";
}

$feed .= " </item>\n";
}

$feed .= " </channel>\n";
$feed .= "</rss>\n";

return $feed;
}
}
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Re: Нужна помощь с выводом RSS
« Ответ #1 : 16.11.2017, 12:22:14 »
что-то совсем не то вы делаете

вот это надо менять
Код

if ($data->image != null)
{
$feed .= " <image>\n";
$feed .= " <url>" . $data->image->url . "</url>\n";
$feed .= " <title>" . htmlspecialchars($data->image->title, ENT_COMPAT, 'UTF-8'). "</title>\n";
$feed .= " <link>" . str_replace(' ', '%20', $data->image->link). "</link>\n";

if ($data->image->width != '')
{
$feed .= " <width>" . $data->image->width . "</width>\n";
}

if ($data->image->height != '')
{
$feed .= " <height>" . $data->image->height . "</height>\n";
}

if ($data->image->description != '')
{
$feed .= " <description><![CDATA[" . $data->image->description . "]]></description>\n";
}

$feed .= " </image>\n";
}
*

alexey711

  • Захожу иногда
  • 68
  • 0 / 0
Re: Нужна помощь с выводом RSS
« Ответ #2 : 16.11.2017, 12:41:02 »
Можете помочь?
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Re: Нужна помощь с выводом RSS
« Ответ #3 : 16.11.2017, 13:13:00 »
посмотрел - массив с изображениями всегда пустой почему-то.
т.е простая правка фрагмента не поможет - надо сначала регуляркой выдергивать из тела путь до картинки, это уже геморно )
*

alexey711

  • Захожу иногда
  • 68
  • 0 / 0
Re: Нужна помощь с выводом RSS
« Ответ #4 : 16.11.2017, 13:20:06 »
Вот и у меня пустое значение. Что то можно придумать, как вы считаете?
*

alexey711

  • Захожу иногда
  • 68
  • 0 / 0
Re: Нужна помощь с выводом RSS
« Ответ #5 : 16.11.2017, 13:21:07 »
Сколько может это стоить?
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Re: Нужна помощь с выводом RSS
« Ответ #6 : 16.11.2017, 13:24:00 »
если только этот тег оформить, то за 1000 возьмусь.
если потом ещё что-то пилить, то больше.
*

alexey711

  • Захожу иногда
  • 68
  • 0 / 0
Re: Нужна помощь с выводом RSS
« Ответ #7 : 16.11.2017, 13:39:35 »
Изображения будут отдельно в теге, вытягиваться? вот как здесь, до самой статьи
Код
    <channel>
        <title>Пастернак</title>
        <link>http://example.com/</link>
        <description>
Проект о фруктах и овощах. Рассказываем о том, как выращивать, готовить и правильно есть.
</description>
        <language>ru</language>
        <item>
           <title>Андроид восстановит ферму в Японии</title>
           <link>http://example.com/2023/07/04/android-happy-farmer</link>
           <pdalink>http://m.example.com/2023/07/04/android-happy-farmer</pdalink>
           <amplink>http://amp.example.com/2023/07/04/android-happy-farmer</amplink>
           <guid>2fd4e1c67a2d28fced849ee1bb76e7391b93eb12</guid>
           <pubDate>Tue, 4 Jul 2023 04:20:00 +0300</pubDate>
           <media:rating scheme="urn:simple">nonadult</media:rating>
           <author>Петр Стругацкий</author>
           <category>Технологии</category>
       <enclosure url="http://example.com/2023/07/04/pic1.jpg" type="image/jpeg"/>
           <enclosure url="http://example.com/2023/07/04/pic2.jpg" type="image/jpeg"/>
           <description>
                <![CDATA[
Заброшенную землю рядом с токийским университетом Нисёгакуся передали андроиду
с внешностью известного японского хозяйственника.
]]>
            </description>
            <content:encoded>
                <![CDATA[

<p>Здесь находится полный текст статьи.
Этот текст может прерываться картинками, видео и другим медиа-контентом так же,
как в оригинальной статье. Пример вставленной картинки ниже.</p>
<figure>
    <img src="http://example.com/2023/07/04/pic1.jpg" width="1200" height="900">
        <figcaption>
Первый андроид-фермер смотрит на свои угодья

            <span class="copyright">Михаил Родченков</span>
        </figcaption>
    </figure>
    <p>Продолжение статьи после вставленной картинки. В статье рассказывается
о технологии вспахивании земли, которую использует японский андроид-фермер.
Поэтому в материале не обойтись без видеоролика. Пример видеоролика ниже.</p>
    <figure>
        <video width="1200" height="900">
            <source src="http://example.com/2023/07/04/video/42420" type="video/mp4">
            </video>
            <figcaption>
Андроид-фермер вспахивает землю при помощи собственного изобретения

                <span class="copyright">Михаил Родченков</span>
            </figcaption>
        </figure>
        <p>Статья продолжается после видео. Андроид копает картошку.
Фермы развиваются. Япония продолжает удивлять.</p>
]]>
            </content:encoded>
        </item>
    </channel>
</rss>
*

alexey711

  • Захожу иногда
  • 68
  • 0 / 0
Re: Нужна помощь с выводом RSS
« Ответ #9 : 16.11.2017, 14:21:53 »
ответил в личку
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Нужна проф помощь в обновлении Joomla на лок.сервере osp. Можно платно

Автор Fati

Ответов: 0
Просмотров: 5250
Последний ответ 16.06.2025, 16:40:04
от Fati
Нужно помощь новичку

Автор B1ack7wan

Ответов: 8
Просмотров: 1323
Последний ответ 24.11.2022, 10:21:19
от marksetter
Нужна помощь с сайтом

Автор Demo-nova

Ответов: 1
Просмотров: 1148
Последний ответ 02.09.2022, 14:17:08
от darkghost
Для чего нужна блокировка ссылкы на localhost?

Автор Elimelech

Ответов: 1
Просмотров: 905
Последний ответ 23.09.2021, 22:16:43
от ProtectYourSite
Нужна помощь ( Joomla установка готового шаблона )

Автор ShadowChaser

Ответов: 5
Просмотров: 1246
Последний ответ 25.07.2021, 12:03:20
от ShopES