Новости Joomla

Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1

Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1

👩‍💻 Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1. Это релиз, в который включены уже проверенные изменения, но ещё очень многие исправления и улучшения ждут своей очереди. Joomla следит за качеством и безопасностью своего кода и каждое изменение должно быть успешно протестировано как минимум ещё двумя участниками сообщества. Разработка Joomla ведётся на платформе GitHub.Филипп Уолтон (Philip Walton) - один из разработчиков, кто активно вносит свой вклад в ядро Joomla. Он уже несколько месяцев посвящает свои послеполуденные часы пятницы работе с Joomla и предлагает присоединиться к нему. 📆 Пятница, 30 мая 2025, с 15:00 до 17:00 по UTC (Лондон) - с 18:00 до 20:00 по Москве.В чате Google Meet Филипп готов помочь с тестированием тем, кто будет делать это в первый раз. А так же он подготовил список лёгких Pull Request, которые можно протестировать довольно быстро. Чем больше тестов будет проведено сейчас, тем меньше ошибок вылезет потом. На данный момент 148 (уже 147 на момент написания заметки) PR на GitHub Joomla ждут тестирования.👩‍💻 Open to all. All together.Также вам поможет сделать первые шаги это видео.GitHub JoomlaДа, это вечер пятницы. Но тестирование занимает порой минут 15, а доброе дело сделано. Просто убедитесь, что разработчик чего-то не пропустил и всё работает как ожидается.#joomla #joomla6 #community

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

CityCat

  • Осваиваюсь на форуме
  • 40
  • 0 / 0
  • Алексей Voronov
Здравствуйте!

Помогите, пожалуйста.

Перешел на Joomla 3.9.3 c версии 2.5.28
Два модуля отдают ошибки и не отдают контент.

Warning: Invalid argument supplied for foreach() in C:\Os\OSPanel\domains\land\components\com_content\models\articles.php on line 587

Warning: Invalid argument supplied for foreach() in C:\Os\OSPanel\domains\land\modules\mod_pj_quickportfolio\helper.php on line 66
Warning: Invalid argument supplied for foreach() in C:\Os\OSPanel\domains\land\modules\mod_pj_quickportfolio\tmpl\default.php on line 206

Первый файл articles.php он вообще из дистрибутива один в один. Тут я вообще не понял прикол.

А вот во вторых двух такая конструкция:

helper.php

Код

// Retrieve Content
$items = $model->getItems();

foreach ($items as &$item) {
$item->readmore = (trim($item->fulltext)!= '');
$item->slug = $item->id.':'.$item->alias;
$item->catslug = $item->catid.':'.$item->category_alias;

if ($access || in_array($item->access, $authorised))
{
// We know that user has the privilege to view the article
$item->link = JRoute::_(ContentHelperRoute::getArticleRoute($item->slug, $item->catid));
$item->linkText = JText::_('MOD_ARTICLES_NEWS_READMORE');
}
else {
$item->link = JRoute::_('index.php?option=com_user&view=login');
$item->linkText = JText::_('MOD_ARTICLES_NEWS_READMORE_REGISTER');
}

$item->introtext = JHtml::_('content.prepare', $item->introtext);

//new
/*if (!$params->get('image')) {
$item->introtext = preg_replace('/<img[^>]*>/', '', $item->introtext);
}*/

$results = $app->triggerEvent('onContentAfterDisplay', array('com_content.article', &$item, &$params, 1));
$item->afterDisplayTitle = trim(implode("\n", $results));

$results = $app->triggerEvent('onContentBeforeDisplay', array('com_content.article', &$item, &$params, 1));
$item->beforeDisplayContent = trim(implode("\n", $results));
}

return $items;

и default.php

Код

<ul id="stage<?php echo $specialinstance; ?>">
<?php foreach ($list as $item) :?>
<li class="pjqs_item" data-tags="<?php $filtering_link$item->metakey; ?><?php echo $filtering_link;?>">


