您现在的位置是:首页 > 教程 > pbootcms教程pbootcms教程
pbootcms增加foreach指定内容按条件遍历(默认逗号条件)方法
听蓉2023-01-29 23:57:28pbootcms教程已有人查阅
导读通过二次开发新增的这个标签可以实现按指定的字符进行遍历,不填写char参数默认使用逗号进行分割遍历。如上图:图中想把abcd用竖线进行分割,也可以使用逗号或其他自定义符号。
通过二次开发新增的这个标签可以实现按指定的字符进行遍历,不填写char参数默认使用逗号进行分割遍历。如上图:图中想把abcd用竖线进行分割,也可以使用逗号或其他自定义符号
然后前台用新增的标签进行遍历调用
1、打开appshomecontrollerParserController.php,搜索“$this->parserReplaceKeyword”,在其下方增加:
2、继续在之前文件里搜索“解析生成内容链接”,在其上方增加:
1、默认方式,用逗号进行分割,例如:定制表里填写了a,b,c,然后通过遍历组合生成搜索链接。
二次开发文件随着在线更新后会消失,在线更新后需要手动重新二次开发。
然后前台用新增的标签进行遍历调用
{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异常提示 Undefined constant"PAGE
- pbootcms百度推送提示not_same_site的解决方法
- pbootcms后台图片上传提示”上传失败:存储目录创建失败!的解决
- pbootcms实现php+ajax文件上传
- pbootcms系统QQ邮箱接受邮件的配置方法
- pbootcms修改权限后仍然提示“会话目录写入权限不足”的解决方法
- lamp分离部署安装pbootcms
- pbootcms符合SEO优化的目录结构分析
- pbootcms提示“未检测到您服务器环境的sqlite3数据库扩展”的解
- pbootcms升级PHP版本需要注意什么
- pbootcms判断用户是否登录并排除Cookie过期但仍显示已登录的方法
- pbootcms加载类文件时错误类名【core\\basic\\Kernel】的解决方
随机图文
-
pbootcms设置发布内容不自动提取缩略图
有时候发布文章的时候文章内容图片不适合网站模板的缩略图,pbootcms如何设置在后台发布内容后不自动提取缩略图? 使用Notepad++全局查找 无缩略图时 -
pbootcms伪静态配置写法(IIS7、Apache、Nginx)
pbootcms伪静态配置教程,针对IIS7环境、Apache环境、Nginx环境不同的配置方案,配置程序伪静态后URL中将不再包含index.php,整个地址更美观。 -
pbootcms免费商用吗?pbootcms以后会收费吗?
PbootCMS是PHP内核且号称长久开源免费的PHP建站系统,是一套强悍的可免费商用的PHP CMS源码,能够满足各类企业网站开发建设的需要。 -
pbootcms提示错误信息“未检测到您服务器环境的sqlite3数据库扩展...”
未检测到您服务器环境的sqlITe3数据库扩展,请检查php.ini中是否已经开启该扩展!另外,检测到您服务器支持pdo_sqlite扩展,您也可以修改数据库配置连接驱动为pdo_sqlite试试!
留言与评论 (共有 条评论) |
大家在看
相关标签
大家喜欢
- pbootcms授权中文域名获取授权码域名格式有误
- pbootcms网站容易被攻击被黑吗?
- pbootcms标签pboot:list当前文档高亮代码实例
- pbootcms搜索或筛选条件中带~/、特殊字符被过滤的解决方法
- pbootcms程序运行异常: Modulo by zero,位置:/data/home/qxu1539590078/htdocs/co
- pbootcms标题和摘要描述字数怎么控制
- pbootcms可以免费商用吗?pbootcms免费开源的吗?
- pbootcms网站被篡改怎么办
- pbootcms后台增加点击数自定义修改的实现方法
- pbootcms标签PbootCMS模版如何调用tag标签