PHP建站技术分享-从入门到精通PHP建站技术分享-从入门到精通PHP建站技术分享-从入门到精通

QQ:420220301 微信/手机:150-3210-7690
当前位置:首页 > CMS教程 > 易优CMS

eyoucms,获取当前栏目的父栏目id, getallpid方法

管理员 2024-11-20
易优CMS
383

在 EyouCms 中,可以通过以下几种方法来获取当前栏目的父栏目 id:

使用系统变量

EyouCms 在模板中提供了一些系统变量,其中$field.parent_id可以直接获取当前栏目的父栏目 id。例如,在栏目列表模板(如list.htm)或内容页模板(如show.htm)中,可以直接使用以下代码来输出当前栏目的父栏目 id:


{$field.parent_id}

通过 PHP 代码获取

在某些情况下,如果需要更灵活地处理父栏目 id,可以在模板中使用 PHP 代码来获取。在 EyouCms 的模板中,可以使用{php}标签来嵌入 PHP 代码。以下是一个示例,用于获取并输出当前栏目的父栏目 id:


{php}

$parent_id = $this->field['parent_id'];

echo $parent_id;

{/php}

这种方法可以在需要对父栏目 id 进行进一步判断或处理时使用,例如根据父栏目 id 来显示不同的内容或执行不同的操作。

自定义函数获取

如果在多个地方都需要获取当前栏目的父栏目 id,并且可能需要进行一些复杂的逻辑处理,可以考虑创建一个自定义函数来实现。首先,在/include/extend.func.php文件中添加以下自定义函数:


function get_parent_id($channel, $catid) {

    $parent_id = 0;

    $sql = "SELECT parent_id FROM ".$channel."_category WHERE catid = ".$catid;

    $result = $GLOBALS['dsql']->GetOne($sql);

    if ($result) {

        $parent_id = $result['parent_id'];

    }

    return $parent_id;

}

然后,在模板中可以使用以下方式调用这个自定义函数来获取父栏目 id:


{php}

$parent_id = get_parent_id('arctype', $field['catid']);

echo $parent_id;

{/php}

其中,arctype是 EyouCms 中文章模型的频道标识,你需要根据实际使用的频道模型来修改这个参数。通过自定义函数,可以将获取父栏目 id 的逻辑封装起来,提高代码的可维护性和复用性。

注意事项

在使用这些方法时,要确保当前页面处于正确的栏目上下文环境中,否则可能无法获取到正确的当前栏目信息。

如果 EyouCms 的版本有更新或模板结构有变化,可能需要相应地调整获取父栏目 id 的方法和代码。

对于多语言站点或具有复杂栏目结构的站点,需要更加仔细地测试和验证获取父栏目 id 的功能,以确保其在各种情况下的正确性和稳定性。

eyoucms,获取当前栏目的父栏目id, getallpid方法

自带方法如下:

public function getAllPid($id, $is_RecycleBin = false)

    {

        $seo_pseudo = 0;

        //查看多站点开关是否开启

        $city_switch_on = config('city_switch_on');

        if ($city_switch_on) {

            $seo_pseudo = tpCache('seo.seo_pseudo');

        }

        //获取当前站点信息

        $site = get_home_site();

        $args = [THEME_STYLE, $id, $is_RecycleBin, $seo_pseudo, request()->baseFile(), $city_switch_on, $site];

        $cacheKey = 'arctype-'.md5(__CLASS__.__FUNCTION__.json_encode($args));

        $data = cache($cacheKey);

        if (empty($data)) {

            $data = array();

            $typeid = $id;

            $map = [

                'status'    => 1,

            ];

            if (false === $is_RecycleBin) $map['is_del'] = 0;

            $arctype_list = Db::name('Arctype')->field('*, id as typeid')

                ->where($map)

                ->getAllWithIndex('id');

            if (isset($arctype_list[$typeid])) {

                // 第一个先装起来

                $arctype_list[$typeid]['typeurl'] = $this->getTypeUrl($arctype_list[$typeid]);

                $data[$typeid] = $arctype_list[$typeid];

            } else {

                return $data;

            }


            while (true)

            {

                $typeid = $arctype_list[$typeid]['parent_id'];

                if($typeid > 0 && $id != $typeid){

                    if (isset($arctype_list[$typeid])) {

                        $arctype_list[$typeid]['typeurl'] = $this->getTypeUrl($arctype_list[$typeid]);

                        $data[$typeid] = $arctype_list[$typeid];

                    }

                } else {

                    break;

                }

            }

            $data = array_reverse($data, true);


            cache($cacheKey, $data, null, "arctype");

        }


        return $data;

    }



希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 iCMS, Fastadmin, ClassCMS, LeCMS, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。

相关推荐

扫码关注

qrcode

QQ交谈

回顶部