function do_embed_lazy($html = '') { if (is_exit() || empty($html)) { return $html; } $patern_ifr = '/<\\s*iframe\\s+(?<attr>[^>]*)/i'; if (preg_match($patern_ifr, $html, $ifr)) { $attr_arr = parse_attr($ifr['attr']); if (!$attr_arr || empty($attr_arr['src']) || LAZY_PLACEHOLDER === $attr_arr['src'] || !empty($attr_arr['data-src'])) { return $html; } if (array_key_exists('class', $attr_arr)) { $attr_arr['class'] = do_class($attr_arr['class']); } else { $attr_arr['class'] = LAZY_CLASS; } $attr_arr['data-src'] = $attr_arr['src']; $attr_arr['src'] = LAZY_PLACEHOLDER; $html = str_replace($ifr['attr'], trim(attributes_to_string($attr_arr)), $html); get_assets(); } return $html; }
/** * 获取配置列表 * @return array 配置数组 */ public function lists() { $map['status'] = array('gt', 0); $list = $this->where($map)->field('name,value,type')->select(); foreach ($list as $key => $val) { if ($val['type'] === 'array') { //数组类型需要解析配置的value $config[$val['name']] = parse_attr($val['value']); } else { $config[$val['name']] = $val['value']; } } return $config; }
/** * 获取某个分组的配置参数 */ public function group($tab = 1) { //根据分组获取配置 $map['status'] = array('egt', 0); //禁用和正常状态 $map['group'] = array('eq', $tab); $data_list = D('SystemConfig')->where($map)->order('sort asc,id asc')->select(); //构造表单名、解析options foreach ($data_list as &$data) { $data['name'] = 'config[' . $data['name'] . ']'; $data['options'] = parse_attr($data['options']); } //使用FormBuilder快速建立表单页面。 $builder = new \Common\Builder\FormBuilder(); $builder->title('系统设置')->setTablist(C('CONFIG_GROUP_LIST'))->setCurrentTab($tab)->setUrl(U('groupSave'))->setExtraItems($data_list)->display(); }
/** * 获取配置列表与ThinkPHP配置合并 * @return array 配置数组 * @author jry <*****@*****.**> */ public function lists() { $map['status'] = array('eq', 1); $list = $this->where($map)->field('name,value,type')->select(); foreach ($list as $key => $val) { switch ($val['type']) { case 'array': $config[$val['name']] = parse_attr($val['value']); break; case 'checkbox': $config[$val['name']] = explode(',', $val['value']); break; default: $config[$val['name']] = $val['value']; break; } } return $config; }
/** * 用户列表 * @author jry <*****@*****.**> */ public function index($user_type = 1) { // 获取用户类型的搜索字段 $user_type_info = D('User/Type')->find($user_type); $con = array(); $con['user_type'] = $user_type; $con['id'] = array('in', $user_type_info['list_field']); $query_attribute = D('User/Attribute')->where($con)->select(); foreach ($query_attribute as &$value) { $value['options'] = parse_attr($value['options']); // 构造搜索条件 if ($_GET[$value['name']] !== 'all' && $_GET[$value['name']]) { switch ($value['type']) { case 'radio': $tmp = $_GET[$value['name']]; $map[$value['name']] = $tmp; break; case 'select': $tmp = $_GET[$value['name']]; $map[$value['name']] = $tmp; break; case 'checkbox': $tmp = $_GET[$value['name']]; $map[$value['name']] = array('like', array($tmp, $tmp . ',%', '%,' . $tmp . ',%', '%,' . $tmp), 'OR'); break; } } } // 获取用户基本信息 $map['status'] = 1; $map['user_type'] = $user_type; $p = !empty($_GET["p"]) ? $_GET['p'] : 1; $user_object = D('Admin/User'); $base_table = C('DB_PREFIX') . 'admin_user'; $extend_table = C('DB_PREFIX') . 'user_' . strtolower($user_type_info['name']); $user_list = $user_object->page($p, 16)->where($map)->order('create_time desc')->join($extend_table . ' ON ' . $base_table . '.id = ' . $extend_table . '.uid', 'LEFT')->select(); $page = new Page($user_object->where($map)->join($extend_table . ' ON ' . $base_table . '.id = ' . $extend_table . '.uid', 'LEFT')->count(), 16); $this->assign('page', $page->show()); $this->assign('query_attribute', $query_attribute); $this->assign('meta_title', '用户'); $this->assign('user_list', $user_list); $this->display(); }
/** * 行为扩展的执行入口必须是run * @author jry <*****@*****.**> */ public function run(&$content) { // 安装模式下直接返回 if (defined('BIND_MODULE') && BIND_MODULE === 'Install') { return; } // 允许访问模块列表加上安装的功能模块 $module_name_list = D('Admin/Module')->where(array('status' => 1))->getField('name', true); $module_allow_list = array_merge(C('MODULE_ALLOW_LIST'), $module_name_list); C('MODULE_ALLOW_LIST', $module_allow_list); // URL_MODEL必须在app_init阶段就从数据库读取出来应用 // 不然系统就会读取config.php中的配置导致后台的配置失效 $config['URL_MODEL'] = D('Admin/Config')->getFieldByName('URL_MODEL', 'value'); $config['APP_SUB_DOMAIN_DEPLOY'] = D('Admin/Config')->getFieldByName('APP_SUB_DOMAIN_DEPLOY', 'value'); if ($config['APP_SUB_DOMAIN_DEPLOY']) { $config['APP_SUB_DOMAIN_RULES'] = parse_attr(D('Admin/Config')->getFieldByName('APP_SUB_DOMAIN_RULES', 'value')); } C($config); }
/** * 栏目分组 * @author jry <*****@*****.**> */ public function group_list() { return parse_attr(C('article_config.group_list')); }
/** * 编辑文章 * @author jry <*****@*****.**> */ public function edit($id) { $this->is_login(); //获取文档信息 $document_info = D('Document')->detail($id); //获取当前分类 $category_info = D('Category')->find($document_info['cid']); if (!$category_info['post_auth']) { $this->error('该分类禁止投稿'); } $doc_type = D('DocumentType')->find($category_info['doc_type']); $field_sort = json_decode($doc_type['field_sort'], true); $field_group = parse_attr($doc_type['field_group']); //获取文档字段 $map = array(); $map['status'] = array('eq', '1'); $map['show'] = array('eq', '1'); $map['doc_type'] = array('in', '0,' . $category_info['doc_type']); $attribute_list = D('DocumentAttribute')->where($map)->select(); //解析字段options $new_attribute_list = array(); foreach ($attribute_list as $attr) { if ($attr['name'] == 'cid') { $con = array(); $con['group'] = $category_info['group']; $con['doc_type'] = $category_info['doc_type']; $attr['options'] = select_list_as_tree('Category', $con); } else { $attr['options'] = parse_attr($attr['options']); } $new_attribute_list[$attr['id']] = $attr; $new_attribute_list[$attr['id']]['value'] = $document_info[$attr['name']]; } //表单字段排序及分组 if ($field_sort) { $new_attribute_list_sort = array(); foreach ($field_sort as $k1 => &$v1) { $new_attribute_list_sort[0]['type'] = 'group'; $new_attribute_list_sort[0]['options']['group' . $k1]['title'] = $field_group[$k1]; foreach ($v1 as $k2 => $v2) { $new_attribute_list_sort[0]['options']['group' . $k1]['options'][] = $new_attribute_list[$v2]; } } $new_attribute_list = $new_attribute_list_sort[0]['options']['group1']['options']; } //使用FormBuilder快速建立表单页面。 $builder = new \Common\Builder\FormBuilder(); $builder->setMetaTitle('编辑文章')->setPostUrl(U('update'))->addFormItem('id', 'hidden', 'ID', 'ID')->setExtraItems($new_attribute_list)->setFormData($document_info)->setTemplate('_Builder/formbuilder_user')->display(); }
/** * 编辑模型 * @author jry <*****@*****.**> */ public function edit($id) { if (IS_POST) { $_POST['list_field'] = implode(',', $_POST['list_field']); $document_type_object = D('DocumentType'); $data = $document_type_object->create(); if ($data) { if ($document_type_object->save() !== false) { $this->success('更新成功', U('index')); } else { $this->error('更新失败'); } } else { $this->error($document_type_object->getError()); } } else { $document_type_info = D('DocumentType')->find($id); $document_type_field_group = parse_attr($document_type_info['field_group']); $document_type_field_sort = json_decode($document_type_info['field_sort'], true); //获取文档字段 $map['status'] = array('eq', '1'); $map['show'] = array('eq', '1'); $map['doc_type'] = array('in', '0,' . $id); $attribute_list = D('DocumentAttribute')->where($map)->select(); //获取用于列表显示字段表单复选框的内容 $map['doc_type'] = array('eq', $id); $attribute_list_checkbox = select_list_as_tree('DocumentAttribute', $map); //解析字段 $new_attribute_list = array(); foreach ($attribute_list as $attr) { $new_attribute_list[$attr['id']] = $attr['title']; } //构造拖动排序options foreach ($document_type_field_sort as $key => $val) { $field[$key]['title'] = $document_type_field_group[$key]; $temp = array(); foreach ($val as $val2) { if ($new_attribute_list[$val2]) { $temp[$val2] = $new_attribute_list[$val2]; } unset($new_attribute_list[$val2]); } $field[$key]['field'] = $temp; } //计算未排序字段分组的key $unsort_key = array_pop(array_keys($field)) + 1; //未排序字段 if ($new_attribute_list) { $field[$unsort_key]['title'] = "未排序"; $field[$unsort_key]['field'] = $new_attribute_list; } //使用FormBuilder快速建立表单页面。 $builder = new \Common\Builder\FormBuilder(); $builder->setMetaTitle('编辑模型')->setPostUrl(U('edit'))->addFormItem('id', 'hidden', 'ID', 'ID')->addFormItem('name', 'text', '模型名称', '模型名称')->addFormItem('title', 'text', '模型标题', '模型标题')->addFormItem('main_field', 'radio', '主要字段', '该模型的主要字段,如:文章的标题,商品的名称,用于前台列表及搜索列表显示', $attribute_list_checkbox)->addFormItem('list_field', 'checkbox', '列表显示字段', '后台文档列表需要显示字段及搜索字段,如:文章的标题,商品的名称', $attribute_list_checkbox)->addFormItem('field_group', 'textarea', '字段分组', '字段分组')->addFormItem('field_sort', 'board', '字段排序', '字段排序', $field)->addFormItem('icon', 'icon', '图标', '模型图标')->addFormItem('sort', 'num', '排序', '用于显示的顺序')->setFormData(D('DocumentType')->find($id))->display(); } }
/** * 编辑文章 * @author jry <*****@*****.**> */ public function edit($id) { //获取文档信息 $document_info = D('Document')->detail($id); //分类权限检测 if (!D('UserGroup')->checkCategoryAuth($document_info['cid'])) { $this->error('权限不足!'); } if (IS_POST) { //更新文档 $document_object = D('Document'); $result = $document_object->update(); if (!$result) { $this->error($document_object->getError()); } else { $this->success('更新成功', U('Document/index', array('cid' => I('post.cid')))); } } else { //获取当前分类 $category_info = D('Category')->find($document_info['cid']); $doc_type = D('DocumentType')->find($category_info['doc_type']); $field_sort = json_decode($doc_type['field_sort'], true); $field_group = parse_attr($doc_type['field_group']); //获取文档字段 $map['status'] = array('eq', '1'); $map['show'] = array('eq', '1'); $map['doc_type'] = array('in', '0,' . $category_info['doc_type']); $attribute_list = D('DocumentAttribute')->where($map)->select(); //解析字段options $new_attribute_list = array(); foreach ($attribute_list as $attr) { if ($attr['name'] == 'cid') { $con['group'] = $category_info['group']; $con['doc_type'] = $category_info['doc_type']; $con['status'] = array('egt', 0); $attr['options'] = select_list_as_tree('Category', $con); } else { $attr['options'] = parse_attr($attr['options']); } $new_attribute_list[$attr['id']] = $attr; $new_attribute_list[$attr['id']]['value'] = $document_info[$attr['name']]; } //表单字段排序及分组 if ($field_sort) { $new_attribute_list_sort = array(); foreach ($field_sort as $k1 => &$v1) { $new_attribute_list_sort[0]['type'] = 'group'; $new_attribute_list_sort[0]['options']['group' . $k1]['title'] = $field_group[$k1]; foreach ($v1 as $k2 => $v2) { $new_attribute_list_sort[0]['options']['group' . $k1]['options'][] = $new_attribute_list[$v2]; } } $new_attribute_list = $new_attribute_list_sort; } //使用FormBuilder快速建立表单页面。 $builder = new \Common\Builder\FormBuilder(); $builder->setMetaTitle('编辑文章')->setPostUrl(U('edit'))->addFormItem('id', 'hidden', 'ID', 'ID')->setExtraItems($new_attribute_list)->setFormData($document_info)->display(); } }
/** * 获取某个分组的配置参数 * @author jry <*****@*****.**> */ public function group($group = 1) { //根据分组获取配置 $map['status'] = array('egt', '0'); // 禁用和正常状态 $map['group'] = array('eq', $group); $data_list = D('Config')->where($map)->order('sort asc,id asc')->select(); // 设置Tab导航数据列表 $config_group_list = C('CONFIG_GROUP_LIST'); // 获取配置分组 foreach ($config_group_list as $key => $val) { $tab_list[$key]['title'] = $val; $tab_list[$key]['href'] = U('group', array('group' => $key)); } // 构造表单名、解析options foreach ($data_list as &$data) { $data['name'] = 'config[' . $data['name'] . ']'; $data['options'] = parse_attr($data['options']); } // 使用FormBuilder快速建立表单页面。 $builder = new \Common\Builder\FormBuilder(); $builder->setMetaTitle('系统设置')->SetTabNav($tab_list, $group)->setPostUrl(U('groupSave'))->setExtraItems($data_list)->display(); }
/** * 获取文章详情 * @author jry <*****@*****.**> */ public function detail($id, $map = null) { //获取基础表信息 $con = array(); $con['id'] = $id; $con['status'] = array('egt', 1); // 正常、隐藏两种状态是可以访问的 if ($map) { $con = array_merge($con, $map); } $info = $this->where($con)->find(); if (!is_array($info)) { $this->error = '文章被禁用或已删除!'; return false; } // 阅读量加1 $result = $this->where(array('id' => $id))->SetInc('view'); // 获取作者信息 $info['user'] = get_user_info($info['uid']); // 获取发帖数量 $info['user']['post_count'] = $this->where(array('uid' => $info['uid']))->count(); // 获取文档模型相关信息 $doc_type_info = D($this->moduleName . '/Type')->find($info['category_info']['doc_type']); if ($doc_type_info['system']) { $this->error = '文档类型错误!'; return false; } $info['doc_type_info'] = $doc_type_info; // 根据文章模型获取扩展表的息 $extend_table_object = D($this->moduleName . '/' . $this->moduleName . ucfirst($doc_type_info['name'])); $extend_data = $extend_table_object->find($id); // 基础信息与扩展信息合并 if (is_array($extend_data)) { $info = array_merge($info, $extend_data); } // 获取筛选字段 $con = array(); $con['id'] = array('in', $doc_type_info['filter_field']); $attribute_object = D($this->moduleName . '/Attribute'); $filter_field_list = $attribute_object->where($con)->select(); $new_filter_field_list = array(); foreach ($filter_field_list as $key => $val) { $val['options'] = parse_attr($val['options']); $new_filter_field_list[$val['name']] = $val; } $info['filter_field_list'] = $new_filter_field_list; // 给文档主要字段赋值,如:文章标题、商品名称 $type_main_field = $attribute_object->getFieldById($doc_type_info['main_field'], 'name'); $info['main_field'] = $info[$type_main_field]; // 下载文件地址加密 if ($info['file']) { $file_list = explode(',', $info['file']); foreach ($file_list as &$file) { $file = D('Home/Upload')->find($file); $uid = is_login(); if ($uid) { $file['token'] = \Think\Crypt::encrypt($file['md5'], user_md5($uid), 3600); } else { $file['token'] = 'please login'; } } $info['file_list'] = $file_list; } // 获取上一篇和下一篇文章信息 $info['previous'] = $this->getPrevious($info); $info['next'] = $this->getNext($info); return $info; }
/** * 用户修改信息 * @author jry <*****@*****.**> */ public function profile() { if (IS_POST) { // 强制设置用户ID $uid = $this->is_login(); $_POST['uid'] = $uid; $_POST = format_data(); // 获取用户信息 $user_object = D('User/User'); $user_info = $user_object->find($uid); // 保存昵称 if (I('post.nickname')) { $result = $user_object->where(array('id' => $uid))->setField('nickname', I('post.nickname')); if ($result === false) { $this->error('昵称修改失败' . $user_object->getError()); } } else { $this->error('请填写昵称'); } // 保存扩展信息 $type = $user_info['user_type']; $map['user_type'] = array('eq', $type); $count = D('User/Attribute')->where($map)->count(); if ($count) { $user_type_name = D('User/Type')->where(array('id' => $user_info['user_type']))->getField('name'); $user_extend_object = D('User' . ucfirst($user_type_name)); $extend_data = $user_extend_object->create(); if (!$extend_data) { $this->error($user_extend_object->getError()); } $extend_info = $user_extend_object->find($uid); if ($extend_info) { $result = $user_extend_object->save($extend_data); } else { $result = $user_extend_object->add($extend_data); } if ($result === false) { $this->error('扩展信息修改失败' . $user_extend_object->getError()); } else { $this->success('信息修改成功'); } } } else { // 获取当前用户 $user_object = D('User/User'); $user_info = $user_object->detail($this->is_login()); $type = $user_info['user_type']; $user_type_info = D('User/Type')->find($type); // 获取扩展字段 $map['user_type'] = array('eq', $type); $attribute_list[$type] = D('User/Attribute')->where($map)->order('id asc')->select(); // 解析字段options $new_attribute_list_sort['user']['type'] = 'group'; if ($attribute_list[$type]) { // 增加昵称表单 $nick['name'] = 'nickname'; $nick['title'] = '昵称'; $nick['type'] = 'text'; $nick['value'] = $user_info['nickname']; $new_attribute_list[1][0] = $nick; foreach ($attribute_list[$type] as $attr) { $attr['options'] = parse_attr($attr['options']); $new_attribute_list[$type][$attr['id']] = $attr; $new_attribute_list[$type][$attr['id']]['value'] = $user_info[$attr['name']]; } $new_attribute_list_sort['user']['options']['group_extend']['title'] = '完善' . $user_type_info['title'] . '信息'; $new_attribute_list_sort['user']['options']['group_extend']['options'] = $new_attribute_list[$type]; } // 使用FormBuilder快速建立表单页面。 $builder = new \Common\Builder\FormBuilder(); $builder->setMetaTitle('修改信息')->setPostUrl(U(''))->setExtraItems($new_attribute_list_sort)->setTemplate(C('USER_CENTER_FORM'))->display(); } }
/** * 编辑类型 * @author jry <*****@*****.**> */ public function edit($id) { if (IS_POST) { $document_type_object = D('DocumentType'); $data = $document_type_object->create(); if ($data) { if ($document_type_object->save() !== false) { $this->success('更新成功', U('index')); } else { $this->error('更新失败'); } } else { $this->error($document_type_object->getError()); } } else { $document_type_info = D('DocumentType')->find($id); $document_type_field_group = parse_attr($document_type_info['field_group']); $document_type_field_sort = json_decode($document_type_info['field_sort'], true); //获取文档字段 $map['status'] = array('eq', '1'); $map['show'] = array('eq', '1'); $map['doc_type'] = array('in', '0,' . $id); $attribute_list = D('DocumentAttribute')->where($map)->select(); //解析字段 $new_attribute_list = array(); foreach ($attribute_list as $attr) { $new_attribute_list[$attr['id']] = $attr['title']; } //构造拖动排序options foreach ($document_type_field_sort as $key => $val) { $field[$key]['title'] = $document_type_field_group[$key]; $temp = array(); foreach ($val as $val2) { if ($new_attribute_list[$val2]) { $temp[$val2] = $new_attribute_list[$val2]; } unset($new_attribute_list[$val2]); } $field[$key]['field'] = $temp; } //计算未排序字段分组的key $unsort_key = array_pop(array_keys($field)) + 1; //未排序字段 if ($new_attribute_list) { $field[$unsort_key]['title'] = "未排序"; $field[$unsort_key]['field'] = $new_attribute_list; } //使用FormBuilder快速建立表单页面。 $builder = new \Common\Builder\FormBuilder(); $builder->title('编辑类型')->setUrl(U('edit'))->addItem('id', 'hidden', 'ID', 'ID')->addItem('name', 'text', '类型名称', '类型名称')->addItem('title', 'text', '类型标题', '类型标题')->addItem('field_group', 'textarea', '字段分组', '字段分组')->addItem('icon', 'icon', '图标', '类型图标')->addItem('sort', 'num', '排序', '用于显示的顺序')->addItem('field_sort', 'board', '字段排序', '字段排序', $field)->setFormData(D('DocumentType')->find($id))->display(); } }
function input($attributes) { $output = ''; if (isset($attributes) && !empty($attributes)) { $attributes = parse_attr($attributes); } $output .= '<input ' . $attributes . '/>'; return $output; }
/** * 用户修改信息 * @author jry <*****@*****.**> */ public function profile() { if (IS_POST) { // 强制设置用户ID $uid = $this->is_login(); $_POST['uid'] = $uid; //解析数据类似复选框类型的数组型值 foreach ($_POST as $key => $val) { if (is_array($val)) { $_POST[$key] = implode(',', $val); } else { if (check_date_time($val)) { $_POST[$key] = strtotime($val); } else { if (check_date_time($val, 'Y-m-d H:i')) { $_POST[$key] = strtotime($val); } else { if (check_date_time($val, 'Y-m-d')) { $_POST[$key] = strtotime($val); } } } } } // 获取用户信息 $user_object = D('User/User'); $user_info = $user_object->find($uid); // 保存信息 $type = $user_info['user_type']; $map['user_type'] = array('eq', $type); $count = D('User/Attribute')->where($map)->count(); if ($count) { $user_type_name = D('User/Type')->where(array('id' => $user_info['user_type']))->getField('name'); $user_extend_object = M('User' . ucfirst($user_type_name)); $extend_data = $user_extend_object->create(); $extend_info = $user_extend_object->find($uid); if ($extend_info) { $result = $user_extend_object->save($extend_data); } else { $result = $user_extend_object->add($extend_data); } if ($result === false) { $this->error('扩展信息修改失败' . $user_extend_object->getError()); } else { $this->success('信息修改成功'); } } } else { // 获取当前用户 $user_object = D('User/User'); $user_info = $user_object->detail($this->is_login()); $type = $user_info['user_type']; $user_type_info = D('User/Type')->find($type); // 获取扩展字段 $map['user_type'] = array('eq', $type); $attribute_list[$type] = D('User/Attribute')->where($map)->order('id asc')->select(); // 解析字段options $new_attribute_list_sort['user']['type'] = 'group'; if ($attribute_list[$type]) { foreach ($attribute_list[$type] as $attr) { $attr['options'] = parse_attr($attr['options']); $new_attribute_list[$type][$attr['id']] = $attr; $new_attribute_list[$type][$attr['id']]['value'] = $user_info[$attr['name']]; } $new_attribute_list_sort['user']['options']['group_extend']['title'] = $user_type_info['title'] . '信息'; $new_attribute_list_sort['user']['options']['group_extend']['options'] = $new_attribute_list[$type]; } // 使用FormBuilder快速建立表单页面。 $builder = new \Common\Builder\FormBuilder(); $builder->setMetaTitle('修改信息')->setPostUrl(U(''))->setExtraItems($new_attribute_list_sort)->setTemplate('form')->display(); } }
/** * 文章信息 * @author jry <*****@*****.**> */ public function detail($id) { $map['status'] = array('egt', 1); // 正常、隐藏两种状态是可以访问的 $info = D('Article')->where($map)->detail($id); if (!$info) { $this->error('您访问的文档已禁用或不存在'); } $result = D('Article')->where(array('id' => $id))->SetInc('view'); // 阅读量加1 // 获取文档所属分类详细信息 $category_info = D('Category')->find($info['cid']); // 获取该分类绑定文档模型的主要字段 $type_object = D('Type'); $attribute_object = D('Attribute'); $doc_type_info = $type_object->find($category_info['doc_type']); $type_main_field = $type_object->getFieldById($category_info['doc_type'], 'main_field'); $type_main_field = $attribute_object->getFieldById($doc_type_info['main_field'], 'name'); // 获取筛选字段 $con = array(); $con['id'] = array('in', $doc_type_info['filter_field']); $filter_field_list = $attribute_object->where($con)->select(); $new_filter_field_list = array(); foreach ($filter_field_list as $key => $val) { $val['options'] = parse_attr($val['options']); $new_filter_field_list[$val['name']] = $val; } // 给文档主要字段赋值,如:文章标题、商品名称 $info['main_field'] = $info[$type_main_field]; if ($info['file']) { $file_list = explode(',', $info['file']); foreach ($file_list as &$file) { $file = D('Home/Upload')->find($file); $uid = is_login(); if ($uid) { $file['token'] = \Think\Crypt::encrypt($file['md5'], user_md5($uid), 3600); } else { $file['token'] = 'please login'; } } $info['file_list'] = $file_list; } // 设置文档显示模版 if (C('CURRENT_THEME')) { if ($category_info['detail_template']) { $template = 'article/' . $info['detail_template']; } else { $template = 'article/detail_default'; } } else { $template = $category_info['detail_template'] ? 'Home/article/' . $category_info['detail_template'] : 'Home/article/detail_default'; } // 获取作者信息 $info['user'] = get_user_info($info['uid']); $this->assign('info', $info); $this->assign('_current_category', $category_info); $this->assign('_filter_field_list', $new_filter_field_list); $this->assign('_search_url', U('index', array('cid' => $category_info['id']))); // 构造搜索地址 $this->assign('meta_title', $info['main_field']); $this->assign('meta_keywords', $info['tags'] ?: C('WEB_SITE_KEYWORD')); $this->assign('meta_description', $info['abstract'] ?: C('WEB_SITE_DESCRIPTION')); $this->assign('meta_cover', $info['cover']); Cookie('__forward__', $_SERVER['REQUEST_URI']); $this->display($template); }
/** * @see Walker::start_lvl() * @since 3.0.0 * * @param string $output Passed by reference. Used to append additional content. * @param int $depth Depth of page. Used for padding. */ public function start_lvl(&$output, $depth = 0, $parent_id, $args = array()) { $indent = str_repeat("\t", $depth); $lvl = $depth + 1; $attrs = parse_attr(get_post_meta($parent_id, '_child_menu_attrs', TRUE)); $attrs .= $args->menu_attr ? parse_attr($args->menu_attr) : ''; $attrs .= $args->submenu_attr ? parse_attr($args->submenu_attr) : ''; $classes = get_post_meta($parent_id, '_child_menu_classes', TRUE); $classes .= esc_attr(apply_filters('submenu_classes', $args->submenu_class)); $allowed_tags = apply_filters('avaliable_submenu_container', array('div', 'span')); if (in_array($args->submenu_container, $allowed_tags)) { $submenu_wrap_attr = $args->submenu_container_attr ? parse_attr($args->submenu_container_attr) : ''; $output .= '<' . $args->submenu_container . ' class="' . esc_attr($args->submenu_container_class) . '" ' . $submenu_wrap_attr . '>'; } $output .= "\n{$indent}<ul role=\"menu\" class=\"sub-menu-lvl-{$lvl} dropdown-menu {$classes}\" {$attrs} >\n"; }