1. AutoDealerRU
  2. API

Overview

HTTPS SSH

Auto2D API

Инструкция по развертыванию

Скопировать конфигурационный файл:

cp _cfg.php-dist _cfg.php

Прописать в нем свои учетные данные, полученные при регистрации:

define("LOGIN","ВАШ_ЛОГИН");
define("PASSWD","ВАШ_ПАРОЛЬ");

Требование:

Версия PHP 5.5 и выше
Установленный cURL, DOM

Если в CentOS ошибка "Class 'XMLWriter' not found in", то надо доустановить его:

yum -y install php-xml

Описание PHP папок и скриптов:

_cfg.php-dist      - Данный файл необходимо скопировать или переименовать в _cfg.php
_lib.php           - Общий класс. Вынесены общие функции, используемые на всем следовании по каталогу
_lng.php           - (устарел) Файл локализаций aka мультиязычность. Описание работы и причина ниже  

-README.md         - Описание каталога (этот файл. Формат Markdown)
-README.html       - Описание каталога (этот файл. Формат HTML)

-index.php         - Пример реализации входной точки. Первый запрос (в данных примерах) ведет на types.php  
-types.php         - Получение типов автомобилей  
-marks.php         - Получение марок автомобилей. Варианты: все, по типу  

-search.php        - (в планах) Модуль, объединяющий все поиски. Пока "копим" базу

-helpers           - Директория со скриптами-помощниками, используемых во всех каталогах
--breads.php       - Построение "хлебных крошек"
--illustration.php - Подстветка строк и номеров на иллюстрации, копирование в буфер
--search.php       - Конструктор для формы поиска
--zoomer.php       - Панель для иллюстрации, функция перетаскивания, масштабирование


-adc               - Каталог со скриптами для АвтоКаталога
--README.md        - Описание каталога (формат Markdown)
--README.html      - Описание каталога (формат HTML)
--api.php          - Файл запросов только для текущего каталога. Некая обертка над запросами для упрощения разработки  
--models.php       - Получение моделей. Варианты: все, по типу, по марке, по марке и типу  
--tree.php         - Построение дерева деталей для модели  
--map.php          - Карта конкретной части (двигатель, тормозная система, ..) автомобиля с изображением и номенклатурой  
--detailInfo.php   - Информация о детали в всплывающем окне  
--search           - Каталог со скриптами для поиска только по АвтоКаталогу
---detail.php      - Пример реализации функций поиска детали  
---models.php      - Пример реализации функций поиска модели автомобиля  


-bmw               - Каталог со скриптами для оригинального каталога BMW, BMW moto, Mini, Rolls-Royce  
--README.md        - Описание каталога (формат Markdown)
--README.html      - Описание каталога (формат HTML)
--api.php          - Файл запросов только для текущего каталога. Некая обертка над запросами для упрощения разработки  
--series.php       - Точка входа в каталог. Получение серий выпускаемой техники по нужной марке (BMW, BMW moto, Mini, Rolls-Royce)
--models.php       - Список поделей в выбранной серии (далее слово будет опускаться, итак понятно/логично что произошел выбор)
--options.php      - Доступные опции для модели (расположение руля, КПП)
--production.php   - Период производства модели
--groups.php       - Основные группы деталей для модели
--subgroups.php    - Список деталей, входящих в группу/узел
--illustration.php - Иллюстрация детали со списком номенклатуры
--search           - Каталог со скриптами для поиска только по каталогу BMW  
---detail.php      - Пример реализации функций поиска детали  
---vin.php         - Пример реализации функций поиска модели автомобиля по VIN  

-etka              - Каталог со скриптами для оригинального каталога ETKA - Audi, Seat, Skoda, Volkswagen
--README.md        - Описание каталога (формат Markdown)
--README.html      - Описание каталога (формат HTML)
--api.php          - Файл запросов только для текущего каталога. Некая обертка над запросами для упрощения разработки  
--markets.php      - Входная точка в каталог. Получение рынков по производству
--models.php       - Список моделей для рынка
--production.php   - Период производства модели
--groups.php       - Группы деталей
--subgroups.php    - Список деталей, входящих в группу/узел
--illustration.php - Иллюстрация детали со списком номенклатуры
--search           - Каталог со скриптами для поиска только по каталогу BMW  
---detail.php      - Пример реализации функций поиска детали  
---vin.php         - Пример реализации функций поиска модели автомобиля по VIN  
--vinInfo.php      - Подробная информация об VIN по результатам из etka/search/vin.php  

-fiat              - Каталог со скриптами для оригинального каталога Fiat
--api.php          - Файл запросов только для текущего каталога. Некая обертка над запросами для упрощения разработки  
--models.php       - Входная точка в каталог. Получение моделей по бренду
--groups.php       - Группы деталей
--subGroups.php    - Список деталей, входящих в группу/узел
--production.php   - Список продукции
--draw.php         - Иллюстрация детали со списком номенклатуры

