You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 18:55:32