您现在的位置是:首页 > cms教程 > PbootCMS教程PbootCMS教程

pbootcms增加foreach指定内容按条件遍历(默认逗号条件)方法

听蓉2023-01-29PbootCMS教程已有人查阅

导读通过二次开发新增的这个标签可以实现按指定的字符进行遍历,不填写char参数默认使用逗号进行分割遍历。如上图:图中想把abcd用竖线进行分割,也可以使用逗号或其他自定义符号。

通过二次开发新增的这个标签可以实现按指定的字符进行遍历,不填写char参数默认使用逗号进行分割遍历。如上图:图中想把abcd用竖线进行分割,也可以使用逗号或其他自定义符号
然后前台用新增的标签进行遍历调用
{pboot:foreach str={label:hotkey} char=|}
<a href="/search/?keyword=[foreach:name]" target="_blank" rel="nofollow">[foreach:name]</a>
{/pboot:foreach}
修改步骤
1、打开appshomecontrollerParserController.php,搜索“$this->parserReplaceKeyword”,在其下方增加:
$content=$this->parserForeachLabel($content);//指定随意内容按条件遍历

2、继续在之前文件里搜索“解析生成内容链接”,在其上方增加:
// 解析指定随意内容遍历,支持设定分隔符
public function parserForeachLabel($content)
{
    $pattern = '/{pboot:foreach(s+[^}]+)?}([sS]*?){/pboot:foreach}/';
    $pattern2 = '/[foreach:([w]+)(s+[^]]+)?]/';
    if (preg_match_all($pattern, $content, $matches)) {
        $count = count($matches[0]);
        for ($i = 0; $i < $count; $i ++) {
            // 获取调节参数
            $params = $this->parserParam($matches[1][$i]);
            $str = '';
            $char = ',';
            
            if (! self::checkLabelLevel($params)) {
                $content = str_replace($matches[0][$i], '', $content);
                continue;
            }
            
            // 分离参数
            foreach ($params as $key => $value) {
                switch ($key) {
                    case 'num':
                        $num = $value;
                        break;
                    case 'str':
                        $str = $value;
                        break;
                    case 'char':
                        if ($value) $char = $value;
                        break;
                }
            }

            // 无数据直接替换为空并跳过
            if (! $str) {
                $content = str_replace($matches[0][$i], '', $content);
                continue;
            }
            
            // 匹配到内部标签
            if (preg_match_all($pattern2, $matches[2][$i], $matches2)) {
                $count2 = count($matches2[0]); // 循环内的内容标签数量
            } else {
                $count2 = 0;
            }
            
            $out_html = '';
            $key = 1;
            $arr = explode($char,$str);
            foreach ($arr as $value) { // 按查询图片条数循环
                $one_html = $matches[2][$i];
                for ($j = 0; $j < $count2; $j ++) { // 循环替换数据
                    $params = $this->parserParam($matches2[2][$j]);
                    switch ($matches2[1][$j]) {
                        case 'n':
                            $one_html = str_replace($matches2[0][$j], $this->adjustLabelData($params, $key) - 1, $one_html);
                            break;
                        case 'i':
                            $one_html = str_replace($matches2[0][$j], $this->adjustLabelData($params, $key), $one_html);
                            break;
                        case 'name':
                            $one_html = str_replace($matches2[0][$j], $this->adjustLabelData($params, $value), $one_html);
                            break;
                    }
                }
                $key ++;
                $out_html .= $one_html;
                if (isset($num) && $key > $num) {
                    unset($num);
                    break;
                }
            }
            $content = str_replace($matches[0][$i], $out_html, $content);
        }
    }
    return $content;
}
调用标签
1、默认方式,用逗号进行分割,例如:定制表里填写了a,b,c,然后通过遍历组合生成搜索链接。
{pboot:foreach str={label:hotkey}}
<a href="/search/?keyword=[foreach:name]" target="_blank" rel="nofollow">[foreach:name]</a>
{/pboot:foreach}
2、其他分割符合,使用char参数,如:|
{pboot:foreach str={label:hotkey} char=|}
<a href="/search/?keyword=[foreach:name]" target="_blank" rel="nofollow">[foreach:name]</a>
{/pboot:foreach}
注意事项
二次开发文件随着在线更新后会消失,在线更新后需要手动重新二次开发。

本文标签:

很赞哦! ()

相关源码

  • (自适应)绿色宠物门诊兽医行业网站模板该绿色清爽风格网站模板专为宠物门诊与兽医诊所设计,基于PbootCMS内核开发,采用响应式布局确保手机、PC等多端体验一致,帮助宠物医疗机构高效构建线上服务平台。查看源码
  • Wordpress博客新闻主题在线商店平台betheme 21.5.6版BeTheme是一款功能丰富的WordPress主题模板,专注于为各行业提供网站建设解决方案。该模板支持WooCommerce电子商务功能,能够快速搭建在线商店平台,同时适用于博客、新闻资讯类网站建设。自2014年发布以来,该模板已经获得大量用户的使用验证。查看源码
  • (PC+WAP)楼承板建筑工程合金钢铁材料pbootcms网站源码下载为楼承板生产商及建筑工程企业设计的响应式网站模板,采用PbootCMS内核开发,同步适配电脑与移动设备浏览。通过模块化结构展示工程案例、产品参数等专业内容,帮助建筑建材企业建立标准化数字展示平台,提升行业专业形象。查看源码
  • (自适应响应式)英文外贸电子产品手机配件网站pbootcms模板专业级外贸网站模板基于PbootCMS内核开发,为电子产品跨境贸易企业设计。采用响应式布局技术,确保电脑、平板、手机等设备访问时自动适配显示效果。数据实时同步管理,一次编辑全平台生效。查看源码
  • (自适应)文案文档作文写作word资源网站模板下载本模板基于PbootCMS系统深度开发,针对电影解说、文案分享类网站的特殊需求设计。采用响应式布局技术,确保在手机端和桌面端都能呈现专业的内容展示效果,帮助运营者高效管理影视解说资源。查看源码
  • (自适应响应式)HTML5电脑手机电子数码产品配件pbootcms模板下载本模板为电脑配件、手机配件及数码周边产品企业设计,基于PbootCMS内核开发。采用现代化响应式布局,适配各类移动设备,能够专业展示各类电子产品配件参数、应用场景和技术特点。模板内置多种产品展示模块,满足不同类型配件企业的展示需求。查看源码
分享笔记 (共有 篇笔记)
验证码: