public function get_url($data) { if ($data['urllink']) { $url = $data['urllink']; } elseif ($data['urlrule']) { $url = dr_page_url($data); } else { if ($data['module']) { $mod = $this->ci->get_cache('module-' . SITE_ID . '-' . $data['module']); $url = $mod['url'] . 'index.php?c=page&id=' . $data['id']; } else { $url = SITE_URL . 'index.php?c=page&id=' . $data['id']; } } return $url; }
protected function _get_page($id, $dir, $pid) { if (!$id && !$dir) { $this->goto_404_page(lang('m-195')); } // 单页缓存 $PAGE = $this->dcache->get('page-' . SITE_ID); $page = APP_DIR ? $PAGE['data'][APP_DIR] : $PAGE['data']['index']; // 获取单页ID $id = !$id && $dir ? $PAGE['dir'][$dir] : $id; // 无法通过目录找到栏目时,尝试多及目录 if (!$id && $dir && $page) { foreach ($page as $t) { if ($t['urlrule']) { $rule = $this->get_cache('urlrule', $t['urlrule']); if ($rule['value']['catjoin'] && strpos($dir, $rule['value']['catjoin'])) { $dir = trim(strchr($dir, $rule['value']['catjoin']), $rule['value']['catjoin']); if (isset($PAGE['dir'][$dir])) { $id = $PAGE['dir'][$dir]; break; } } } } } unset($PAGE); // 当前单页的数据 $data = $page[$id]; if (!$data || !$data['show']) { $this->goto_404_page(dr_lang('m-196', $id)); } // 单页验证是否存在子栏目 if ($data['child'] && $data['getchild']) { $temp = explode(',', $data['childids']); if (isset($temp[1]) && $page[$temp[1]]) { $id = $temp[1]; $data = $page[$id]; } } $my = $this->dcache->get('page-field-' . SITE_ID); $my = $my ? array_merge($this->field, $my) : $this->field; $data = $this->field_format_value($my, $data, $pid); // 格式化输出自定义字段 $join = SITE_SEOJOIN ? SITE_SEOJOIN : '_'; $title = $data['title'] ? $data['title'] : dr_get_page_pname($id, $join); if (isset($data['content_title']) && $data['content_title']) { $title = $data['content_title'] . $join . $title; } // 栏目下级或者同级栏目 $related = $parent = array(); if ($data['pid']) { foreach ($page as $t) { if (!$t['show']) { continue; } if ($t['pid'] == $data['pid']) { $related[] = $t; if ($data['child']) { $parent = $data; } else { $parent = $page[$t['pid']]; } } } } elseif ($data['child']) { $parent = $data; foreach ($page as $t) { if (!$t['show']) { continue; } if ($t['pid'] == $data['id']) { $related[] = $t; } } } else { $parent = $data; if ($page) { foreach ($page as $t) { if (!$t['show']) { continue; } $related[] = $t; } } } // 格式化配置 $data['setting'] = dr_string2array($data['setting']); // 存储id和缓存参数 $this->_id = $data['id']; $this->nocache = (int) $data['setting']['nocache']; $this->template->assign($data); $this->template->assign(array('parent' => $parent, 'related' => $related, 'urlrule' => $this->mobile ? dr_mobile_page_url($data['module'], $data['id'], '{page}') : dr_page_url($data, '{page}'), 'meta_title' => $title, 'meta_keywords' => trim($data['keywords'] . ',' . SITE_KEYWORDS, ','), 'meta_description' => $data['description'])); $this->template->display($data['template'] ? $data['template'] : 'page.html'); }