Новости Joomla

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

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

  • Живу я здесь
  • 2465
  • 336 / 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

  • Живу я здесь
  • 2465
  • 336 / 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

  • Живу я здесь
  • 2465
  • 336 / 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

Ответов: 110
Просмотров: 116419
Последний ответ 14.11.2022, 11:22:52
от stitch808
После установки CjBlog появляются ошибки

Автор Se

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

Автор Acme

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

Автор h.vitaly

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

Автор dr_aybolit

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