<?php  // let's deal with the intro length and image paths here
$maxintro = trim( $params->get('maxintro'),'' );
$ini=strpos(strtolower($item->introtext),'<img');  // handle the images
if ($ini === false) $img = '';
else {
$ini = strpos($item->introtext,'src="',$ini)+5;
$fin = strpos($item->introtext,'"',$ini);
$img = substr($item->introtext,$ini,$fin-$ini);
$fin = strpos($item->introtext,'>',$fin);
}
$intro=strip_tags($item->introtext);
if (!empty($maxintro)) $intro = trim(substr($intro,0,$maxintro)).'...';
if($pic_pathtype =="1")
{
$image_path=JURI::base( true )."/".$img;
} else {
$image_path="/".$site_subfolder."/".$img;
}
?>

<?php if ($params->get('pic_link')) {?><a href="<?php echo $item->link;?>" class="title"><?php }?>

<?php if ($pjqp_show_details == '1'){?>
<div class="captioner">
<div class="captioner-inner">
<?php if ($pj_show_title == '1'){?><h1><span class="title stack" style="color: <?php echo $params->get('pj_title_color', '');?>;<?php echo $params->get('pj_title_css', '');?>"><?php if ($pj_link_title == '1'){?><a href="<?php echo $item->link;?>" title="<?php echo $item->title;?>" style="color: <?php echo $params->get('pj_title_color', '');?>;<?php echo $params->get('pj_title_css', '');?>"><?php };?><?php echo $item->title;?><?php if ($pj_link_title == '1'){?></a><?php };?></span></h1><?php };?>
<?php if ($pj_show_date == '1'){?><span class="_created_date" style="color: <?php echo $params->get('pj_date_color');?>;<?php echo $params->get('pj_date_color', '');?>;<?php echo $params->get('pj_date_css', '');?>"><?php echo JText::sprintf('COM_CONTENT_CREATED_DATE_ON', JHtml::_('date',$item->created, JText::_($pj_date_format))); ?></span><?php };?>
<?php if ($pj_show_author == '1'){?>
<?php $author =  $item->author; ?>
<?php $author = ($item->created_by_alias ? $item->created_by : $author);?>
<span class="_created_by" style="color:<?php echo $params->get('pj_author_color');?>;<?php echo $params->get('pj_author_css', '');?>"><?php echo 'by '; echo $author; ?></span>
<?php };?>
<?php if ($pj_show_intro == '1'){?><span class="introtext stack" style="color: <?php echo $params->get('pj_intro_color');?>;<?php echo $params->get('pj_introtext_css', '');?>"><?php echo $intro;?></span><?php };?>
<?php if ($pj_show_readmore == '1'){?><a class="readon" style="color:<?php echo $params->get('pj_readmore_color');?>;<?php echo $params->get('readmore_css', '');?>" href="<?php echo $item->link;?>" title="<?php echo $item->title;?>"><?php echo $params->get('pj_readmoretext', 'Read More...');?></a><?php }?>

</div>
</div>
<?php };?>

<?php if ($params->get('pic_link')) {?>
<a href="<?php echo $item->link;?>"><?php }?>
<img class="nolazy <?php echo $params->get('pj_img_classes');?>" style="<?php echo $params->get('pic_css'); ?>" alt="<?php echo $item->title;?>"
<?php if ($params->get('resize_image')){?>
<?php if ($pj_use_mod_rewrite == '1'){?>
src="<?php echo $module_base;?>scripts/slir/w<?php echo $params->get('pic_width'); ?>-h<?php echo $params->get('pic_height'); ?>-c<?php echo $params->get('pic_ratio'); ?><?php echo $image_path;?>"
<?php } else { ?>
src="<?php echo $module_base;?>scripts/slir/w=<?php echo $params->get('pic_width'); ?>&amp;h=<?php echo $params->get('pic_height'); ?>&amp;c=<?php echo $params->get('pic_ratio'); ?>&amp;i=<?php echo $image_path;?>"<?php }?> />
<?php } else { ?>
src="<?php echo $image_path;?>"
<?php };?>
<?php if ($params->get('pic_link')) {?></a>
<?php }?>

</li>
<?php endforeach; ?>
</ul>
*

sivers

  • Живу я здесь
  • 2578
  • 357 / 0
Попробуйте добавить в код проверку, чтоб получилось так:
Код
if(is_array($items)) foreach ($items as &$item) {
(для первого файла)
и
Код
<?php if(is_array($list)) foreach ($list as $item) :?>
(для второго)
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

CityCat

  • Осваиваюсь на форуме
  • 40
  • 0 / 0
  • Алексей Voronov
Две ошибки пропали, но ни чего не выводит из контента, просто пусто.

На \components\com_content\models\articles.php on line 587 все равно ругается.
*

sivers

  • Живу я здесь
  • 2578
  • 357 / 0
а что в 587 строке? раз убрались ошибки, значит $list и $items там - не массивы. надо смотреть почему не выбрались объекты.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

CityCat

  • Осваиваюсь на форуме
  • 40
  • 0 / 0
  • Алексей Voronov
Там стандартный articles.php из дистрибутива

Код

// Convert the parameter fields into objects.
foreach ($items as &$item)
{
$articleParams = new Registry($item->attribs);

// Unpack readmore and layout params
$item->alternative_readmore = $articleParams->get('alternative_readmore');
$item->layout               = $articleParams->get('layout');

$item->params = clone $this->getState('params');

/**
* For blogs, article params override menu item params only if menu param = 'use_article'
* Otherwise, menu item params control the layout
* If menu item is 'use_article' and there is no article param, use global
*/
if (($input->getString('layout') === 'blog') || ($input->getString('view') === 'featured')
|| ($this->getState('params')->get('layout_type') === 'blog'))
{
// Create an array of just the params set to 'use_article'
$menuParamsArray = $this->getState('params')->toArray();
$articleArray    = array();

foreach ($menuParamsArray as $key => $value)
{
if ($value === 'use_article')
*

Support

  • Захожу иногда
  • 114
  • 1 / 2
-
« Ответ #5 : 21.02.2019, 21:22:00 »
-
« Последнее редактирование: 17.07.2019, 12:56:47 от Support »
*

CityCat

  • Осваиваюсь на форуме
  • 40
  • 0 / 0
  • Алексей Voronov
это модуль квик портфолио надо переделывать под Joomla 3

Без обид, это ответ типа "Поставь другую CMS".

Разбирался бы в PHP, там ведь где-то всего одну строку подправить надо, чую  ^-^
*

CityCat

  • Осваиваюсь на форуме
  • 40
  • 0 / 0
  • Алексей Voronov
Те ошибки ушли. Контент не появился пока (с надеждой =).
Что-то колдовал и вот что получил теперь:

Notice: Undefined variable: items in \modules\mod_pj_quickportfolio\helper.php on line 63

Notice: Undefined variable: items in \modules\mod_pj_quickportfolio\helper.php on line 92

Код
<?php
/**
 * @version $Id: helper.php 20196 2011-01-09 02:40:25Z ian $
 * @package Joomla.Site
 * @subpackage mod_articles_latest
 * [member=126442]copyright[/member] Copyright (C) 2005 - 2011 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;

require_once JPATH_SITE.'/components/com_content/helpers/route.php';

jimport('joomla.application.component.model');

JModelLegacy::addIncludePath(JPATH_SITE.'/components/com_content/models');

abstract class modpjQuickPortfolioHelper
{
public static function getList(&$params)
{
$app = JFactory::getApplication();
$db = JFactory::getDbo();

// Get an instance of the generic articles model
$model = JModelLegacy::getInstance('Articles', 'ContentModel', array('ignore_request' => true));

// Set application parameters in model
$model->setState("params", JFactory::getApplication()->getParams());

// Set the filters based on the module params
$model->setState('list.start', 0);
$model->setState('list.limit', (int) $params->get('count', 5));

$model->setState('filter.published', 1);

$model->setState('list.select', 'a.fulltext, a.id, a.title, a.alias, a.title_alias, a.introtext, a.state, a.catid, a.created, a.created_by, a.created_by_alias,' .
' a.modified, a.modified_by,a.publish_up, a.publish_down, a.attribs, a.metadata, a.metakey, a.metadesc, a.access,' .
' a.hits, a.featured,' .
' LENGTH(a.fulltext) AS readmore');
// Access filter
$access = !JComponentHelper::getParams('com_content')->get('show_noauth');
$authorised = JAccess::getAuthorisedViewLevels(JFactory::getUser()->get('id'));
$model->setState('filter.access', $access);

// Category filter
$model->setState('filter.category_id', $params->get('catid', array()));

// Filter by language
$model->setState('filter.language',$app->getLanguageFilter());

// Set ordering
$ordering = $params->get('ordering', 'a.publish_up');
$model->setState('list.ordering', $ordering);
if (trim($ordering) == 'rand()') {
$model->setState('list.direction', '');
} else {
$model->setState('list.direction', 'DESC');
}

// Retrieve Content
if(is_array($items)) foreach ($items->getItems() as $item) {
$item->readmore = (trim($item->fulltext)!= '');
$item->slug = $item->id.':'.$item->alias;
$item->catslug = $item->catid.':'.$item->category_alias;

if ($access || in_array($item->access, $authorised))
{
// We know that user has the privilege to view the article
$item->link = JRoute::_(ContentHelperRoute::getArticleRoute($item->slug, $item->catid));
$item->linkText = JText::_('MOD_ARTICLES_NEWS_READMORE');
}
else {
$item->link = JRoute::_('index.php?option=com_user&view=login');
$item->linkText = JText::_('MOD_ARTICLES_NEWS_READMORE_REGISTER');
}

$item->introtext = JHtml::_('content.prepare', $item->introtext);

//new
/*if (!$params->get('image')) {
$item->introtext = preg_replace('/<img[^>]*>/', '', $item->introtext);
}*/

$results = $app->triggerEvent('onContentAfterDisplay', array('com_content.article', &$item, &$params, 1));
$item->afterDisplayTitle = trim(implode("\n", $results));

$results = $app->triggerEvent('onContentBeforeDisplay', array('com_content.article', &$item, &$params, 1));
$item->beforeDisplayContent = trim(implode("\n", $results));
}
return $items;
}
}
*

sivers

  • Живу я здесь
  • 2578
  • 357 / 0
Тут уже надо поэтапно смотреть что где формируется. Можете скинуть доступ - посмотрю (если не страдаете параноей - я б не скинул).
Либо самостоятельно. Откройте для начала модель articles.php, найдите там function getListQuery(), пролистайте в конец функции и перед строчкой return $query; сделайте вывод запроса в файл или на экран (если сайт запущен в тестовом режиме).
В файл можно так:
Код
file_get_contents(__FILE__.'.query.log', print_r($query,1));
return $query;
Затем обновите страницу сайта (проблемную) и посмотрите на файлы - рядом с articles.php должен появиться articles.php.query.log, а внутри - скль-запрос, которым вытягиваются данные. В нем надо поменять префиксы #_ на ваши и через phpMyAdmin (например) или adminer попробовать его выполнить и посмотреть вернет ли данные. Потом идти дальше исходя из результата.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Support

  • Захожу иногда
  • 114
  • 1 / 2
-
« Ответ #9 : 22.02.2019, 14:28:17 »
-
« Последнее редактирование: 17.07.2019, 12:56:32 от Support »
*

Support

  • Захожу иногда
  • 114
  • 1 / 2
-
« Ответ #10 : 22.02.2019, 14:47:29 »
-
« Последнее редактирование: 17.07.2019, 12:56:18 от Support »
*

CityCat

  • Осваиваюсь на форуме
  • 40
  • 0 / 0
  • Алексей Voronov
Re: Ошибки Warning: Invalid argument supplied for foreach() in
« Ответ #11 : 22.02.2019, 14:51:06 »
Попробую поставить аналог.

Согласен с Support - лучше оригинал пользовать.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как решить такую ошибку Warning: Invalid argument supplied for foreach()

Автор uniqcle

Ответов: 112
Просмотров: 120136
Последний ответ 21.08.2024, 14:04:08
от sivers
После установки CjBlog появляются ошибки

Автор Se

Ответов: 1
Просмотров: 1216
Последний ответ 25.06.2017, 13:42:35
от Se
b2jcontact - warning

Автор Acme

Ответов: 0
Просмотров: 1808
Последний ответ 16.03.2017, 11:28:40
от Acme
Widgetkit 2 ошибки при установке

Автор h.vitaly

Ответов: 3
Просмотров: 1984
Последний ответ 27.06.2015, 13:26:41
от h.vitaly
Как решить проблему с ошибкой Warning: Invalid argument supplied for foreach() in M:\home\ofsayt\www?

Автор dr_aybolit

Ответов: 2
Просмотров: 1353
Последний ответ 18.05.2015, 22:00:04
от passer