Powered by CodeIgniter
inetlover

inetlover

9
11 голосов
  ПрофильБлог (52)Комментарии (794)Закладки (7)Продукты (7) 
Пытаюсь разобраться, почему по ссылке: cogear.ru/community/ мы видим панель навигации:


А по ссылке: cogear.ru/community/all/ она отсутствует?
23:36 ← 17 декабря 2009 Отправить в Твиттер inetloverinetlover  RSS comments 12

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

admin admin time 23:49 ← 17 декабря 2009 #
Да, потому что community/all ведет на другой метод контроллера :-)
Смотри роуты в конфиге и методы в контроллере.
Автор
inetlover inetlover time 00:06 ← 18 декабря 2009 #
Роуты в конфиге шестеренки community
routes[] = "% = community" routes[] = "news = community/news" routes[] = "video = community/video"
Но они здесь для того, что бы были у нас были ссылки вида: cogear.ru/news и cogear.ru/video.

Смотри роуты в конфиге и методы в контроллере.

Дима, а не подскажешь в какой шестеренке смотреть?
ksi ksi time 02:13 ← 18 декабря 2009 #
Строка cogear.ru/community/all/ ведет к контролеру метода community с параметром
$url_name = 'all' смотри контролер index.php и метод index() в модуле.
в нем идет другая обработка если $url_name = 'all'.
Автор
inetlover inetlover time 10:49 ← 18 декабря 2009 #
Спасибо всем! :-)
admin admin time 09:34 ← 18 декабря 2009 #
Все верно. Аргумент all обрабатывается особым образом. Смотри контроллер сообществ и их модель.
Автор
inetlover inetlover time 11:26 ← 18 декабря 2009 #
смотри контролер index.php и метод index() в модуле.
в нем идет другая обработка если $url_name = 'all'.
Все верно. Аргумент all обрабатывается особым образом.

Но там, в функции function index($url_name = FALSE, $action = FALSE, $subaction = FALSE) действительно обрабатывается иначе, но не по отношении, если наш урл cogear.ru/community/ а по отношению, если наши урлы cogear.ru/community/news/, cogear.ru/community/video/ и т. д…

Скажите, пожалуйста, а какой код добавить в эту функцию, что бы появилась панель при урлах community/news/, community/video/, community/all/ и т. д.

admin admin time 12:48 ← 18 декабря 2009 #
Собственно, всмотрись в этот код.
function index($url_name = FALSE, $action = FALSE, $subaction = FALSE){ if($url_name == 'all') { $this->builder->h1(t('!gears community').(acl('community create') ? ' '.$this->builder->a($this->builder->img('/gears/community/img/icon/star.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); } }
Автор
inetlover inetlover time 14:04 ← 18 декабря 2009 #
Код начиная со строки 0.3 по строку 31 отвечает за формирование списка сообществ по ссылки community/all/ — туда всматриваться бессмысленно.
Вопросы:
  1. Почему в даном посте панель подсвечивает кнопку Профиль, не логичнее подсвечивать кнопку Блог?

  2. Почему в движке по умолчанию не включена панель, когда мы переходим на конкретное сообщество или список сообществ? Разве там ее наличие не добавит уверенности пользователю, что у него все под контролем?
ksi ksi time 13:24 ← 18 декабря 2009 #
Если урл cogear.ru/community/, то согласно записи в index.info в модуле index
routes[] = "community/? = index/0/community"
следовательно, в этом случае вызывается метод index модуля index. так что посмотри код в нем, там есть код, где строится интересующая тебя панель.
$this->panel->set('index',FALSE,TRUE,'!global tabs')->base('/')->data($filter) ...
Автор
inetlover inetlover time 15:09 ← 18 декабря 2009 #
Спасибо, за отзывчивость!
Вот код отвечающий за построение панели из файла index/index.php
$this->panel->set('index',FALSE,TRUE,'!global tabs')->base('/')->data($filter) ->add(array('name'=>'best','text'=>fc_t('index best').' ('.$counter['best'].')'.($counter['best_new'] > 0 ? ' <sup>+'.$counter['best_new'] .'</sup>' : ''),'index'=>TRUE,'title'=>FALSE)); if($this->gears->community) $this->panel->add(array('name'=>'community','text'=>t('!gears community').' ('.$counter['community'].')'.($counter['community_new'] > 0 ? ' <sup>+'.$counter['community_new'] .'</sup>' : ''),'title'=>t('!gears community'))) ->add(array('name'=>'blogs','text'=>t('!gears blogs').' ('.$counter['blogs'].')'.($counter['blogs_new'] > 0 ? ' <sup>+'.$counter['blogs_new'] .'</sup>' : ''),'title'=>t('!gears blogs'))) ->add(array('name'=>'new','text'=>t('index new').' ('.$counter['new'].')'.($counter['new_new'] > 0 ? ' <sup>+'.$counter['new_new'] .'</sup>' : ''),'title'=>t('index new'))) ->set_active($filter ? $filter : 'best') ->compile(2);
Хорошо поизучав код — понял, что урл типа cogear.ru/community/ выводится шестеренкой index, а урлы cogear.ru/community/что-либо выводятся шестеренкой community и если я хочу видеть панель когда работает шестеренка community, то я должен в функцию в файле community/index.php дописать модифицированный код панели.
function index($url_name = FALSE, $action = FALSE, $subaction = FALSE){ ... else { $this->db->where('nodes.cid != 0'); $this->nodes->get((int)$url_name,FALSE,TRUE); } // Дописать модифицированный код панели. }
wmmail wmmail time 19:00 ← 23 декабря 2009 #
Так получилось добавить вывод панели на эту страницу?
Лично у меня нет, хотя сделал все, как написано в этом посте.
Автор
inetlover inetlover time 19:17 ← 23 декабря 2009 #
В шестеренке index формируются значения, например: Новые (45) +6 и т. д. отсюда надо в любую другую шестеренку, например search переносить этот код, который считает, сколько есть и сколько появилось. Понял, что в движке на сегодня одной строкой не разместить главную и полностью функциональную панель в другой шестеренке. А без подсчета (45) +6 я размещал панель, но дальше разбираться, как сделать ее с ними не стал.