发布日期: 2022-12-09 | 来源: 智软设计工作室
PbCMS判断是否有子栏目,二级三级四级都能判断,
然后可以写不同的样式运行,
默认的 {pboot:nav parent={sort:scode}}不行,空的时候不执行,查出来数据[nav:soncount] 也是0,很奇怪。
但是这个头部导航是可以,列表的时候有的要调用目录和内容一起循环,没有子子目录直接内容,就一直实现不了,看了个csdn技术人改的,我这里发布下,
一般网站是用不到。比较复杂层级用这个好解决
原文如下:
例如内页左侧栏,假如每个一级栏目下都有二级栏目,就用下面这个可以应付。
{pboot:nav parent={sort:pcode} } {/pboot:nav}
但是遇到一些情况,例如某些一级栏目没有子类就需要用到这个方法了(以及我遇到了这个,)
一、/apps/home/model/ParserModel.php中加入hasSon方法

//当前栏目是否有子栏目,有返回1, 没有返回-1
public function hasSon($scode){
$pcode = $scode;
$result = parent::table('ay_content_sort a')
->where('a.pcode='.$pcode)
->find();
if($result){
return 1;
}else{
return -1;
}
}
二、/apps/home/controller/ParserControlle.php中加入标签代码,共2处

上图加在
// 解析指定分类标签
里面的,注意直接搜“按查询数据条数循环”会有很多个,所以要先定位好
case 'hasSon': //判断指定分类是否有子分类
$hasSon = $this->model->hasSon($value->scode);
$one_html = str_replace($matches2[0][$j],$hasSon,$one_html);
break;
2.public function parserSortLabel($content, $sort)中,添加如下代码

case 'hasSon' ://判断当前分类是否有子分类
$hasSon = $this->model->hasSon($sort->scode);
$content = str_replace($matches[0][$i],$hasSon,$content);
break;
下面是使用例子,注意
{pboot:sort scode={sort:scode}}
{pboot:if({sort:hasSon}>0)}
{pboot:nav parent={sort:scode}}
<a href="[nav:link]" class="onelist textover" {pboot:2if('[nav:scode]'=='{sort:scode}')}style='font-weight:normal'{/pboot:2if}>[nav:name]</a>
{/pboot:nav}
{else}
{pboot:nav parent={sort:pcode}}
<a href="[nav:link]" class="onelist textover" {pboot:2if('[nav:scode]'=='{sort:scode}')}style='font-weight:normal'{/pboot:2if}>[nav:name]</a>
{/pboot:nav}
{/pboot:if}
{/pboot:sort}
我自己运用的标签代码
{pboot:sort scode={sort:scode}}
{pboot:if({sort:hasSon}>0)}
{pboot:nav parent={sort:scode}}
<div class="cpzxitemtit2"><a href="[nav:link]" class="act">[nav:name]</a></div>
<ul class="cpzxitemul">
{pboot:list scode=[nav:scode] num=18 order=date}
<!-- [list:id] -->
<li>
<a href="[list:link]">
<img src="[list:ico]" alt="[list:title]">
<div class="textbox">
<div class="name">[list:ext_cpxh]</div>
<div class="subname">[list:ext_cpxl]</div>
</div>
</a>
</li>
{/pboot:list}
</ul>
{/pboot:nav}
{else}
<ul class="cpzxitemul">
{pboot:list scode={sort:scode} num=18 order=date}
<!-- [list:id] -->
<li>
<a href="[list:link]">
<img src="[list:ico]" alt="[list:title]">
<div class="textbox">
<div class="name">[list:ext_cpxh]</div>
<div class="subname">[list:ext_cpxl]</div>
</div>
</a>
</li>
{/pboot:list}
</ul>
{/pboot:if}
{/pboot:sort}
2024-07-03
.navbar .search-right .pop-overlay:target { visibility: visible; opacity: 1;} 自己可以举一反三。 <a href="#search" class="btn search-btn" title="search"><span class="fas fa-search me-2" aria-hidden="tru
阅读更多2024-01-07
当你使用EditPlus进行批量替换时,可以使用以下正则表达式来匹配和删除HTML文件中的注释:正则表达式模式:<!--[\s\S]*?-->上面用表达式可以批量替换文件里的所有注释
阅读更多2023-07-10
最近制作网站的时候。因为搜索的地图比较多。比如常见问题和经销商,产品,都得搜索,用传统得{pboot:scaction} 他都会到统一得页面去,当然页可以用 <input type="hidden" name="searchtpl" value="1.html" >,置顶不同模板,但是置顶后。有些问题。比如栏目封面和
阅读更多2022-12-22
阿里云虚拟主机和阿里云云服务器phpmailer无法发邮件,提示无法链接,解决办法如下:如果是虚拟主机。进入控制面板:启用PHP函数fsockopen。如果是云服务器也要启用这个函数。和网络策略里ssl端口465
阅读更多2021-11-10
测试可用,就是要加载下js网站自动翻译成英文谷歌翻译api,怎样能打开网站默认自动翻译,设置Cookie就行了。也可以做多语言翻译。去除隐藏css选择项就行了。<style><!--隐藏长条-->.goog-te-banner-frame.skiptranslate { display: none !important;} body { top: 0px !important; }.goog-t
阅读更多2023-06-12
ueditor解决video标签设置封面问题自动显示视频第一秒为封面电脑端比较好解决修改ueditor.all.js找到 case 'video' 约在17609行左右:版本不一样所在行不一样,修改其下面的preload="none"修改为:preload="metadata"或者删除都可以,自己多测试一下确保正常即可!搜索对应修
阅读更多2025-03-07
pb有时候给栏目加权限的时候,提示权限默认是2s页面跳转 有点麻烦,甚至不想要这个跳转提示页面按照路径找到 /core/function/handle.php把默认的1000改成你需要的时间 1000是1s 0就是直接跳转,但是0在直接跳转时候 会有一个页面马上闪烁跳转,可以把这个页面暂时display: none。找到路径 /core/template/error.html找到之后
阅读更多2021-10-18
直接写id参数当前页的{content:id}就行了。{pboot:tags id={content:id}} <a href='[tags:link]' class='tagc[field:highlight /]'>[tags:text]</a>{/pboot:tags}
阅读更多