pbootcms增加foreach標簽指定內容按條件遍歷(默認逗號條件)
作者:PB模板網
時(shi)間:2022-04-13 12:54:18
瀏覽:2032
點贊(zan):208
二開導讀
通(tong)過二開新增(zeng)的這個標簽可(ke)以實現按指定(ding)的字符進行(xing)遍(bian)(bian)歷(li),不填寫char參數(shu)默認使用逗(dou)號進行(xing)分割遍(bian)(bian)歷(li)。如下圖(tu):
圖中想把abcd用(yong)豎線進行(xing)分割,也可以使(shi)用(yong)逗(dou)號或其他(ta)自定義符號
然后前臺用新增的標簽(qian)進行遍歷(li)調(diao)用
{pboot:foreach str={label:hotkey} char=|} <a href="/search/?keyword=[foreach:name]" target="_blank" rel="nofollow">[foreach:name]</a> {/pboot:foreach}
修改步驟
1、打開(kai)\apps\home\controller\ParserController.php,搜索(suo)“$this->parserReplaceKeyword”,在其下(xia)方增(zeng)加:
$content = $this->parserForeachLabel($content); // 指定隨意內容按條件遍歷 @pbhtml
2、繼續在之前文件里搜索“解析生成內容鏈接”,在其上方增加:
// 解析指定隨意內容遍歷,支持設定分隔符 @pbhtml
public function parserForeachLabel($content)
{
$pattern = '/\{pboot:foreach(\s+[^}]+)?\}([\s\S]*?)\{\/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}
注意事項
二開文件(jian)隨著在線更新后會消失,在線更新后需要手動(dong)重新二開。
文章鏈接://bilinxiyi.cn/448.html
文章標題:pbootcms增加foreach標簽指定內容按條件遍歷(默認逗號條件)
文章版權:PB模板網 (bilinxiyi.cn) 所發布的內容,部分為原創文章,轉載請注明來源,網絡轉載文章如有侵權請聯系我們!
本文最后更新發布于
文章標題:pbootcms增加foreach標簽指定內容按條件遍歷(默認逗號條件)
文章版權:PB模板網 (bilinxiyi.cn) 所發布的內容,部分為原創文章,轉載請注明來源,網絡轉載文章如有侵權請聯系我們!
本文最后更新發布于
2022-12-11 20:07:50
,某些文章具有時效性,若有錯誤或已失效,請在下方留言或聯系客服: