Новые требования модераторов к поселениям

ITFrogs

Ранее я всегда получал список поселений немного видоизмененным кодом, выдранным откуда-то из шопскрипта:

    public static function getSettlements()
    {
        $settlements = array();
        $routing = wa()->getRouting();
        $domain_routes = $routing->getByApp('shop');
        foreach ($domain_routes as $domain => $routes) {
            foreach ($routes as $key => $route) {
                $settlement = $domain . '/' . $route['url'];
                $settlement = rtrim($settlement, '/*');
                $url = parse_url('http://' . $settlement);
                $path = isset($url['path']) ? $url['path'] : '';
                $settlement = $url['host'] . $path;
                $settlements[$key]['title'] = $settlement;
                $settlements[$key]['value'] = 'id-' . $key;
            }
        }
        return $settlements;
    }

Не обращайте внимание на "http://". Это чисто мой костыль. Собственно этот код всегда работал и всегда его принимали. При помощи него я показывал поселения в админке.

Теперь этот код модероторов не устраивает:

В настройках плагина отображаются не все имеющиеся поселения магазина (в том числе на разных доменах).


Т.е. надо как-то показывать поселения вместе с доменами. Прошу поделиться мыслями или кодом. Да и вообще я даже чисто визуально не пойму как это все представить в настройках. Ведь у разных доменов могут быть одинаковые поселения...

1 мая 2016
  • ITFrogs 1 мая 2016 12:30

    Сейчас еще раз проверил как работает этот код:

    Т.е. как-то раз на раз не приходится. У меня показывает разные домены, у модераторов не показывает. Хз че делать...

  • Евгений Леман 1 мая 2016 12:53

    Если бы не выделенная жирным фраза, то я мог бы предположить, что модератору не понравился тот факт, что витрина shop/* и shop* будут выглядеть одинаково. Но тут явно не о том.

  • ITFrogs 1 мая 2016 12:57

    Я нашел ошибку. Все дело в ключах массива ($key). Они могут быть одинаковыми для разных доменов. Поэтому могут переписать друг друга. Короче нужно массив видоизменить и все будет нормально.

  • ITFrogs 1 мая 2016 13:00

    Есть какие-нибудь идеи как засунуть в value для чекбокса два ключа?

  • ITFrogs 1 мая 2016 13:46

    Вот так нормально работает:


        public static function getSettlements()
        {
            $settlements = array();
            $routing = wa()->getRouting();
            $domain_routes = $routing->getByApp('shop');
            foreach ($domain_routes as $domain => $routes) {
                foreach ($routes as $key => $route) {
                    $s = $domain . '/' . $route['url'];
                    $s = rtrim($s, '/*');
                    $settlements[$s]['title'] = $s;
                    $settlements[$s]['value'] = $s;
                }
            }
            return $settlements;
        }
  • info@ravencode.ru 6 мая 2016 17:42

    А почему такой странный формат возвращаемых данных? Почему не?

    public static function getSettlements()
    {
        $settlements = array();
        foreach (wa()->getRouting()->getByApp('shop') as $domain => $routes) {
            foreach ($routes as $id => $route) {
                $url = $domain . '/' . rtrim($route['url'], '*');
                $name = isset($route['_name']) ? $route['_name'] : _w('Shop') . ' ' . $id;
                $settlements[$url] = $name;
            }
        }
        return $settlements;
    }
  • ITFrogs 6 мая 2016 17:46

    Потому, что это колбэк для настроек плагина.



Чтобы добавить комментарий, зарегистрируйтесь или войдите