Доска объявлений

Вывод категорий

#1 17 мая 2011 в 12:03
Доброго времени суток Уважаемы Гуру!
Подскажите как бороться...
Добавлял категории в объявления...
Они выводятся в Алфавитном порядке...
Как реализовать вывод категорий порядком, который необходим мне?
Заранее огромное спасибо!
#2 17 мая 2011 в 12:42
Насколько мне известно функционала такого нет…
#3 17 мая 2011 в 12:51
т.е. сортироваться категории будут в любом случае по алфавиту!?
#4 17 мая 2011 в 13:04
не помню какая там выборка из базы идет...
Если не трогать код то да, а если подшаманить то можно отсортировать по любому полю из таблицы cms_board_cats, в том числе и по id...
чуток опередили меня З.Ы.

Имхо, нет ничего невозможного.

Ser Mager
#5 17 мая 2011 в 13:27
это не модуль, компонент… Вывод категорий осуществлен в самом компоненте. Структура у компонентов похожа, ищем в папке components папку с компонентом, в данном случае board, там файлик frontend.php
правим :)
#6 17 мая 2011 в 13:33

frontend.php
правим :)

Евгений
Ну править сказать легко… вот только где в коде найти порядок сортировки?
#7 17 мая 2011 в 13:41
Вроде в в model.php править надо
  1. public function getCategory($category_id) {
  2.  
  3. $this->deleteOldRecords();
  4.  
  5. $category = $this->inDB->get_fields('cms_board_cats', 'id='.$category_id, '*');
  6. $category = cmsCore::callEvent('GET_BOARD_CAT', $category);
  7.  
  8. if (!$category['obtypes']){
  9. $category['obtypes'] = $this->inDB->get_field('cms_board_cats', "NSLeft <= {$category['NSLeft']} AND NSRight >= {$category['NSRight']} AND obtypes <> ''", 'obtypes');
  10. }
  11.  
  12. return $category;
  13. }
#8 17 мая 2011 в 13:43
вот и артиллерия подоспела googlebot😊без обид
собсно решение начинает вырисовываться :)
#9 17 мая 2011 в 14:56
Евгений, да какие обиды, и какая там артиллерия, так, ламокодинг, посмотри соседний файл и сляпай подобие laugh
vicoder где-то выкладывал решение по сортировке категорий статей из админки, надо там подсмотреть.
#10 17 мая 2011 в 15:50
не ту функцию указал, вот где порядок задается:
  1. public function getSubCats($category_id) {
  2. $cats = array();
  3.  
  4. $sql = "SELECT c.*, IFNULL(COUNT(i.id), 0) as content_count
  5. FROM cms_board_cats c
  6. LEFT JOIN cms_board_items i ON i.category_id = c.id AND i.published = 1
  7. WHERE c.published = 1 AND c.parent_id = $category_id
  8. GROUP BY c.id
  9. ORDER BY title ASC";
  10. $result = $this->inDB->query($sql);
  11.  
  12. if (!$this->inDB->num_rows($result)){ return false; }
  13.  
  14. while($cat = $this->inDB->fetch_assoc($result)){
  15. if (!$cat['obtypes']){
  16. $cat['obtypes'] = $this->inDB->get_field('cms_board_cats', "NSLeft <= {$cat['NSLeft']} AND NSRight >= {$cat['NSRight']} AND obtypes <> ''", 'obtypes');
  17. }
  18. $cats[] = $cat;
  19. }
  20.  
  21. $cats = cmsCore::callEvent('GET_BOARD_SUBCATS', $cats);
  22.  
  23. return $cats;
  24. }
Меняем ORDER BY title ASC на ORDER BY c.id — получаем сортировку по id и создаем категории в том порядке, в котором хотим их выводить на сайте. Если уже все категории забиты, можно попробовать поменять id в таблице cms_board_cats в нужном вам порядке, только не забыть при этом соответственно менять также parent_id (родительскую категорию) во всех подкатегориях тех категорий, id которых были изменены.
Если уже есть объявления, тогда еще придется менять category_id для всех объяв в cms_board_items, так что на уже работающей доске неприменимо!Не проверял на сайте, так что сделайте бекап если решитесь править.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.