setTemplate('cities.all', 'geo'); $this->setKey('cities'); $this->withSeoSettings('cities', 'geo')->titleH1()->seotext(); $this->setTitle(_t('@geo', 'Popular Cities')); $this->titleh1 = _t('geo', 'Popular cities'); $this->useBreadcrumbs(); } public function data() { $data = parent::data(); $country = Geo::regionData(Geo::defaultCountry()); $filter = [ 'enabled' => 1, ['numleft', '>', $country['numleft'] ?? 0], ['numright', '<', $country['numright'] ?? 0], ]; $regions = Geo::model()->regionsListing($filter, ['fields' => ['parents'], 'keyBy' => 'id']); foreach ($regions as &$v) { $v['items'] = false; $v['link'] = Listings::url('items.search', Geo::regionParents($v)['keys'] ?? []); } unset($v); $items = Listings::model()->itemsCountByFilter([ 'cat_id' => 0, 'region_id' => ['>',0], 'items' => ['>', 0], 'delivery' => 0, ], ['region_id', 'items'], false); foreach ($items as $v) { if (empty($v['items'])) { continue; } if (! isset($regions[$v['region_id']])) { continue; } $regions[$v['region_id']]['items'] = true; } $data['regions'] = $this->db->transformRowsToTree($regions, 'id', 'pid', 'ch'); $this->breadcrumbs->add($this->titleh1); return $data; } public function seo() { $this->request->urlCorrection($this->router->url('geo-cities', [], ['module' => 'geo'])); $this->seo->canonicalUrl($this->router->url('geo-cities', [], ['dynamic' => true, 'module' => 'geo'])); $this->seoApply(); } public function seoSettings() { } }