-toyota            - Каталог со скриптами для оригинального каталога Toyota и Lexus  
--README.md        - Описание каталога (формат Markdown)
--README.html      - Описание каталога (формат HTML)
--api.php          - Файл запросов только для текущего каталога. Некая обертка над запросами для упрощения разработки  
--markets.php      - Входная точка в каталог. Получение рынков по производству
--models.php       - Список моделей для рынка
--options.php      - Доступные комплектации для модели
--groups.php       - Группы деталей
--illustration.php - Иллюстрация детали со списком номенклатуры
--search           - Каталог со скриптами для поиска по АвтоКаталогу
---vin.php         - Пример реализации функций поиска модели автомобиля по VIN  
---frame.php       - Пример реализации функций поиска модели автомобиля по фрейму и номеру  
---tpl             - Файлы для визуалицации полученных данных (их структура неоднозначна)
----vin            - Для возвращаемых данных с поиска по VIN
----frame          - Для возвращаемых данных с поиска по фрейму и номеру

-nissan            - Каталог со скриптами для оригинального каталога Nissan и Infiniti  
--README.md        - Описание каталога (формат Markdown)
--api.php          - Файл запросов только для текущего каталога. Некая обертка над запросами для упрощения разработки  
--markets.php      - Входная точка в каталог. Получение рынков по производству
--models.php       - Список моделей для рынка
--modifs.php       - Доступные модификации для модели
--groups.php       - Группы деталей
--subgroups.php    - Подгруппы (номера) деталей
--illustration.php - Иллюстрация детали со списком номенклатуры
--detailInfo.php   - Выпадающий список на странице иллюстраций (illustration.php)
--search           - Каталог со скриптами для поиска по АвтоКаталогу
---vin.php         - Пример реализации функций поиска модели автомобиля по VIN  
---frame.php       - Пример реализации функций поиска модели автомобиля по фрейму и номеру  
---number.php      - Пример реализации функций поиска запчасти по ее номеру
---view            - Файлы для визуалицации полученных данных (их структура неоднозначна)
----vinANDframe    - Для возвращаемых данных с поиска по VIN и по фрейму с номером
----number         - Для возвращаемых данных с поиска по номеру запчасти

-td                - Каталог со скриптами для TecDoc(Aftermarket)
--api.php          - Файл запросов только для текущего каталога. Некая обертка над запросами для упрощения разработки  
--types.php        - Входная точка в каталог. Получение типов(Легковые и грузовые)
--marks.php        - Получение списока марок
--models.php       - Список моделей
--compl.php        - Список комплектаций
--model.php        - Полная информация по автомобилю
--tree.php         - Сборочные группы для комплектации
--details.php      - Группы,производиели и номераа деталей 
--detail.php       - Иллюстрация детали с общими данными и критериями
--cross.php        - Список конструкционных номеров
--apply.php        - Список применяемости 
--search           - Каталог со скриптами для поиска по АвтоКаталогу
---detail.php      - Пример реализации функций поиска модели автомобиля по номеру детали

-mcct              - Каталог со скриптами для оригинального каталога KIA и Hyundai
--README.md        - Описание каталога (формат Markdown)
--README.html      - Описание каталога (формат HTML)
--api.php          - Файл запросов только для текущего каталога. Некая обертка над запросами для упрощения разработки  
--index.php        - Входная точка в каталог. Получение регионов и модельного ряда
--catalogs.php     - Список каталогов
--models.php       - Список моделей выбранного каталога
--model.php        - Выбранная модель, её описание и основные разделы автозапчастей
--major.php        - Список подразделов выбранного раздела автозапчастей
--minor.php        - Иллюстрация выбранного подраздела с списком автозапчастей
--search           - Каталог со скриптами для поиска по АвтоКаталогу
---vin.php         - Пример реализации функций поиска модели автомобиля по VIN  
---detail.php      - Пример реализации функций поиска автозапчастей по номеру

-media             - Каталог с медиафайлами для визуального оформления данных, полученных от сервера АвтоДилер  
--css              - Файлы стилей. Файлы с именем как у каталогов используются только в этих каталогах  
---fw.css          - Микро-фреймворк с заготовленными часто используемыми стилями
---style.css       - Общий файл со стилями  
---ОСТАЛЬНЫЕ       - Используются в своих каталогах по названию файла. НО! Ничто нам не мешаем манипулировать этими файлами
--js               - Диреектория с JavaScript и jQuery скрпитам. К примеру:
---myTree.js       - Реализации дерева деталей для АвтоКаталога
--images           - Все изображения используемые в данных примерах

Полее подробное описание находится внутри каждого каталога

Так как оригинальные каталоги также интегрированны в наш каталог, то общие входные точки для всех остануться types.php => marks.php
Далее в системе идет деление по директориям для каждого каталогам, чтобы не было путаницы в файлах.
В процессе работы обратите внимание, что все оригинальные каталоги можно использовать независимо друг от друга, что позволяет добиться больше гибкости при выборе нужных каталогов.
Не смотря на то, что types.php => marks.php используются в корне, опиание функций, используемых для получении данных, находятся в adc/README.MD

