Частный разработчик  Александр
Александр
FullStack разработчик
+7 (925) 328-87-31
пн - пт: с 9.00 до 18.00
Написать в Телеграм
142407 Москва и МО
0
🧠 Обо мне
  • Обо мне
  • Лицензии и сертификаты
  • Партнеры
  • Отзывы
  • Реквизиты
  • Стек технологий
Услуги
  • Битрикс программирование
    • Быстрый старт
    • Запуск магазина
    • Базовая настройка интернет-магазина
    • Настройки и установки
    • Внедрение, разработка, техподдержка
    • Экспертиза производительности
    • Изменение и доработка дизайна сайта
    • Битрикс загрузка каталога(импорт и экспорт) с сайта поставщика(импорт и экспорт товаров, цен и остатков)
  • Разработка сайтов
    • Создание одностраничного сайта
    • Создание сайта визитки
    • Создание сайта портфолио под ключ
    • Создание интернет магазина под ключ
    • Создание сайта на основе готового шаблона
    • Разработка корпоративного сайта
  • Продвижение сайтов
    • Продвижение нового молодого сайта
    • Заполнение интернет магазина товарами
    • Составление семантического ядра
    • Текстовое продвижение сайта
    • Контекстная реклама
    • Yandex Direct
    • Google Adwords
    • Yandex Market
    • Микроразметка сайта
    • SMM
    • Баннерная реклама в интернете
    • Чек-лист по SEO
  • Доработка и поддержка
    • Битрикс разработка
    • Diafan разработка
    • Modx разработка
    • Netcat разработка
    • Simpla разработка
    • Wordpress разработка
    • Opencart разработка
    • Prestashop разработка
    • Getsimple разработка
    • Joomla разработка
    • Верстка
    • Битрикс24 разработка
    • Сопровождение сайтов
    • Поисковый аудит сайта
  • Создание парсеров
    • Парсинг DIY
    • Парсинг FMCG
    • Парсинг авиакомпаний
    • Парсинг авто
    • Парсинг аптек
    • Парсинг баз компаний
    • Парсинг дети
    • Парсинг дом и офис
    • Парсинг досок объявлений
    • Парсинг зоотоваров
    • Парсинг книжных магазинов
    • Парсинг красота
    • Парсинг лабораторий
    • Парсинг маркетплейсов
    • Парсинг одежда
    • Парсинг продукты
    • Парсинг спорт
    • Парсинг творчество
    • Парсинг украшения
    • Парсинг электрика
    • Парсинг электроника
    • Парсер новостного сайта
    • Парсер организаций
    • Парсинг email
    • Парсинг вакансий и резюме
    • Парсинг интернет магазина
    • Парсинг недвижимости
    • Парсинг товаров для интернет-магазинов
    • Создание парсера Телефонов
    • Парсер для MODX
    • Парсер для Netcat
    • Парсер для Opencart
    • Парсер для Shop-Script
    • Парсер для Simpla
    • Парсер для UMI.CMS
    • Парсер для WordPress
    • Парсер для Diafan CMS
    • Парсер для DLE
    • Парсер для Drupal
    • Парсер для HostCMS
    • Парсер для Joomla
    • Парсер для Bitrix
    • Парсер для AMIRO.CMS
    • Парсер Вконтакте
    • Парсер Yandex Market
    • Мониторинг цен конкурентов
    • Импорт товаров в Яндекс Маркет
    • Импорт товаров в интернет-магазин
    • Импорт товаров в GoogleMerchant
    • Импорт и обновление прайс-листов
  • Сложная разработка
    • Yii Программист | Yii Разработчик
    • Laravel программист | Laravel разработчик
    • Разработка веб приложений
  • Прочие услуги
    • Подключение SSL-сертификата на сайт
    • Заполнение статьями
    • Регистрация домена
    • Разработка логотипа
    • Хостинг
🤟 Выполненные проекты
  • Доработка проектов
  • Чистая разработка
Каталог услуг
  • Битрикс
    • Битрикс программирование
    • Доработка готовых решений
    • Лицензии Битрикс
    • Переход между лицензиями
    • Продление лицензии
    • Ещё
  • Битрикс24
    • Лицензии Битрикс24
    • Переход между лицензиями
    • Продление лицензии
  • Выгрузка товаров
    • Выгрузка в маркетплейсы поисковиков
    • Выгрузка в социальные сети
    • Выгрузка на торговые площадки-агрегаторы
  • Diafan доработка модуля
  • Diafan доработка шаблона
  • Joomla доработка модулей
  • Modx доработка модулей
  • Prestashop доработка модулей
  • Wordpress доработка модулей
  • Готовые сайты и интернет-магазины
    • Аудио, видео и фото техника
    • Бытовая техника и электроника
    • Мебель
    • Медицина
    • Ремонт
    • Украшения и аксессуары
    • Ещё
  • SMM
    • Facebook
    • Twitter
    • YouTube
    • Вконтакте
    • Инстаграм
    • Одноклассники
    • Телеграм
    • Ещё
  • SEO - продвижение
    • Внешние работы
    • Внутренние работы
  • Покупка ссылок
  • Технические работы
    • Diafan программирование
    • Getsimple программирование
    • Joomla программирование
    • Modx программирование
    • Netcat программирование
    • Opencart программирование
    • Prestashop программирование
    • Simpla программирование
    • Wordpress программист
    • Прочие работы
    • Ещё
🧐 Цены
  • Поддержка и доработка
  • Разработка веб приложений
  • Остальное
  • Основной каталог
Информация
  • Новости
  • Статьи
  • Вопросы и ответы
