В самом компоненте всё работает отлично.
Теперь встал вопрос, как сделать, чтобы Вип объявления не висели бы сверху в модуле вывода последних объявлений? Т.е. сортировка была бы по времени добавления, но само Вип выделение объявы осталось бы?
Наверное у нас разные версии, у меня в запросе упоминания о Випах нет.
Покажите какой у вас запрос к базе в модуле (это который в прошлой теме правили)
Если правильно понимаю, то:
mod_latestboard.tpl
{if $items} <ul class="new_board_items"> <li {if $item.is_vip}class="vip"{/if}> <div class="mod_bcon_content"> <a href="/board/read{$item.id}.html">{$item.title}</a>{if $cfg.showcity} <br/><span class="board_city">{$item.city}</span>{/if} </div> </li> {/foreach} </ul> {else} <p>{$LANG.LATESTBOARD_NOT_ADV}</p> {/if}
<?php function mod_latestboard($module_id){ $inCore = cmsCore::getInstance(); $inDB = cmsDatabase::getInstance(); $cfg = $inCore->loadModuleConfig($module_id); $inCore->loadModel('board'); $model = new cms_model_board(); global $_LANG; if ($cfg['cat_id'] != '-1') { if (!$cfg['subs']){ $model->whereCatIs($cfg['cat_id']); } else { $cat = $inDB->get_fields('cms_board_cats', "id='{$cfg['cat_id']}'", 'NSLeft, NSRight'); if(!$cat) { return false; } $model->whereThisAndNestedCats($cat['NSLeft'], $cat['NSRight']); } } // только ВИП if($cfg['onlyvip'] && !$cfg['butvip']){ $model->whereVip(1); } // кроме ВИП if($cfg['butvip'] && !$cfg['onlyvip']){ $model->whereVip(0); } $model->orderBy('pubdate', 'DESC'); $model->limitPage(1, $cfg['shownum']); $items = $model->getAdverts(false, true, false, true); $smarty = $inCore->initSmarty('modules', 'mod_latestboard.tpl'); $smarty->assign('items', $items); $smarty->assign('cfg', $cfg); $smarty->display('mod_latestboard.tpl'); return true; } ?>
/components/board/model.php
стр. 633 — {$this->group_by}
УДАЛИТЬ
строка 593 у меня
внутри этой функции строчка {$this->group_by}
public function getAdverts($show_all = false, $is_users = false, $is_coments = false, $is_cats = false){ $this->deleteOldRecords(); $this->clearOldVips(); //подготовим условия $pub_where = ($show_all ? '1=1' : 'i.published = 1'); $r_join = $is_users ? " LEFT JOIN cms_users u ON u.id = i.user_id \n" : ''; $r_join .= $is_cats ? " INNER JOIN cms_board_cats cat ON cat.id = i.category_id" : ''; $r_select = $is_users ? ', u.login, u.nickname' : ''; $r_select .= $is_cats ? ', cat.title as cat_title, cat.obtypes' : ''; $sql = "SELECT i.*{$r_select} FROM cms_board_items i {$r_join} WHERE {$pub_where} {$this->where} {$this->group_by} {$this->order_by}\n"; if ($this->limit){ $sql .= "LIMIT {$this->limit}"; } $result = $this->inDB->query($sql); if(!$this->inDB->num_rows($result)){ return false; } while ($item = $this->inDB->fetch_assoc($result)){ if($is_coments){ $item['comments'] = $this->inCore->getCommentsCount('boarditem', $item['id']); } $item['content'] = $this->config['auto_link'] ? $this->inCore->parseSmiles($item['content']) : $item['content']; $item['title'] = $item['obtype'].' '.$item['title']; $item['fpubdate'] = $this->inCore->dateformat($item['pubdate']); $item['file'] = 'nopic.jpg'; } // Права доступа $item['moderator'] = $this->checkAccess($item['user_id']); $records[] = $item; } $this->resetConditions(); $records = cmsCore::callEvent('GET_BOARD_RECORDS', $records); return $records; }
Дальше есть ещё
public function getAdvertsCount($show_all = false){ //подготовим условия $pub_where = ($show_all ? '1=1' : 'i.published = 1'); $sql = "SELECT 1 FROM cms_board_items i WHERE {$pub_where} {$this->where} {$this->group_by}\n"; $result = $this->inDB->query($sql); return $this->inDB->num_rows($result); }