Powered by CodeIgniter

Советы и решения

(55)
10
10 голосов
Решаем проблемы вместе и передаем друг другу полезные знания.

После переноса сайта с LiveStreet CMS на CoGear при помощи конвертера обнаружилась общая проблема (т.е. она будет у всех кто будет переносить данные таким же способом) "При попытке открыть список записей пользователя (блог пользователя) вываливается ошибка 404 Страница не найдена" Данная проблема обусловлена разной структурой движков.

Происходит это из-за того что в LiveStreet пользовательские блоги равны блогам коллективым (в таблице БД также делается запись). У нас же блоги — это просто список всех постов пользователя.

Решаем данную проблему смешиванием блогов пользователей и сообщества у нас.
!!! Важно: Если в LiveStreet был зарегистрирован пользователь с ником «news», то создать блог «Новости» с таким же url будет невозможным, но все же если имена будут совпадать, приоритет будет у блогов пользователей.
И так, поехали… В /gears/blogs/index.php заменить метод index на следующий:

function index($url_name = FALSE, $page = 0){ if($user = $this->user->info($url_name)){ if($url_name && !is_numeric($url_name) && $user = $this->user->info($url_name)){ $this->user->head($user,'blog'); title($user->name); if(!empty($url_name) && $user->id == $this->user->get('id')){ $this->nodes->published = FALSE; } $this->db->where(array('aid'=>$user->id)); } else { $page = $url_name; } $this->nodes->get($page); } elseif($url_name == 'all') { $this->builder->h1(t('!gears community').(acl('community create') ? ' '.$this->builder->a($this->builder->img('/gears/global/img/icon/edit.png',FALSE,FALSE,t('edit create')),l('/community/create/')) : FALSE),TRUE); $this->community->query(); $config['per_page'] = $this->gears->community->per_page_list; $page = $this->pager((int)$action, $this->db->count_all_results('community',FALSE),$config); $this->db->limit($page['limit'],$page['start']); $all = $this->db->get('community')->result_array(); if(!$all) info(); else { foreach($all as &$community){ if($community['icon']) { $community['icon'] = make_icons($community['icon']); $community['icon'] = $community['icon']['24x24']; } $community['class'] = 'avatar'; } $header = array( 'icon'=>array('','image','5%','class'=>'avatar'), 'name'=>array(fc_t('community'),'link','30%',FALSE,'left','before'=>'<h1>','after'=>'</h1>'), 'aname'=>array(fc_t('admin'),'link','10%','before'=>'<span class="user">','after'=>'</span>'), 'users_num'=>array(fc_t('members'),'text','20%','before'=>'<h1>','after'=>'</h1>'), 'nodes_num'=>array(fc_t('!gears nodes'),'text','20%','before'=>'<h1>','after'=>'</h1>') ); $info = array( 'link'=>array('/community','/user'), 'link_add'=>array('url_name','aurl_name'), 'noname'=>'true', ); $this->form->grid('communities',$header,$all,$info)->compile(); } } elseif($url_name && !is_numeric($url_name)){ $this->community->show($url_name,$action,$subaction); } else { $this->db->where('nodes.cid != 0'); $this->nodes->get((int)$url_name,FALSE,TRUE); } } // ------------------------------------------------------------------------ }
Далее следует убрать первое правило рерайта в /gears/ls2cg/ls2cg.info т.е. удалить вот эту строку:

routes[] = "blogs/(.+) = community/$1"
Вот и все. Теперь все прекрасно работает.

Хочу выразить огромную благодарность Дмитрию (admin) за помощь!!!

00:16 ← 24 августа 2010 Отправить в Твиттер alexgrAlexGr  RSS comments 1

Комментарии (1) ↓

admin admin time 00:18 ← 24 августа 2010 #
Пожалуйста. Отличный материал.
Убрал часть под кат.