😊 Отзывы
Контакты
    Частный разработчик  Александр
    Меню  
    • 🧠 Обо мне
      • Обо мне
      • Лицензии и сертификаты
      • Партнеры
      • Отзывы
      • Реквизиты
      • Стек технологий
    • Услуги
      • Битрикс программирование
        • Быстрый старт
        • Запуск магазина
        • Базовая настройка интернет-магазина
        • Настройки и установки
        • Внедрение, разработка, техподдержка
        • Экспертиза производительности
        • Изменение и доработка дизайна сайта
        • Битрикс загрузка каталога(импорт и экспорт) с сайта поставщика(импорт и экспорт товаров, цен и остатков)
      • Разработка сайтов
        • Создание одностраничного сайта
        • Создание сайта визитки
        • Создание сайта портфолио под ключ
        • Создание интернет магазина под ключ
        • Создание сайта на основе готового шаблона
        • Разработка корпоративного сайта
      • Продвижение сайтов
        • Продвижение нового молодого сайта
        • Заполнение интернет магазина товарами
        • Составление семантического ядра
        • Текстовое продвижение сайта
        • Контекстная реклама
        • Yandex Direct
        • Google Adwords
        • Yandex Market
        • Микроразметка сайта
        • SMM
        • Баннерная реклама в интернете
        • Чек-лист по SEO
      • Доработка и поддержка
        • Битрикс разработка
        • Diafan разработка
        • Modx разработка
        • Netcat разработка
        • Simpla разработка
        • Wordpress разработка
        • Opencart разработка
        • Prestashop разработка
        • Getsimple разработка
        • Joomla разработка
        • Верстка
        • Битрикс24 разработка
        • Сопровождение сайтов
        • Поисковый аудит сайта
      • Создание парсеров
        • Парсинг DIY
          • Парсинг Петрович
          • Парсинг Леруа Мерлен
          • Парсинг ВсеИнструменты
          • Парсинг баз строительных компаний России
          • Парсинг OBI
          • Парсинг 220 Вольт
        • Парсинг FMCG
          • Парсинг Утконос
          • Парсинг Перекресток
          • Парсинг Окей
          • Парсинг Карусель
          • Парсинг баз ресторанов и кафе России
          • Парсинг Ашан
          • Парсинг Азбука Вкуса
          • Парсинг Metro
        • Парсинг авиакомпаний
          • Парсинг Яндекс Авиабилеты
          • Парсинг Skyscanner
          • Парсинг Aviasales
        • Парсинг авто
          • Парсинг Автодок.ру
          • Парсинг ZZap.ru
          • Парсинг Your-Parts.ru
          • Парсинг Exist.ru
          • Парсинг Emex.ru
        • Парсинг аптек
          • Парсинг Фармленд
          • Парсинг Столички
          • Парсинг Самсон-Фарма
          • Парсинг Ригла
          • Парсинг Пилюли.ру
          • Парсинг ЗдравСити
          • Парсинг Живика
          • Парсинг Еаптека.ру
          • Парсинг баз медицинских клиник России
          • Парсинг баз стоматологий России
          • Парсинг Асна
          • Парсинг Аптека.ру
          • Парсинг Озерки
          • Парсинг ВИТА
          • Парсинг Аптека WER
          • Парсинг 36,6
          • Парсинг 003ms
        • Парсинг баз компаний
          • Парсинг баз юристов и адвокатов России
          • Парсинг баз хостинг провайдеров России
          • Парсинг баз фитнес центров России
          • Парсинг баз транспортных компаний России
          • Парсинг баз типографий России
          • Парсинг баз страховых агентов России
          • Парсинг баз страховых агентств недвижимости России
          • Парсинг баз сервисных центров России
          • Парсинг баз рекламных агентств России
          • Парсинг баз проектных организаций России
          • Парсинг баз охранных компаний России
          • Парсинг баз отелей и гостиниц России
          • Парсинг баз ломбардов России
          • Парсинг баз разработчиков России
          • Парсинг баз производителей России
          • Парсинг баз автосервисов России
        • Парсинг дети
          • Парсинг Кораблик
          • Парсинг Дочки-Сыночки
          • Парсинг Детский мир
          • Парсинг Акушерство.ру
          • Парсинг TOY.RU
          • Парсинг myTOYS.ru
        • Парсинг дом и офис
          • Парсинг Сантехника Онлайн
          • Парсинг Максидом
          • Парсинг Hoff
        • Парсинг досок объявлений
          • Парсинг Яндекс.Недвижимость
          • Парсинг Циан
          • Парсинг Домофонд
          • Парсинг Авито
        • Парсинг зоотоваров
          • Парсинг ЮниЗОО
          • Парсинг Петшоп.ру
          • Парсинг Бетховен.ру
          • Парсинг Четыре лапы
        • Парсинг книжных магазинов
          • Парсинг Лабиринт.ру
          • Парсинг Буквоед.ру
        • Парсинг красота
          • Парсинг Улыбка Радуги
          • Парсинг Рив Гош
          • Парсинг Магнит Косметик
          • Парсинг Летуаль
          • Парсинг Иль Де Ботэ
        • Парсинг лабораторий
          • Парсинг Хеликс
          • Парсинг Гемотест
        • Парсинг маркетплейсов
          • Парсинг Яндекс.Маркет
          • Парсинг Юла
          • Парсинг Ozon.ru
          • Парсинг Комус
          • Парсинг баз оптовых компаний России
          • Парсинг Zoon.ru
        • Парсинг одежда
          • Парсинг для Gloria Jeans
          • Парсинг Wildberries
          • Парсинг Lamoda
          • Парсинг Henderson
          • Парсинг H&M
        • Парсинг продукты
          • Парсинг ДоДо Пицца
          • Парсинг Глобус
          • Парсинг ВкусВилл
        • Парсинг спорт
          • Парсинг Спортмастер
          • Парсинг Кант
          • Парсинг Декатлон
        • Парсинг творчество
          • Парсинг Леонардо
        • Парсинг украшения
          • Парсинг Соколов
          • Парсинг Санлайт
          • Парсинг Адамас
          • Парсинг 585 золотой
        • Парсинг электрика
          • Парсинг ВамСвет.ру
        • Парсинг электроника
          • Парсинг ЭТМ.ру
          • Парсинг Минимакс
          • Парсинг Юлмарт
          • Парсинг Эльдорадо
          • Парсинг Холодильник.ру
          • Парсинг Ситилинк
          • Парсинг Связной
          • Парсинг Онлайн Трейд
          • Парсинг МТС
          • Парсинг М.Видео
          • Парсинг ДНС
          • Парсинг Беру.ру
          • Парсинг баз интернет магазинов России
          • Парсинг re:STORE
          • Парсинг Goods.ru
        • Парсер новостного сайта
        • Парсер организаций
        • Парсинг email
        • Парсинг вакансий и резюме
        • Парсинг интернет магазина
        • Парсинг недвижимости
        • Парсинг товаров для интернет-магазинов
        • Создание парсера Телефонов
        • Парсер для MODX
        • Парсер для Netcat
        • Парсер для Opencart
        • Парсер для Shop-Script
        • Парсер для Simpla
        • Парсер для UMI.CMS
        • Парсер для WordPress
        • Парсер для Diafan CMS
        • Парсер для DLE
        • Парсер для Drupal
        • Парсер для HostCMS
        • Парсер для Joomla
        • Парсер для Bitrix
        • Парсер для AMIRO.CMS
        • Парсер Вконтакте
        • Парсер Yandex Market
        • Мониторинг цен конкурентов
        • Импорт товаров в Яндекс Маркет
        • Импорт товаров в интернет-магазин
        • Импорт товаров в GoogleMerchant
        • Импорт и обновление прайс-листов
      • Сложная разработка
        • Yii Программист | Yii Разработчик
        • Laravel программист | Laravel разработчик
        • Разработка веб приложений
      • Прочие услуги
        • Подключение SSL-сертификата на сайт
        • Заполнение статьями
        • Регистрация домена
        • Разработка логотипа
        • Хостинг
    • 🤟 Выполненные проекты
      • Доработка проектов
      • Чистая разработка
    • Каталог услуг
      • Битрикс
        • Битрикс программирование
          • Базовая настройка интернет-магазина
          • Быстрый старт
          • Внедрение, разработка, техподдержка
          • Запуск магазина
          • Изменение внешнего вида готового магазина
          • Настройки и установки
          • Экспертиза производительности
        • Доработка готовых решений
        • Лицензии Битрикс
        • Переход между лицензиями
        • Продление лицензии
      • Битрикс24
        • Лицензии Битрикс24
        • Переход между лицензиями
        • Продление лицензии
      • Выгрузка товаров
        • Выгрузка в маркетплейсы поисковиков
        • Выгрузка в социальные сети
        • Выгрузка на торговые площадки-агрегаторы
      • Diafan доработка модуля
      • Diafan доработка шаблона
      • Joomla доработка модулей
      • Modx доработка модулей
      • Prestashop доработка модулей
      • Wordpress доработка модулей
      • Готовые сайты и интернет-магазины
        • Аудио, видео и фото техника
        • Бытовая техника и электроника
        • Мебель
        • Медицина
        • Ремонт
        • Украшения и аксессуары
      • SMM
        • Facebook
          • Вступления в группы (заявки)
          • Друзья / подписчики на профиль
          • Комментарии
          • Лайки / подписчики на FanPage / паблики
          • Лайки на посты / фото
          • Мероприятия
          • Просмотры видео
          • Репосты (reshares)
          • Установка приложений / игр
        • Twitter
          • Виджет на внешних сайтах
          • Голосования
          • Комментарии
          • Лайки
          • Подписчики / фолловеры
          • Показы/клики
          • Просмотры видео
          • Ретвиты
        • YouTube
          • Избранное / репосты
          • Комментарии
          • Лайки / дислайки
          • Подписчики на канал
          • Просмотры
        • Вконтакте
          • Друзья / подписчики на профиль
          • Комментарии
          • Лайки на записи / посты
          • Подписчики/вступившие в группу/паблик
          • Просмотры видео, постов
          • Репосты на записи / посты
        • Инстаграм
          • IGTV
          • Комментaрии
          • Лайки на фото
          • Подписка на лайки и другие услуги
          • Подписчики / фолловеры
          • Просмотры видео, историй
          • Прямой эфир
          • Сохранения, Показы, Опросы, Охват
          • Упоминания
        • Одноклассники
          • Виджет на внешних сайтах
          • Вступившие/подписчики в группы
          • Друзья на профиль
          • Классы на посты / темы / сообщения
          • Комментарии
          • Поделиться постом / темой / сообщением
        • Телеграм
          • Голосования / опросы / кнопки
          • Подписчики
          • Просмотры
          • Рейтинги / каталоги
      • SEO - продвижение
        • Внешние работы
        • Внутренние работы
      • Покупка ссылок
      • Технические работы
        • Diafan программирование
        • Getsimple программирование
        • Joomla программирование
        • Modx программирование
        • Netcat программирование
        • Opencart программирование
        • Prestashop программирование
        • Simpla программирование
        • Wordpress программист
        • Прочие работы
    • 🧐 Цены
      • Поддержка и доработка
      • Разработка веб приложений
      • Остальное
      • Основной каталог
    • Информация
      • Новости
      • Статьи
      • Вопросы и ответы
    • 😊 Отзывы
    • Контакты
    0
    Написать в Телеграм
    +7 (925) 328-87-31
    Частный разработчик  Александр
    0
    • 🧠 Обо мне
      • Назад
      • 🧠 Обо мне
      • Обо мне
      • Лицензии и сертификаты
      • Партнеры
      • Отзывы
      • Реквизиты
      • Стек технологий
    • Услуги
      • Назад
      • Услуги
      • Битрикс программирование
        • Назад
        • Битрикс программирование
        • Быстрый старт
        • Запуск магазина
        • Базовая настройка интернет-магазина
        • Настройки и установки
        • Внедрение, разработка, техподдержка
        • Экспертиза производительности
        • Изменение и доработка дизайна сайта
        • Битрикс загрузка каталога(импорт и экспорт) с сайта поставщика(импорт и экспорт товаров, цен и остатков)
      • Разработка сайтов
        • Назад
        • Разработка сайтов
        • Создание одностраничного сайта
        • Создание сайта визитки
        • Создание сайта портфолио под ключ
        • Создание интернет магазина под ключ
        • Создание сайта на основе готового шаблона
        • Разработка корпоративного сайта
      • Продвижение сайтов
        • Назад
        • Продвижение сайтов
        • Продвижение нового молодого сайта
        • Заполнение интернет магазина товарами
        • Составление семантического ядра
        • Текстовое продвижение сайта
        • Контекстная реклама
        • Yandex Direct
        • Google Adwords
        • Yandex Market
        • Микроразметка сайта
        • SMM
        • Баннерная реклама в интернете
        • Чек-лист по SEO
      • Доработка и поддержка
        • Назад
        • Доработка и поддержка
        • Битрикс разработка
        • Diafan разработка
        • Modx разработка
        • Netcat разработка
        • Simpla разработка
        • Wordpress разработка
        • Opencart разработка
        • Prestashop разработка
        • Getsimple разработка
        • Joomla разработка
        • Верстка
        • Битрикс24 разработка
        • Сопровождение сайтов
        • Поисковый аудит сайта
      • Создание парсеров
        • Назад
        • Создание парсеров
        • Парсинг DIY
          • Назад
          • Парсинг DIY
          • Парсинг Петрович
          • Парсинг Леруа Мерлен
          • Парсинг ВсеИнструменты
          • Парсинг баз строительных компаний России
          • Парсинг OBI
          • Парсинг 220 Вольт
        • Парсинг FMCG
          • Назад
          • Парсинг FMCG
          • Парсинг Утконос
          • Парсинг Перекресток
          • Парсинг Окей
          • Парсинг Карусель
          • Парсинг баз ресторанов и кафе России
          • Парсинг Ашан
          • Парсинг Азбука Вкуса
          • Парсинг Metro
        • Парсинг авиакомпаний
          • Назад
          • Парсинг авиакомпаний
          • Парсинг Яндекс Авиабилеты
          • Парсинг Skyscanner
          • Парсинг Aviasales
        • Парсинг авто
          • Назад
          • Парсинг авто
          • Парсинг Автодок.ру
          • Парсинг ZZap.ru
          • Парсинг Your-Parts.ru
          • Парсинг Exist.ru
          • Парсинг Emex.ru
        • Парсинг аптек
          • Назад
          • Парсинг аптек
          • Парсинг Фармленд
          • Парсинг Столички
          • Парсинг Самсон-Фарма
          • Парсинг Ригла
          • Парсинг Пилюли.ру
          • Парсинг ЗдравСити
          • Парсинг Живика
          • Парсинг Еаптека.ру
          • Парсинг баз медицинских клиник России
          • Парсинг баз стоматологий России
          • Парсинг Асна
          • Парсинг Аптека.ру
          • Парсинг Озерки
          • Парсинг ВИТА
          • Парсинг Аптека WER
          • Парсинг 36,6
          • Парсинг 003ms
        • Парсинг баз компаний
          • Назад
          • Парсинг баз компаний
          • Парсинг баз юристов и адвокатов России
          • Парсинг баз хостинг провайдеров России
          • Парсинг баз фитнес центров России
          • Парсинг баз транспортных компаний России
          • Парсинг баз типографий России
          • Парсинг баз страховых агентов России
          • Парсинг баз страховых агентств недвижимости России
          • Парсинг баз сервисных центров России
          • Парсинг баз рекламных агентств России
          • Парсинг баз проектных организаций России
          • Парсинг баз охранных компаний России
          • Парсинг баз отелей и гостиниц России
          • Парсинг баз ломбардов России
          • Парсинг баз разработчиков России
          • Парсинг баз производителей России
          • Парсинг баз автосервисов России
        • Парсинг дети
          • Назад
          • Парсинг дети
          • Парсинг Кораблик
          • Парсинг Дочки-Сыночки
          • Парсинг Детский мир
          • Парсинг Акушерство.ру
          • Парсинг TOY.RU
          • Парсинг myTOYS.ru
        • Парсинг дом и офис
          • Назад
          • Парсинг дом и офис
          • Парсинг Сантехника Онлайн
          • Парсинг Максидом
          • Парсинг Hoff
        • Парсинг досок объявлений
          • Назад
          • Парсинг досок объявлений
          • Парсинг Яндекс.Недвижимость
          • Парсинг Циан
          • Парсинг Домофонд
          • Парсинг Авито
        • Парсинг зоотоваров
          • Назад
          • Парсинг зоотоваров
          • Парсинг ЮниЗОО
          • Парсинг Петшоп.ру
          • Парсинг Бетховен.ру
          • Парсинг Четыре лапы
        • Парсинг книжных магазинов
          • Назад
          • Парсинг книжных магазинов
          • Парсинг Лабиринт.ру
          • Парсинг Буквоед.ру
        • Парсинг красота
          • Назад
          • Парсинг красота
          • Парсинг Улыбка Радуги
          • Парсинг Рив Гош
          • Парсинг Магнит Косметик
          • Парсинг Летуаль
          • Парсинг Иль Де Ботэ
        • Парсинг лабораторий
          • Назад
          • Парсинг лабораторий
          • Парсинг Хеликс
          • Парсинг Гемотест
        • Парсинг маркетплейсов
          • Назад
          • Парсинг маркетплейсов
          • Парсинг Яндекс.Маркет
          • Парсинг Юла
          • Парсинг Ozon.ru
          • Парсинг Комус
          • Парсинг баз оптовых компаний России
          • Парсинг Zoon.ru
        • Парсинг одежда
          • Назад
          • Парсинг одежда
          • Парсинг для Gloria Jeans
          • Парсинг Wildberries
          • Парсинг Lamoda
          • Парсинг Henderson
          • Парсинг H&M
        • Парсинг продукты
          • Назад
          • Парсинг продукты
          • Парсинг ДоДо Пицца
          • Парсинг Глобус
          • Парсинг ВкусВилл
        • Парсинг спорт
          • Назад
          • Парсинг спорт
          • Парсинг Спортмастер
          • Парсинг Кант
          • Парсинг Декатлон
        • Парсинг творчество
          • Назад
          • Парсинг творчество
          • Парсинг Леонардо
        • Парсинг украшения
          • Назад
          • Парсинг украшения
          • Парсинг Соколов
          • Парсинг Санлайт
          • Парсинг Адамас
          • Парсинг 585 золотой
        • Парсинг электрика
          • Назад
          • Парсинг электрика
          • Парсинг ВамСвет.ру
        • Парсинг электроника
          • Назад
          • Парсинг электроника
          • Парсинг ЭТМ.ру
          • Парсинг Минимакс
          • Парсинг Юлмарт
          • Парсинг Эльдорадо
          • Парсинг Холодильник.ру
          • Парсинг Ситилинк
          • Парсинг Связной
          • Парсинг Онлайн Трейд
          • Парсинг МТС
          • Парсинг М.Видео
          • Парсинг ДНС
          • Парсинг Беру.ру
          • Парсинг баз интернет магазинов России
          • Парсинг re:STORE
          • Парсинг Goods.ru
        • Парсер новостного сайта
        • Парсер организаций
        • Парсинг email
        • Парсинг вакансий и резюме
        • Парсинг интернет магазина
        • Парсинг недвижимости
        • Парсинг товаров для интернет-магазинов
        • Создание парсера Телефонов
        • Парсер для MODX
        • Парсер для Netcat
        • Парсер для Opencart
        • Парсер для Shop-Script
        • Парсер для Simpla
        • Парсер для UMI.CMS
        • Парсер для WordPress
        • Парсер для Diafan CMS
        • Парсер для DLE
        • Парсер для Drupal
        • Парсер для HostCMS
        • Парсер для Joomla
        • Парсер для Bitrix
        • Парсер для AMIRO.CMS
        • Парсер Вконтакте
        • Парсер Yandex Market
        • Мониторинг цен конкурентов
        • Импорт товаров в Яндекс Маркет
        • Импорт товаров в интернет-магазин
        • Импорт товаров в GoogleMerchant
        • Импорт и обновление прайс-листов
      • Сложная разработка
        • Назад
        • Сложная разработка
        • Yii Программист | Yii Разработчик
        • Laravel программист | Laravel разработчик
        • Разработка веб приложений
      • Прочие услуги
        • Назад
        • Прочие услуги
        • Подключение SSL-сертификата на сайт
        • Заполнение статьями
        • Регистрация домена
        • Разработка логотипа
        • Хостинг
    • 🤟 Выполненные проекты
      • Назад
      • 🤟 Выполненные проекты
      • Доработка проектов
      • Чистая разработка
    • Каталог услуг
      • Назад
      • Каталог услуг
      • Битрикс
        • Назад
        • Битрикс
        • Битрикс программирование
          • Назад
          • Битрикс программирование
          • Базовая настройка интернет-магазина
          • Быстрый старт
          • Внедрение, разработка, техподдержка
          • Запуск магазина
          • Изменение внешнего вида готового магазина
          • Настройки и установки
          • Экспертиза производительности
        • Доработка готовых решений
        • Лицензии Битрикс
        • Переход между лицензиями
        • Продление лицензии
      • Битрикс24
        • Назад
        • Битрикс24
        • Лицензии Битрикс24
        • Переход между лицензиями
        • Продление лицензии
      • Выгрузка товаров
        • Назад
        • Выгрузка товаров
        • Выгрузка в маркетплейсы поисковиков
        • Выгрузка в социальные сети
        • Выгрузка на торговые площадки-агрегаторы
      • Diafan доработка модуля
      • Diafan доработка шаблона
      • Joomla доработка модулей
      • Modx доработка модулей
      • Prestashop доработка модулей
      • Wordpress доработка модулей
      • Готовые сайты и интернет-магазины
        • Назад
        • Готовые сайты и интернет-магазины
        • Аудио, видео и фото техника
        • Бытовая техника и электроника
        • Мебель
        • Медицина
        • Ремонт
        • Украшения и аксессуары
      • SMM
        • Назад
        • SMM
        • Facebook
          • Назад
          • Facebook
          • Вступления в группы (заявки)
          • Друзья / подписчики на профиль
          • Комментарии
          • Лайки / подписчики на FanPage / паблики
          • Лайки на посты / фото
          • Мероприятия
          • Просмотры видео
          • Репосты (reshares)
          • Установка приложений / игр
        • Twitter
          • Назад
          • Twitter
          • Виджет на внешних сайтах
          • Голосования
          • Комментарии
          • Лайки
          • Подписчики / фолловеры
          • Показы/клики
          • Просмотры видео
          • Ретвиты
        • YouTube
          • Назад
          • YouTube
          • Избранное / репосты
          • Комментарии
          • Лайки / дислайки
          • Подписчики на канал
          • Просмотры
        • Вконтакте
          • Назад
          • Вконтакте
          • Друзья / подписчики на профиль
          • Комментарии
          • Лайки на записи / посты
          • Подписчики/вступившие в группу/паблик
          • Просмотры видео, постов
          • Репосты на записи / посты
        • Инстаграм
          • Назад
          • Инстаграм
          • IGTV
          • Комментaрии
          • Лайки на фото
          • Подписка на лайки и другие услуги
          • Подписчики / фолловеры
          • Просмотры видео, историй
          • Прямой эфир
          • Сохранения, Показы, Опросы, Охват
          • Упоминания
        • Одноклассники
          • Назад
          • Одноклассники
          • Виджет на внешних сайтах
          • Вступившие/подписчики в группы
          • Друзья на профиль
          • Классы на посты / темы / сообщения
          • Комментарии
          • Поделиться постом / темой / сообщением
        • Телеграм
          • Назад
          • Телеграм
          • Голосования / опросы / кнопки
          • Подписчики
          • Просмотры
          • Рейтинги / каталоги
      • SEO - продвижение
        • Назад
        • SEO - продвижение
        • Внешние работы
        • Внутренние работы
      • Покупка ссылок
      • Технические работы
        • Назад
        • Технические работы
        • Diafan программирование
        • Getsimple программирование
        • Joomla программирование
        • Modx программирование
        • Netcat программирование
        • Opencart программирование
        • Prestashop программирование
        • Simpla программирование
        • Wordpress программист
        • Прочие работы
    • 🧐 Цены
      • Назад
      • 🧐 Цены
      • Поддержка и доработка
      • Разработка веб приложений
      • Остальное
      • Основной каталог
    • Информация
      • Назад
      • Информация
      • Новости
      • Статьи
      • Вопросы и ответы
    • 😊 Отзывы
    • Контакты
    • Мой кабинет
    • Корзина0
    • +7 (925) 328-87-31
    142407 Москва и МО
    info@e-commerce-studio.ru
    • Facebook
    • Вконтакте
    • Instagram
    • Telegram
    • Одноклассники

    Расширение формы Symfony полем загрузки изображения

    • 🤓 Частный FullStack Разработчик
    • Информация
    • Статьи
    • Расширение формы Symfony полем загрузки изображения

    Расширение формы Symfony полем загрузки изображения

    {{< minver v="1.7.7" title="true" >}}

    Введение

    В этом руководстве мы создадим модуль, который расширяет форму Поставщиков (ПРОДАЖИ -> Каталог -> Бренды и Поставщики). Этот модуль решит следующую задачу «Я хочу добавить поле 'загрузка изображения' в форму добавления/редактирования поставщика, потому что хочу отображать новый логотип для каждого поставщика в моем магазине. Таким образом, это новое поле должно позволять мне добавлять, редактировать и удалять файлы изображений, связанные с поставщиком. Очевидно, что я ожидаю, что загруженные файлы будут сохранены в соответствии с тем, как PrestaShop обычно сохраняет такие файлы».

    Мы создадим модуль для решения этой задачи, используя хуки PrestaShop на странице добавления/редактирования поставщика в панели администратора, и будем следовать некоторым лучшим практикам разработки программного обеспечения, таким как принципы SOLID, чтобы сделать наш код как можно более поддерживаемым!

    Вы научитесь создавать:

    • Главный класс модуля: основной входной и крючковой точки модуля
    • Класс установщика: ответственный за процесс установки и удаления модуля
    • Создание контроллера Symfony: необходимо, так как мы добавляем новое действие контроллера «удалить изображение»
    • Сущность Doctrine: эта модель отвечает за сохранение данных изображения
    • Класс репозитория: эта модель предназначена для поиска и извлечения изображений из базы данных
    • Класс загрузчика изображений: этот класс отвечает за процесс загрузки изображений
    • Шаблон представления Twig: необходим для отображения

    Главный класс модуля

    Создадим главный класс модуля DemoExtendSymfonyForm2

    <?php
    // так как этот модуль совместим с PS 1.7.7 и позже, мы
    // можем использовать строгие типы PHP7, так как поддержка PHP5 была прекращена для PS 1.7.7
    declare(strict_types=1);
    
    // use statements
    
    if (!defined('_PS_VERSION_')) {
        exit;
    }
    // необходим для использования Composer для автозагрузки этого модуля
    require_once __DIR__.'/vendor/autoload.php';
    
    /**
     * Класс demoextendsymfonyform
     */
    class DemoExtendSymfonyForm2 extends Module
    {
        private const SUPPLIER_EXTRA_IMAGE_PATH = '/img/su/';
    
        public function __construct()
        {
            $this->name = 'demoextendsymfonyform2';
            $this->author = 'PrestaShop';
            $this->version = '1.0.0';
            $this->ps_versions_compliancy = ['min' => '1.7.7.0', 'max' => _PS_VERSION_];
    
            parent::__construct();
    
            $this->displayName = $this->l('Демонстрация форм Symfony #2');
            $this->description = $this->l(
                'Демонстрация того, как добавить поле загрузки изображения в форму Symfony'
            );
        }
    }
    

    Создадим класс установщика, ответственного за регистрацию хуков и управление базой данных:

    <?php
    declare(strict_types=1);
    
    namespace PrestaShop\Module\DemoExtendSymfonyForm\Install;
    
    use Db;
    use Module;
    
    /**
     * Класс Установщика
     * @package PrestaShop\Module\DemoExtendSymfonyForm\Install
     */
    class Installer
    {
        /**
         * Входная точка установки модуля.
         *
         * @param Module $module
         *
         * @return bool
         */
        public function install(Module $module): bool
        {
            if (!$this->registerHooks($module)) {
                return false;
            }
    
            if (!$this->installDatabase()) {
                return false;
            }
    
            return true;
        }
    
        /**
         * Входная точка удаления модуля.
         *
         * @return bool
         */
        public function uninstall(): bool
        {
            return $this->uninstallDatabase();
        }
    
        /**
         * Установить изменения в базе данных, необходимые для этого модуля.
         *
         * @return bool
         */
        private function installDatabase(): bool
        {
            $queries = [
                'CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'supplier_extra_image` (
                  `id_extra_image` int(11) NOT NULL AUTO_INCREMENT,
                  `id_supplier` int(11) NOT NULL,
                  `image_name` varchar(64) NOT NULL,
                  PRIMARY KEY (`id_extra_image`)
                ) ENGINE='._MYSQL_ENGINE_.' DEFAULT CHARSET=utf8;',
            ];
    
            return $this->executeQueries($queries);
        }
    
        /**
         * Удалить изменения в базе данных.
         *
         * @return bool
         */
        private function uninstallDatabase(): bool
        {
            $queries = [
                'DROP TABLE IF EXISTS `'._DB_PREFIX_.'supplier_extra_image`',
            ];
    
            return $this->executeQueries($queries);
        }
    
        /**
         * Зарегистрировать хуки для модуля.
         *
         * @param Module $module
         *
         * @return bool
         */
        private function registerHooks(Module $module): bool
        {
            $hooks = [
                'actionSupplierFormBuilderModifier',
                'actionAfterCreateSupplierFormHandler',
                'actionAfterUpdateSupplierFormHandler',
            ];
    
            return (bool) $module->registerHook($hooks);
        }
    
        /**
         * Вспомогательный метод для выполнения нескольких запросов к базе данных.
         *
         * @param array $queries
         *
         * @return bool
         */
        private function executeQueries(array $queries): bool
        {
            foreach ($queries as $query) {
                if (!Db::getInstance()->execute($query)) {
                    return false;
                }
            }
    
            return true;
        }
    }
    

    Используем класс Installer в главном классе модуля, добавив ниже указанный код в класс DemoExtendSymfonyForm2.

    <?php
    
    use PrestaShop\Module\DemoExtendSymfonyForm\Install\Installer;
    [...]
    
        /**
         * @return bool
         */
        public function install()
        {
            if (!parent::install()) {
                return false;
            }
    
            $installer = new Installer();
    
            return $installer->install($this);
        }
    
        /**
         * @return bool
         */
        public function uninstall()
        {
            $installer = new Installer();
    
            return $installer->uninstall() && parent::uninstall();
        }
    

    Создадим класс сущности SupplierExtraImage. Мы используем [Doctrine]({{< relref "/8/modules/concepts/doctrine/" >}}), который доступен для модулей PrestaShop с версии 1.7.6.

    <?php
    declare(strict_types=1);
    
    namespace PrestaShop\Module\DemoExtendSymfonyForm\Entity;
    use Doctrine\ORM\Mapping as ORM;
    
    /**
     * @ORM\Table()
     * @ORM\Entity(repositoryClass="PrestaShop\Module\DemoExtendSymfonyForm\Repository\SupplierExtraImageRepository")
     */
    class SupplierExtraImage
    {
        /**
         * @var int
         *
         * @ORM\Id
         * @ORM\Column(name="id_extra_image", type="integer")
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        private $id;
    
    
        /**
         * @ORM\Column(name="id_supplier", type="integer")
         */
        private $supplierId;
    
        /**
         * @var string
         *
         * @ORM\Column(type="string")
         */
        private $imageName;
    
        /**
         * @return int
         */
        public function getId(): int
        {
            return $this->id;
        }
    
        /**
         * @param int $id
         */
        public function setId(int $id): void
        {
            $this->id = $id;
        }
    
        /**
         * @return mixed
         */
        public function getSupplierId()
        {
            return $this->supplierId;
        }
    
        /**
         * @param mixed $supplierId
         */
        public function setSupplierId($supplierId): void
        {
            $this->supplierId = $supplierId;
        }
    
        /**
         * @return string
         */
        public function getImageName(): string
        {
            return $this->imageName;
        }
    
        /**
         * @param string $imageName
         */
        public function setImageName(string $imageName): void
        {
            $this->imageName = $imageName;
        }
    
    }
    

    Создадим класс SupplierExtraImageRepository:

    <?php
    
    declare(strict_types=1);
    
    namespace PrestaShop\Module\DemoExtendSymfonyForm\Repository;
    
    use Doctrine\ORM\EntityRepository;
    use PrestaShop\Module\DemoExtendSymfonyForm\Entity\SupplierExtraImage;
    
    /**
     * Класс SupplierExtraImageRepository
     * @package PrestaShop\Module\DemoExtendSymfonyForm\Repository
     */
    class SupplierExtraImageRepository extends EntityRepository
    {
        /**
         * @param $supplierId
         * @param $imageName
         */
        public function upsertSupplierImageName($supplierId, $imageName)
        {
            /** @var SupplierExtraImage $supplierExtraImage */
            $supplierExtraImage = $this->findOneBy(['supplierId' => $supplierId]);
            if (!$supplierExtraImage) {
                $supplierExtraImage = new SupplierExtraImage();
                $supplierExtraImage->setSupplierId($supplierId);
            }
            $supplierExtraImage->setImageName($imageName);
    
            $em = $this->getEntityManager();
            $em->persist($supplierExtraImage);
            $em->flush();
        }
    
        /**
         * @param SupplierExtraImage $supplierExtraImage
         */
        public function deleteExtraImage(SupplierExtraImage $supplierExtraImage)
        {
            $em = $this->getEntityManager();
            if ($supplierExtraImage) {
                $em->remove($supplierExtraImage);
                $em->flush();
            }
        }
    }
    

    Создадим функцию хука hookActionSupplierFormBuilderModifier в главном классе модуля. Этот хук доступен для [CRUD форм]({{< relref "/8/modules/sample-modules/grid-and-identifiable-object-form-hooks-usage" >}}) на страницах Symfony в PrestaShop.

    <?php
        /**
         * @param array $params
         */
        public function hookActionSupplierFormBuilderModifier(array $params)
        {
            /** @var SupplierExtraImageRepository $supplierExtraImageRepository */
            $supplierExtraImageRepository = $this->get(
                'prestashop.module.demoextendsymfonyform.repository.supplier_extra_image_repository'
            );
    
            $translator = $this->getTranslator();
            /** @var FormBuilderInterface $formBuilder */
            $formBuilder = $params['form_builder'];
            // мы добавляем в форму Symfony поле `upload_image_file`, которое будет использоваться пользователем BO для загрузки файлов изображений
            $formBuilder
                ->add('upload_image_file', FileType::class, [
                    'label' => $translator->trans('Загрузить файл изображения', [], 'Modules.DemoExtendSymfonyForm'),
                    'required' => false,
                ]);
    
            /** @var SupplierExtraImage $supplierExtraImage */
            $supplierExtraImage = $supplierExtraImageRepository->findOneBy(['supplierId' => $params['id']]);
            if ($supplierExtraImage && file_exists(_PS_SUPP_IMG_DIR_ . $supplierExtraImage->getImageName())) {
                // Когда для этого поставщика уже зарегистрировано изображение, мы добавляем в форму Symfony
                // 'image_file', чтобы предоставить пользователю BO предварительный просмотр и также предоставить кнопку "удалить"
                $formBuilder
                    ->add('image_file', CustomContentType::class, [
                        'required' => false,
                        'template' => '@Modules/demoextendsymfonyform2/src/View/upload_image.html.twig',
                        'data' => [
                            'supplierId' => $params['id'],
                            'imageUrl' => self::SUPPLIER_EXTRA_IMAGE_PATH . $supplierExtraImage->getImageName(),
                        ],
                    ]);
            }
    
        }
    

    Создадим класс SupplierExtraImageUploader:

    <?php
    declare(strict_types=1);
    
    namespace PrestaShop\Module\DemoExtendSymfonyForm\Uploader;
    
    use PrestaShop\Module\DemoExtendSymfonyForm\Entity\SupplierExtraImage;
    use PrestaShop\Module\DemoExtendSymfonyForm\Repository\SupplierExtraImageRepository;
    use PrestaShop\PrestaShop\Core\Image\Uploader\Exception\ImageOptimizationException;
    use PrestaShop\PrestaShop\Core\Image\Uploader\Exception\ImageUploadException;
    use PrestaShop\PrestaShop\Core\Image\Uploader\Exception\MemoryLimitException;
    use PrestaShop\PrestaShop\Core\Image\Uploader\Exception\UploadedImageConstraintException;
    use PrestaShop\PrestaShop\Core\Image\Uploader\ImageUploaderInterface;
    use Symfony\Component\HttpFoundation\File\UploadedFile;
    
    /**
     * Класс SupplierExtraImageUploader
     * @package PrestaShop\Module\DemoExtendSymfonyForm\Uploader
     */
    class SupplierExtraImageUploader implements ImageUploaderInterface
    {
        /** @var SupplierExtraImageRepository */
        private $supplierExtraImageRepository;
    
        /**
         * @param SupplierExtraImageRepository $supplierExtraImageRepository
         */
        public function __construct(SupplierExtraImageRepository $supplierExtraImageRepository)
        {
            $this->supplierExtraImageRepository = $supplierExtraImageRepository;
        }
    
        /**
         * @param int $supplierId
         * @param UploadedFile $image
         */
        public function upload($supplierId, UploadedFile $image)
        {
            $this->checkImageIsAllowedForUpload($image);
            $tempImageName = $this->createTemporaryImage($image);
            $this->deleteOldImage($supplierId);
    
            $originalImageName = $image->getClientOriginalName();
            $destination = _PS_SUPP_IMG_DIR_ . $originalImageName;
            $this->uploadFromTemp($tempImageName, $destination);
            $this->supplierExtraImageRepository->upsertSupplierImageName($supplierId, $originalImageName);
        }
    
        /**
         * Создает временное изображение из загруженного файла
         *
         * @param UploadedFile $image
         *
         * @throws ImageUploadException
         *
         * @return string
         */
        protected function createTemporaryImage(UploadedFile $image)
        {
            $temporaryImageName = tempnam(_PS_TMP_IMG_DIR_, 'PS');
    
            if (!$temporaryImageName || !move_uploaded_file($image->getPathname(), $temporaryImageName)) {
                throw new ImageUploadException('Не удалось создать временный файл изображения');
            }
    
            return $temporaryImageName;
        }
    
        /**
         * Загружает измененное изображение из временной папки в конечную папку изображения
         *
         * @param $temporaryImageName
         * @param $destination
         *
         * @throws ImageOptimizationException
         * @throws MemoryLimitException
         */
        protected function uploadFromTemp($temporaryImageName, $destination)
        {
            if (!\ImageManager::checkImageMemoryLimit($temporaryImageName)) {
                throw new MemoryLimitException('Невозможно загрузить изображение из-за ограничений памяти');
            }
    
            if (!\ImageManager::resize($temporaryImageName, $destination)) {
                throw new ImageOptimizationException(
                    'Произошла ошибка при загрузке изображения. Проверьте права доступа к вашей директории.'
                );
            }
    
            unlink($temporaryImageName);
        }
    
        /**
         * Удаляет старое изображение
         *
         * @param $supplierId
         */
        private function deleteOldImage($supplierId)
        {
            /** @var SupplierExtraImage $supplierExtraImage */
            $supplierExtraImage = $this->supplierExtraImageRepository->findOneBy(['supplierId' => $supplierId]);
            if ($supplierExtraImage && file_exists(_PS_SUPP_IMG_DIR_ . $supplierExtraImage->getImageName())) {
                unlink(_PS_SUPP_IMG_DIR_ . $supplierExtraImage->getImageName());
            }
        }
    
        /**
         * Проверяет, разрешено ли изображение для загрузки.
         *
         * @param UploadedFile $image
         *
         * @throws UploadedImageConstraintException
         */
        protected function checkImageIsAllowedForUpload(UploadedFile $image)
        {
            $maxFileSize = \Tools::getMaxUploadSize();
    
            if ($maxFileSize > 0 && $image->getSize() > $maxFileSize) {
                throw new UploadedImageConstraintException(
                    sprintf(
                       'Максимально допустимый размер файла "%s" байт. Размер загруженного изображения "%s".', 
                        $maxFileSize, $image->getSize()
                    ), 
                    UploadedImageConstraintException::EXCEEDED_SIZE
                );
            }
    
            if (!\ImageManager::isRealImage($image->getPathname(), $image->getClientMimeType())
                || !\ImageManager::isCorrectImageFileExt($image->getClientOriginalName())
                || preg_match('/\%00/', $image->getClientOriginalName()) // предотвращение внедрения нулевого байта
            ) {
                throw new UploadedImageConstraintException(
                    sprintf(
                        'Формат изображения "%s" не распознан, допустимые форматы: .gif, .jpg, .png',
                        $image->getClientOriginalExtension()
                    ),
                    UploadedImageConstraintException::UNRECOGNIZED_FORMAT
                );
            }
        }
    }
    

    Создадим хук hookActionAfterUpdateSupplierFormHandler в главном классе модуля:

    <?php
        /**
         * @param array $params
         */
        public function hookActionAfterUpdateSupplierFormHandler(array $params)
        {
            $this->uploadImage($params);
        }
    

    Создадим еще один хук hookActionAfterCreateSupplierFormHandler в главном классе модуля:

    <?php
        /**
         * @param array $params
         */
        public function hookActionAfterCreateSupplierFormHandler(array $params)
        {
            $this->uploadImage($params);
        }
    

    Добавим функцию UploadImage в главный класс:

    <?php
        /**
         * @param array $params
         */
        private function uploadImage(array $params): void
        {
            /** @var ImageUploaderInterface $supplierExtraImageUploader */
            $supplierExtraImageUploader = $this->get(
                'prestashop.module.demoextendsymfonyform.uploader.supplier_extra_image_uploader'
            );
    
            /** @var UploadedFile $uploadedFile */
            $uploadedFile = $params['form_data']['upload_image_file'];
    
            if ($uploadedFile instanceof UploadedFile) {
                $supplierExtraImageUploader->upload($params['id'], $uploadedFile);
            }
        }
    

    {{% notice note %}} Вы можете найти готовое решение в репозитории PrestaShop example-modules на GitHub: https://github.com/PrestaShop/example-modules/tree/master/demoextendsymfonyform2 {{% /notice %}}

    Назад к списку Следующая статья
    Категории
    • AI3
    • Android1
    • Cloud Platforms18
    • css/html3
    • Elasticsearch15
    • Git1
    • Js14
    • Linux28
    • MacOs9
    • PHP9
    • Prestashop34
    • Python3
    • React Native49
    • SEO3
    • Базы данных2
    • Бизнес7
    • Дизайн17
    • Домены9
    • Копирайтинг2
    • Мастерская1
    • Программист11
    • Психология8
    • Разработка на Битрикс285
    • Сайты11
    Это интересно
    • Изменения в Prestashop 8.0
      Изменения в Prestashop 8.0
    • Безопасное чтение загруженных файлов
      Безопасное чтение загруженных файлов
    • Пример использования хуков для сетки и формы идентифицируемого объекта
      Пример использования хуков для сетки и формы идентифицируемого объекта
    • Расширение формы страницы нового продукта
      Расширение формы страницы нового продукта
    • Сравнение между классической и новой системами перевода
      Сравнение между классической и новой системами перевода
    • Новая система перевода модулей
      Новая система перевода модулей
    • Система перевода классического модуля
      Система перевода классического модуля
    • Добавление страницы конфигурации с формами Symfony
      Добавление страницы конфигурации с формами Symfony
    • Добавление страницы конфигурации
      Добавление страницы конфигурации
    • Включение Автообновления
      Включение Автообновления
    • Взаимодействие с API
      Взаимодействие с API
    • Хорошие практики разработки модулей
      Хорошие практики разработки модулей
    • Структура файлов модуля
      Структура файлов модуля
    • Учебное пособие: Создание вашего первого модуля
      Учебное пособие: Создание вашего первого модуля
    • CI/CD для PrestaShop 1.8.7 с использованием GitHub Actions
      CI/CD для PrestaShop 1.8.7 с использованием GitHub Actions
    • Добавление ссылок модуля в боковое меню административной панели
      Добавление ссылок модуля в боковое меню административной панели
    • Переопределение или декорирование основного контроллера
      Переопределение или декорирование основного контроллера
    • Создание контроллеров модуля администратора в PrestaShop
      Создание контроллеров модуля администратора в PrestaShop
    • Как добавить блок KPI на страницы администрирования
      Как добавить блок KPI на страницы администрирования
    • Фронтальные контроллеры
      Фронтальные контроллеры

    Модуль поиска не установлен.

    ООО АА - Александр Альбертович Контакты:
    Адрес: Москва, ул. Ключик 142407 Москва,
    Телефон:+7 925 328–87–37, Электронная почта: info@e-commerce-studio.ru
    Обо мне
    Обо мне
    Лицензии и сертификаты
    Партнеры
    Отзывы
    Реквизиты
    Стек технологий














    Каталог
    Битрикс
    Битрикс24
    Выгрузка товаров
    Diafan доработка модуля
    Diafan доработка шаблона
    Joomla доработка модулей
    Modx доработка модулей
    Prestashop доработка модулей
    Wordpress доработка модулей
    Готовые сайты и интернет-магазины
    SMM
    SEO - продвижение
    Покупка ссылок
    Технические работы
    SMM
    Битрикс лицензии
    Технические работы
    Базовые работы
    Услуги
    Битрикс программирование
    Разработка сайтов
    Продвижение сайтов
    Доработка и поддержка
    Создание парсеров
    Сложная разработка
    Прочие услуги
    Доработка проектов
    Битрикс
    Диафан
    Modx
    Simpla
    WordPress
    OpenCart
    Prestashop
    Контакты

    +7 (925) 328-87-31
    пн - пт: с 9.00 до 18.00
    142407 Москва и МО
    info@e-commerce-studio.ru
    Русская версия

    English version

    © Все права защищены. 2013 - 2024 Александр.
    0
    WhatsApp Telegram