Jump to content
Sign in to follow this  
delovoy

Как отсортировать Регионы не по умолчанию (алфавиту)?

Recommended Posts

Стоит задача, изменить порядок вывода и отображения Регионов для покупателя

Для примера, хочется видеть Россию, Украину и Казахстан вверху списка.

Соответственно в списке Россия - первыми города Москва и Московская область, потом Питер и тп, как я хочу

Возможно ли задать какой то приоритет или как изменить этот порядок?

P.S.

Есть какой то просто способ или модификация, или нужно править в SQL?

Залез в базу данных и что я вижу, в таблице country первым идет Афганистан!

Но в самом опенкарте в поле страна первым стоит Австралия! Хотя в таблице SQL она стоит №13

Может мне кто объяснить алгоритм, вывода регионов и стран? Я никак понять не могу! По алфавиту чтоли?

А как сделать по # ID или принудительно?

Читал тут некоторые темы, конкретных ответов так и не нашел

Edited by tim21701
  • +1 1

Share this post


Link to post
Share on other sites

Ну видимо сортировка по алфавиту. надо менять запрос в model\checkout\ где то sql запрос на выборку данных. Ждите, кто разбирается в этом.

Share this post


Link to post
Share on other sites

Ну видимо сортировка по алфавиту. надо менять запрос в model\checkout\ где то sql запрос на выборку данных. Ждите, кто разбирается в этом.

Вот и жду! :( И где копать

Хоть по ID сделать сортировку, так хоть в базе поменять местами можно, или задать список приоритетов в PHP но где? :(

Share this post


Link to post
Share on other sites

по дефоту сортировка по названию.

public function getZonesByCountryId($country_id) {
       $zone_data = $this->cache->get('zone.' . (int)$country_id);

       if (!$zone_data) {
           $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "zone WHERE country_id = '" . (int)$country_id . "' AND status = '1' ORDER BY name");

           $zone_data = $query->rows;

           $this->cache->set('zone.' . (int)$country_id, $zone_data);
       }

       return $zone_data;
   }

что бы определенный регион был первым в списке можно добавить его id в order таким образом

ORDER BY zone_id!=555, name

булевское выражение zone_id != 555 == true для всех id, кроме 555. false>true потому запись с id =555 будет первой

Share this post


Link to post
Share on other sites

Хорошо спасибо, но если мне нужно, несколько стран, видеть в списке первыми?

И где аналогичное произвести с регионами?

И к сожалению я не понял, куда последний пункт, прикручивать?

Share this post


Link to post
Share on other sites

Хорошо спасибо, но если мне нужно, несколько стран, видеть в списке первыми?

И где аналогичное произвести с регионами?

И к сожалению я не понял, куда последний пункт, прикручивать?

мне нужно сделать вверху один город, наверное может как-то по аналогии сортировки товара сделать

Share this post


Link to post
Share on other sites

по дефоту сортировка по названию.

 

public function getZonesByCountryId($country_id) {
        $zone_data = $this->cache->get('zone.' . (int)$country_id);
    
        if (!$zone_data) {
            $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "zone WHERE country_id = '" . (int)$country_id . "' AND status = '1' ORDER BY name");
    
            $zone_data = $query->rows;
            
            $this->cache->set('zone.' . (int)$country_id, $zone_data);
        }
    
        return $zone_data;
    }
что бы определенный регион был первым в списке можно добавить его id в order таким образом
ORDER BY zone_id!=555, name
булевское выражение zone_id != 555 == true для всех id, кроме 555. false>true потому запись с id =555 будет первой

 

не дошло как это правильно написать

https://opencartforum.com/topic/29801-%D1%81%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0-%D1%80%D0%B5%D0%B3%D0%B8%D0%BE%D0%BD%D0%BE%D0%B2-%D0%BF%D0%BE-%D1%81%D0%BE%D0%B1%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE%D0%BC%D1%83-%D0%B6%D0%B5%D0%BB%D0%B0%D0%BD%D0%B8%D1%8E/ воспользовалась этим, но спасибо Фрилансеру тоже, погуглила его совет и нашла ту ссылку

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.