Ошибка PHP в joomla Предупреждение: count(): параметр должен быть массивом или объектом, который реализует Countable
Я работаю над своей первой веб-страницей joomla (в настоящее время использую xampp v3.2.3, php 7.3.2 и joomla 3.9.13). Я использую расширение Rockprocket (с темой слайдера все в порядке), но использую тему галереи мозаики. получить это сообщение об ошибке"Предупреждение: count(): параметр должен быть массивом или объектом, который реализует Countable в [...]\roksprocket\layouts\mosaic\themes\gallery\index.php в строке 19"
Я новичок почти во всем, поэтому я купил шаблон и теперь заполняю его модулями. Это очень весело, но на странице появляется сообщение об ошибке:(
Надеюсь, у тебя есть решение:)
<?php
/**
* @version $Id: index.php 10885 2013-05-30 06:31:41Z btowles $
* @author RocketTheme http://www.rockettheme.com
* @copyright Copyright (C) 2007 - 2015 RocketTheme, LLC
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
*/
/**
* @var $layout RokSprocket_Layout_Mosaic
* @var $items RokSprocket_Item[]
* @var $parameters RokCommon_Registry
* @var $pages int
*/
?>
<div class="sprocket-mosaic" data-mosaic="<?php echo $parameters->get('module_id'); ?>">
<div class="sprocket-mosaic-g-overlay"><div class="css-loader-wrapper"><div class="css-loader"></div></div></div>
--- line 19 --- <?php if ((count($tagging) > 1) || count($ordering)): ?>
<div class="sprocket-mosaic-g-header">
<?php if (count($tagging) > 1): ?>
<div class="sprocket-mosaic-g-filter">
<ul>
<?php foreach($tagging as $key => $filter): ?>
<li class="<?php echo $key;?><?php echo $key == 'all' ? ' active' : '';?>" data-mosaic-filterby="<?php echo $key; ?>"><?php echo $filter; ?></li>
<?php endforeach; ?>
</ul>
</div>
<?php endif; ?>
<div class="clear"></div>
</div>
<?php endif; ?>
<ul class="sprocket-mosaic-g-container sprocket-mosaic-g-columns-<?php echo $parameters->get('mosaic_columns');?>" data-mosaic-items>
<?php
$index = 0;
foreach ($items as $item){
echo $layout->getThemeContext()->load('item.php', array('item'=> $item,'parameters'=>$parameters,'index'=>$index));
$index++;
}
?>
</ul>
<?php if ($pages > 1): ?>
<div class="sprocket-mosaic-g-loadmore" data-mosaic-loadmore>
<span class="loadmore-more">
<span class="loadmore-text"><?php rc_e('ROKSPROCKET_MOSAIC_LOADMORE'); ?></span>
<span class="loadmore-info"><?php rc_e('ROKSPROCKET_MOSAIC_LOADMORE_TIP'); ?></span>
</span>
<span class="loadmore-all">
<span class="loadmore-text"><?php rc_e('ROKSPROCKET_MOSAIC_LOADALL'); ?></span>
</span>
</div>
<?php endif; ?>
</div>
2 ответа
Замените эту строку:
<?php if (count($tagging) > 1): ?>
с этим:
<?php if (is_array($tagging) && count($tagging) > 1): ?>
Эта ошибка возникла из-за того, что вы изменили $tagging
не является матрицей или массивом. Пытатьсяecho $tagging
и вы узнаете, является ли эта переменная матрицей или массивом.
<div class="sprocket-mosaic-g-header">
<p><?php echo $tagging ?></p> // See what $tagging is returning
<?php if (count($tagging) > 1): ?>
<div class="sprocket-mosaic-g-filter">
<ul>
<?php foreach($tagging as $key => $filter): ?>
<li class="<?php echo $key;?><?php echo $key == 'all' ? ' active' : '';?>" data-mosaic-filterby="<?php echo $key; ?>"><?php echo $filter; ?></li>
<?php endforeach; ?>
</ul>
</div>
<?php endif; ?>
<div class="clear"></div>
</div>
<?php endif; ?>