Ошибка 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; ?>
Другие вопросы по тегам