在 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 的功能,以确保其在各种情况下的正确性和稳定性。
自带方法如下:
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修复,程序杀毒,插件定制都可以提供最佳解决方案。