/**
* Count the modules in the given position
*
* @param string $positionName The position to use
* @param boolean $withContentOnly Count only a modules which actually has a content
*
* @return integer Number of modules found
*
* @since 1.7.0
*/
public function countModules(string $positionName, bool $withContentOnly = false)
{
if (isset(parent::$_buffer['modules'][$positionName]) && parent::$_buffer['modules'][$positionName] === false) {
return 0;
}
$modules = ModuleHelper::getModules($positionName);
if (!$withContentOnly) {
return \count($modules);
}
// Now we need to count only modules which actually have a content
$result = 0;
$renderer = $this->loadRenderer('module');
foreach ($modules as $module) {
if (empty($module->contentRendered)) {
$renderer->render($module, ['contentOnly' => true]);
}
if (trim($module->content) !== '') {
$result++;
}
}
return $result;
}