Joomla+PHP:首页指定位置插入特定div的实现问题
问题解决:首页指定位置插入特定div仅显示一次
需求概述
仅在首页的第二个位置的第一个项目后插入特定div标签,且该div仅显示一次,目前已实现首页判断,但无法控制div仅出现一次。
原始代码
<?php $i = 0; $s = 0; $t = count($items); foreach ($items as $item) : ?> <?php if ($i % $cols == 0): /* start new row */ ?> <div class="row-articles equal-height"> <?php endif ?> <div class="col col-xs-12 col-sm-<?php echo $col_width ?> magazine-item"> <?php echo JATemplateHelper::render($item, 'joomla.content.intro', array('item' => $item, 'params' => $aparams)); ?> </div> <?php if (++$i % $cols == 0 || $i == $t): /* close row */ ?> </div> <?php endif ?> <?php endforeach; ?>
此前尝试代码
<?php $i = 0; $s = 0; $app = JFactory::getApplication(); $menu = $app->getMenu(); $t = count($items); foreach ($items as $item) : ?> <?php if ($i % $cols == 0): /* start new row */ ?> <div class="row-articles equal-height"> <?php endif ?> <div class="col col-xs-12 col-sm-<?php echo $col_width ?> magazine-item"> <?php echo JATemplateHelper::render($item, 'joomla.content.intro', array('item' => $item, 'params' => $aparams));?> </div> <?php $k = count(array($item)); if ($menu->getActive() == $menu->getDefault() && $i == 2): echo '<div class="col col-xs-12 col-sm-' . $col_width . ' magazine-item"><div id="nativendo-homepage-' . ++$s . $k . '"></div></div>' ; endif ?> <?php if (++$i % $cols == 0 || $i == $t): /* close row */ ?> </div> <?php endif ?> <?php endforeach; ?>
解决方案代码
<?php $i = 0; $s = 0; $app = JFactory::getApplication(); $menu = $app->getMenu(); $isHomepage = ($menu->getActive() == $menu->getDefault()); $inserted = false; // 标记是否已插入目标div $t = count($items); foreach ($items as $item) : ?> <?php if ($i % $cols == 0): /* start new row */ ?> <div class="row-articles equal-height"> <?php endif ?> <div class="col col-xs-12 col-sm-<?php echo $col_width ?> magazine-item"> <?php echo JATemplateHelper::render($item, 'joomla.content.intro', array('item' => $item, 'params' => $aparams)); ?> </div> <?php // 满足首页、第二个位置(索引为1,$i从0开始计数)、未插入过三个条件时执行插入 if ($isHomepage && $i == 1 && !$inserted): ?> <div class="col col-xs-12 col-sm-<?php echo $col_width ?> magazine-item"> <div id="nativendo-homepage-1"></div> </div> <?php $inserted = true; // 设置标记,避免重复插入 ?> <?php endif ?> <?php if (++$i % $cols == 0 || $i == $t): /* close row */ ?> </div> <?php endif ?> <?php endforeach; ?>
关键逻辑说明
- 新增
$inserted布尔变量,初始为false,用于记录目标div是否已插入 - 修正位置判断:因为
$i从0开始计数,第二个位置的项目对应的索引是1,而非之前的2 - 只有同时满足是首页、当前项目索引为1、未插入过div三个条件时,才插入目标div,并将
$inserted设为true,确保后续循环不再重复插入
内容的提问来源于stack exchange,提问作者djdlife
相关产品推荐
相关产品推荐

