Example #1
0
 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;
 }
Example #2
0
 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');
 }