На страницах с иллюстрациями доступна функция копирования номера в буфер


Общие моменты

Все общение с сервером ведется по средствам GET или POST запросов
Переменная с одинаковым именем и в GET, и в POST получит значение из POST
Данные с сервера приходят в виде json строки, которая преобразуется в объект


Во всех запросах:

u - ваш логин
p - ваш пароль
f - имя функции
t - тип каталога

Доступные типы каталогов на текущий момент:
t=BMW - Оригинальный каталог от BMW : BMW Auto, BMW Moto, Mini, Rolls-Royce
t=TOY - Оригинальный каталог от Toyota : Toyota, Lexus
t=ETKA - Оригинальный каталог от ETKA : Audi, Volkswagen, Seat, Skoda
t=[KIA|HYUNDAI] - Оригинальный каталог от KIA или HYUNDAI : KIA, HYUNDAI

Для каталога от АвтоДилер тип не указывается

Идентификатор или алиас марки получаем со страницы марок marks.php


Хлебные крошки

Так как в каталогах АвтоДилер одновременно не используется больше 4-х параметров, то и надобности в "хлебных крошках" не было и они формировались прямо в HTML документе.
С появлением внешних каталогов и с их количеством передаваемых переменных, пришлось разработать функцию на стороне сервера, вместо того чтобы отдавать кучу переменных для построения "хлебных крошек". Функция в каждом запросе возвращает набор данных для каждого из прошедших этапов.
К примеру(преобразовав в массив) на одном из этапов можно увидеть подобное:

[
    'types' => [
        "name" => 'Каталог',
        "breads" => []
    ],
    'marks' => [
        "name" => $sTypeName,
        "breads" => [
            0 => $sTypeID,
            1 => $sMarkID
        ]
    ]
]

где types и marks - имена файлов, которым будут передаваться переменные в последовательности, что сперва получаем типы/группы, потом марки

На следующем уровне:
name - имя "хлебной крошки"
breads - массив с переменными нужный для получения данных при переходе по крошке
Порядок переменных должен совпадать с переменной $arrActions из */api.php(пример):

static::$arrActions = ['typeID','markID','modelID','treeID'];

В основном это в случае с каталогом от АвтоДилер
Для остальных каталогов массив "хлебных крошек" возвращается с сервера и подгоняется уже сама переменная static::$arrActions
Имена можно выбрать абсолютно любые, главное потом получать значения по нужным именам.

Для построение "хлебных крошек" используется конструктор helpers/breads.php
Как его готовить можно глянуть в скриптах каталогов.


Форма поиска

Для построения формы с поиском используется файл helpers/search.php
До подключения файла нужно определить переменные для конструктора. Так как поиски и поля для форм разные для каждого каталога, будет разумно определять переменные непосредственно в самих файлах API к каталогу, к примеру, в toyota/api.php
Чтобы не создавать дополнительных методов реализовать это можно в методе __construct, который вызывается в момент установки объекта.
Рассмотрим пример переменной, чтобы отбросить лишние вопросы в будущем:

static::$searchTabs = [[
    'id'    => 1,
    'alias' => 'vin',
    'name'  => 'VIN', /// В контексте "Укажите ..."
    'tName' => 'Поиск по VIN',
],[
    'id'     => 2,
    'action' => 'frame',
    'multi'  => [[
        'alias' => 'frame',
        'name'  => 'фрейм', /// В контексте "Укажите ..."
    ],[
        'alias' => 'number',
        'name'  => 'номер', /// В контексте "Укажите ..."
    ]],

    'tName' => 'Поиск по номеру детали',
]];

id - идентификатор для вкладки
alias - имя поля, по которому потом будем ловить переменную в скриптах. В случае с одним полем, alias также может служит именем файла, в который передаются переменные
name - служит плейсхолдером - текст подсказка пользователю, что вводить
action - имя скрипта, в который передаем параметры с формы (можно опустить, если поле одно)
multi - используем массив если нужно передать не одно значение
tName - название вкладки в форме поиска


Мультиязчность

! Устаревшая функция:
Во всех современных системах есть свои функции, позволяющие организовать мультиязычность сайта
Поэтому данную функцию оставили исключительно как идею для реализации, вдруг кому и пригодится

В файле _lng.php копируем массив: protected static $ru = array(...);
под другим именем(к примеру): protected static $ru2 = array(...);
В _lib.php указываем с каким массивом работать: protected static $_lng = "ru2";

Структура массива в _lng.php:

protected static $ru = array(
        'types' => array(
            'h1'       => 'Список типов авто',
            'fstitle'  => 'Быстрый поиск марок и моделей',
            'fsititle' => 'Быстрый поиск марок и моделей (Alt+Ч)',
        ),
);

$ru - язык,
types - в каком файле использовать,
h1 - название переменной, после => ее значение.

Использовать так:

<?=A2D::__('h1')?> (html)
A2D::__('h1')      (php)

Скачать ZIP

Демонстрация примеров

Что может получиться

Сайт компании