• Resolved dimalepel

    (@dimalepel)


    Уважаемые разработчики, подскажите как вывести все маркеры, которые были заданы в картах на одной карте, к примеру, на главной странице?

Viewing 3 replies - 1 through 3 (of 3 total)
  • Plugin Author Const Lab

    (@joker-bs)

    @dimalepel, вы можете это сделать с помощью метода the_yandex_map

    https://github.com/constlab/acf-yandex-map/blob/master/acf-yandex-map.php#L40

    Например:
    the_yandex_map('map_field_slug', 66);

    Первый параметр это алиас поля, второй ID страницы или поста от куда надо вывести карту

    Thread Starter dimalepel

    (@dimalepel)

    А если это все записи/посты? Что нужно вставить?

    Plugin Author Const Lab

    (@joker-bs)

    @dimalepel в таком случае нужно сначала собрать данные со страниц, а затем вывести. Вот рабочий вариант:

    Предполагается, что страница вывода (например главная) тоже имеет доп.поле ‘Yandex Map for ACF’. В это поле не нужно добавлять метки.
    Из него будут браться общие параметры карты (начальные координаты, слой и т.д.)

    functions.php

    /**
     * @param array $post_ids ID записей от куда надо взять метки
     */
    function the_multiple_yandex_map($post_ids = array())
    {
        $marks = array(); // Все метки
        $marks_counter = 1;
    
        foreach ($post_ids as $post_id) {
            $data = (array)json_decode(get_field('map_field', $post_id, false), true); // загрузка меток из записи
            if (!isset($data['marks']) || !is_array($data['marks'])) {
                continue;
            }
    
            foreach ((array)$data['marks'] as $mark) {
                $mark['id'] = $marks_counter;
                $marks[] = $mark;
    
                $marks_counter++;
            }
        }
    
        $map_data = (array)json_decode(get_field('map_field', get_the_ID(), false), true); // загрузка параметров карты для вывода всех меток
        $map_data['marks'] = $marks;
    
        the_yandex_map('', false, json_encode($map_data));
    }

    А в шаблоне функцию нужно вызвать так:

    the_multiple_yandex_map(array(1,5));

    В качестве аргумента функции массив с идентификаторами записей от куда нужно взять метки.

Viewing 3 replies - 1 through 3 (of 3 total)
  • The topic ‘Вывести все метки из базы на одной карте’ is closed to new replies.