Частный разработчик  Александр
Александр
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
    • Одноклассники

    Расширение формы страницы нового продукта

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

    Расширение формы страницы нового продукта

    Новая страница продукта Back Office, представленная в версии {{< minver v="8.1.0" >}}, удалила несколько хуков, которые ранее были доступны на странице. Полный список удаленных хуков:

    • displayAdminProductsCombinationBottom
    • displayAdminProductsSeoStepBottom
    • displayAdminProductsShippingStepBottom
    • displayAdminProductsQuantitiesStepBottom
    • displayAdminProductsMainStepLeftColumnBottom
    • displayAdminProductsMainStepLeftColumnMiddle
    • displayAdminProductsMainStepRightColumnBottom
    • displayAdminProductsOptionsStepTop
    • displayAdminProductsOptionsStepBottom
    • displayAdminProductsPriceStepBottom

    Единственный хук displayAdminProduct*, который не был удален, это:

    • displayAdminProductsExtra

    {{% notice info %}} Хотя этот хук (displayAdminProductsExtra) сохранен для обеспечения обратной совместимости, его не рекомендуется использовать в новых модулях. {{% /notice %}}

    В этом руководстве мы узнаем, как расширить страницу продукта, добавив на нее пользовательские поля, как старыми, так и новыми способами.

    Наконец, мы узнаем, как добавить новую вкладку на страницу продукта, что возможно для новой страницы продукта, начиная с PrestaShop 8.1.

    Добавить пользовательское поле, до {{< minver v="8.1.0" >}}

    Пользовательское поле, до {{< minver v="8.1.0" >}}, добавлялось путем привязки к одному из хуков displayAdminProducts<Location>.

    Например, чтобы добавить пользовательское поле на вкладке SEO, вам нужно было создать модуль с таким содержимым:

    demooldhooks.php:

    declare(strict_types=1);
    
    use Symfony\Component\Form\Extension\Core\Type\TextType;
    
    class DemoOldHooks extends Module
    {
      public function __construct()
      {
        // [...]
      }
    
      /**
       * @return bool
       */
      public function install()
      {
          return parent::install() && $this->registerHook(['displayAdminProductsSeoStepBottom']);
      }
    
      public function hookDisplayAdminProductsSeoStepBottom($params)
      {
        $productId = $params['id_product'];
        $formFactory = $this->get('form.factory');
        $twig = $this->get('twig');
    
        $product = new Product($productId);
    
        $form = $formFactory
          ->createNamedBuilder('seo_special_field', TextType::class, "")
          ->getForm();
    
        $template = '@Modules/demooldhooks/views/templates/seo_special_field.html.twig';
    
        return $twig->render($template, [
          'seo_special_field' => $form->createView()
        ]);
      }
    }
    

    views/templates/seo_special_field.html.twig:

    <h3>SEO Специальное поле</h3>
    {{ form_widget(seo_special_field) }}
    

    До {{< minver v="8.1.0" >}}, это создавало:

    Пользовательское поле на вкладке SEO в старых версиях PrestaShop

    Начиная с {{< minver v="8.1.0" >}}, это поле не будет отображаться, так как хук (displayAdminProductsSeoStepBottom) больше не доступен.

    Добавить пользовательское поле, начиная с {{< minver v="8.1.0" >}}

    Для того чтобы сделать то же самое, начиная с {{< minver v="8.1.0" >}}, мы будем использовать хук actionProductFormBuilderModifier и модифицировать FormBuilder продукта.

    Сначала создайте модуль с файлом composer.json, [как указано здесь]({{< relref "/8/modules/concepts/composer" >}}).

    demonewhooks.php:

    declare(strict_types=1);
    
    use DemoNewHooks\Form\Modifier\ProductFormModifier;
    
    class DemoNewHooks extends Module
    {
        public function __construct()
        {
            // [...]
        }
    
        /**
         * @return bool
         */
        public function install()
        {
            return parent::install() && $this->registerHook(['actionProductFormBuilderModifier']);
        }
        
        /**
         * Modify product form builder
         *
         * @param array $params
         */
        public function hookActionProductFormBuilderModifier(array $params): void
        {
            /** @var ProductFormModifier $productFormModifier */
            $productFormModifier = $this->get(ProductFormModifier::class);
            $productId = (int) $params['id'];
    
            $productFormModifier->modify($productId, $params['form_builder']);
        }
    }
    

    config/services.yml:

    services:
        DemoNewHooks\Form\Modifier\ProductFormModifier:
            autowire: true
            public: true
            arguments:
                $formBuilderModifier: '@form.form_builder_modifier'
    

    src/Form/Modifier/ProductFormModifier.php:

    declare(strict_types=1);
    
    namespace DemoNewHooks\Form\Modifier;
    
    use PrestaShopBundle\Form\FormBuilderModifier;
    use Symfony\Component\Form\Extension\Core\Type\TextType;
    use Symfony\Component\Form\FormBuilderInterface;
    
    final class ProductFormModifier
    {
        /**
         * @var FormBuilderModifier
         */
        private $formBuilderModifier;
    
        /**
         * @param FormBuilderModifier $formBuilderModifier
         */
        public function __construct(
            FormBuilderModifier $formBuilderModifier
        ) {
            $this->formBuilderModifier = $formBuilderModifier;
        }
    
        /**
         * @param int|null $productId
         * @param FormBuilderInterface $productFormBuilder
         */
        public function modify(
            int $productId,
            FormBuilderInterface $productFormBuilder
        ): void {
         
            $seoTabFormBuilder = $productFormBuilder->get('seo');
            $this->formBuilderModifier->addAfter(
                $seoTabFormBuilder, // вкладка
                'tags', // input/form после/перед которым вставлять
                'demo_module_custom_field', // имя вашего поля
                TextType::class, // тип вашего поля
                [
                    'label' => 'SEO Специальное поле', // можно удалить метку, если она не нужна, передав 'label' => false
                    'label_attr' => [ // кастомизация метки с любыми HTML атрибутами
                        'title' => 'h2',
                        'class' => 'text-info',
                    ],
                    'attr' => [
                        'placeholder' => 'SEO Специальное поле',
                    ],
                    'data' => "",
                    'empty_data' => '',
                    'form_theme' => '@PrestaShop/Admin/TwigTemplateForm/prestashop_ui_kit_base.html.twig',
                ]
            );
        }
    }
    

    Этот модуль использует модификатор строителя форм (FormBuilderModifier) и добавляет поле TextType в форму вкладки SEO после существующего элемента формы tags.

    FormBuilderModifier привязан к actionProductFormBuilderModifier.

    Эти изменения создают следующий результат:

    Пользовательское поле на вкладке SEO в новых версиях PrestaShop

    {{% notice note %}} Новый способ добавления пользовательских полей на страницу продукта позволяет более точно позиционировать их. Теперь можно разместить свои поля/формы именно там, где вам нужно. {{% /notice %}}

    Шпаргалка по старым/новым хукам / новым хукам

    Хук: actionProductFormBuilderModifier

    • Хук: [action<Object>FormBuilderModifier]({{< relref "/8/modules/concepts/hooks/list-of-hooks/actionFormBuilderModifier" >}})
    Старый хук Расположение на странице Вкладка формы Вставлено
    displayAdminProductsSeoStepBottom Низ вкладки SEO seo после tags
    displayAdminProductsCombinationBottom Низ вкладки Комбинации combinations после availability
    displayAdminProductsShippingStepBottom Низ вкладки Доставка shipping после carriers
    displayAdminProductsQuantitiesStepBottom Низ вкладки Количества stock после low_stock_threshold
    displayAdminProductsMainStepLeftColumnBottom Вкладка Основные настройки, под связанными продуктами description после related_products
    displayAdminProductsMainStepLeftColumnMiddle Вкладка Основные настройки, под описанием description после description
    displayAdminProductsMainStepRightColumnBottom Вкладка Основные настройки, под созданием категории description после categories
    displayAdminProductsOptionsStepTop Верх вкладки Опции options перед visibility
    displayAdminProductsOptionsStepBottom Низ вкладки Опции options после product_suppliers
    displayAdminProductsPriceStepBottom Низ вкладки Цены pricing после priority_management

    Детали типа формы: EditProductFormType

    Расширить подформу

    Можно также расширить подформы, например, чтобы добавить новый input на каждую комбинацию продукта:

    • Привязаться к хуку actionProductCombinationFormBuilderModifier ([action<Object>FormBuilderModifier]({{< relref "/8/modules/concepts/hooks/list-of-hooks/actionFormBuilderModifier" >}}))
    /**
     * Хук, модифицирующий структуру формы комбинации.
     *
     * @param array $params
     */
    public function hookActionCombinationFormFormBuilderModifier(array $params): void
    {
        /** @var CombinationFormModifier $productFormModifier */
        $productFormModifier = $this->get(CombinationFormModifier::class);
        $combinationId = isset($params['id']) ? new CombinationId((int) $params['id']) : null;
    
        $productFormModifier->modify($combinationId, $params['form_builder']);
    }
    

    src/Form/Modifier/CombinationFormModifier.php:

    // [...]
    class CombinationFormModifier
    {
        // [...]
    
        /**
         * @param CombinationId|null $combinationId
         * @param FormBuilderInterface $combinationFormBuilder
         */
        public function modify(
            ?CombinationId $combinationId,
            FormBuilderInterface $combinationFormBuilder
        ): void {
            $idValue = $combinationId ? $combinationId->getValue() : null;
            $customCombination = new CustomCombination($idValue);
            $this->addCustomField($customCombination, $combinationFormBuilder);
        }
    
        /**
         * @param CustomCombination $customCombination
         * @param FormBuilderInterface $combinationFormBuilder
         *
         * @see demoproductform::hook
         */
        private function addCustomField(CustomCombination $customCombination, FormBuilderInterface $combinationFormBuilder): void
        {
            $this->formBuilderModifier->addAfter(
                $combinationFormBuilder,
                'references',
                'demo_module_custom_field',
                TextType::class,
                [
                    'label' => $this->translator->trans('Демо пользовательское поле', [], 'Modules.Demoproductform.Admin'),
                    'label_attr' => [
                        'title' => 'h2',
                        'class' => 'text-info',
                    ],
                    'attr' => [
                        'placeholder' => $this->translator->trans('Ваш пример текста здесь', [], 'Modules.Demoproductform.Admin'),
                    ],
                    'data' => $customCombination->custom_field,
                    'empty_data' => '',
                    'form_theme' => '@PrestaShop/Admin/TwigTemplateForm/prestashop_ui_kit_base.html.twig',
                ]
            );
        }
    }
    

    Этот пример добавит input TextType на каждую Комбинацию продукта.

    Полный рабочий пример и реализация доступны в репозитории example-module.

    Добавить пользовательскую вкладку на страницу продукта

    {{< minver v="8.1.0" >}} представила новую функцию: пользовательские вкладки на странице продукта.

    Полный рабочий пример реализации доступен в репозитории example-module.

    • Вы можете расширить строитель формы продукта с помощью хука actionProductFormBuilderModifier и созданного модификатора:

    demonewhooks.php:

    declare(strict_types=1);
    
    use DemoNewHooks\Form\Modifier\ProductFormModifier;
    
    class DemoNewHooks extends Module
    {
        public function __construct()
        {
            // [...]
        }
    
        /**
         * @return bool
         */
        public function install()
        {
            return parent::install() && $this->registerHook(['actionProductFormBuilderModifier']);
        }
        
        /**
         * Modify product form builder
         *
         * @param array $params
         */
        public function hookActionProductFormBuilderModifier(array $params): void
        {
            /** @var ProductFormModifier $productFormModifier */
            $productFormModifier = $this->get(ProductFormModifier::class);
            $productId = (int) $params['id'];
    
            $productFormModifier->modify($productId, $params['form_builder']);
        }
    }
    

    config/services.yml:

    services:
        DemoNewHooks\Form\Modifier\ProductFormModifier:
            autowire: true
            public: true
            arguments:
                $formBuilderModifier: '@form.form_builder_modifier'
    

    src/Form/Modifier/ProductFormModifier.php:

    declare(strict_types=1);
    
    namespace DemoNewHooks\Form\Modifier;
    
    use PrestaShopBundle\Form\FormBuilderModifier;
    use Symfony\Component\Form\Extension\Core\Type\TextType;
    use Symfony\Component\Form\FormBuilderInterface;
    
    final class ProductFormModifier
    {
        /**
         * @var FormBuilderModifier
         */
        private $formBuilderModifier;
    
        /**
         * @param FormBuilderModifier $formBuilderModifier
         */
        public function __construct(
            FormBuilderModifier $formBuilderModifier
        ) {
            $this->formBuilderModifier = $formBuilderModifier;
        }
    
        /**
         * @param int|null $productId
         * @param FormBuilderInterface $productFormBuilder
         */
        public function modify(
            int $productId,
            FormBuilderInterface $productFormBuilder
        ): void {
         
            $seoTabFormBuilder = $productFormBuilder->get('seo');
            $this->formBuilderModifier->addAfter(
                $seoTabFormBuilder, // вкладка
                'tags', // элемент формы, после/перед которым нужно вставить
                'demo_module_custom_field', // ваше имя поля
                TextType::class, // ваш тип поля
                [
                    'label' => 'SEO Специальное поле', // можно убрать метку, передав 'label' => false
                    'label_attr' => [ // настройка метки с любым HTML атрибутом
                        'title' => 'h2',
                        'class' => 'text-info',
                    ],
                    'attr' => [
                        'placeholder' => 'SEO Специальное поле',
                    ],
                    // это просто пример, в реальном сценарии может быть класс провайдера данных для более сложных случаев
                    'data' => "",
                    'empty_data' => '',
                    'form_theme' => '@PrestaShop/Admin/TwigTemplateForm/prestashop_ui_kit_base.html.twig',
                ]
            );
        }
    }
    

    Этот модуль использует модификатор формы (FormBuilderModifier), добавляя поле типа TextType в форму вкладки SEO, после существующего элемента формы tags.

    FormBuilderModifier подключен к actionProductFormBuilderModifier.

    Эти изменения приводят к следующему:

    Пользовательское поле на вкладке SEO в новых версиях PrestaShop

    {{% notice note %}} Этот новый способ добавления пользовательских полей на страницу продукта позволяет более точно позиционировать их. Теперь вы можете размещать свои поля и формы именно там, где хотите. {{% /notice %}}

    Шпаргалка по старым/новым хукам

    Хук: actionProductFormBuilderModifier

    • Хук: [action<Object>FormBuilderModifier]({{< relref "/8/modules/concepts/hooks/list-of-hooks/actionFormBuilderModifier" >}})
    Старый хук Расположение на странице Вкладка формы Вставлено после
    displayAdminProductsSeoStepBottom Внизу вкладки SEO seo после tags
    displayAdminProductsCombinationBottom Внизу вкладки Комбинации combinations после availability
    displayAdminProductsShippingStepBottom Внизу вкладки Доставка shipping после carriers
    displayAdminProductsQuantitiesStepBottom Внизу вкладки Количество stock после low_stock_threshold
    displayAdminProductsMainStepLeftColumnBottom Вкладка основных настроек, под связанным продуктом description после related_products
    displayAdminProductsMainStepLeftColumnMiddle Вкладка основных настроек, под описанием description после description
    displayAdminProductsMainStepRightColumnBottom Вкладка основных настроек, под созданием категории description после categories
    displayAdminProductsOptionsStepTop Вверху вкладки Опции options перед visibility
    displayAdminProductsOptionsStepBottom Внизу вкладки Опции options после product_suppliers
    displayAdminProductsPriceStepBottom Внизу вкладки Цены pricing после priority_management

    Детали типа формы: EditProductFormType

    Расширение подформы

    Подформы также могут быть расширены, например, чтобы добавить новый ввод на каждую комбинацию продукта:

    • Подключите к хуку actionProductCombinationFormBuilderModifier ([action<Object>FormBuilderModifier]({{< relref "/8/modules/concepts/hooks/list-of-hooks/actionFormBuilderModifier" >}}))
    /**
     * Хук, который изменяет структуру формы комбинации.
     *
     * @param array $params
     */
    public function hookActionCombinationFormFormBuilderModifier(array $params): void
    {
        /** @var CombinationFormModifier $productFormModifier */
        $productFormModifier = $this->get(CombinationFormModifier::class);
        $combinationId = isset($params['id']) ? new CombinationId((int) $params['id']) : null;
    
        $productFormModifier->modify($combinationId, $params['form_builder']);
    }
    

    src/Form/Modifier/CombinationFormModifier.php:

    // [...]
    class CombinationFormModifier
    {
        // [...]
    
        /**
         * @param CombinationId|null $combinationId
         * @param FormBuilderInterface $combinationFormBuilder
         */
        public function modify(
            ?CombinationId $combinationId,
            FormBuilderInterface $combinationFormBuilder
        ): void {
            $idValue = $combinationId ? $combinationId->getValue() : null;
            $customCombination = new CustomCombination($idValue);
            $this->addCustomField($customCombination, $combinationFormBuilder);
        }
    
        /**
         * @param CustomCombination $customCombination
         * @param FormBuilderInterface $combinationFormBuilder
         *
         * @see demoproductform::hook
         */
        private function addCustomField(CustomCombination $customCombination, FormBuilderInterface $combinationFormBuilder): void
        {
            $this->formBuilderModifier->addAfter(
                $combinationFormBuilder,
                'references',
                'demo_module_custom_field',
                TextType::class,
                [
                    'label' => $this->translator->trans('Демонстрационное пользовательское поле', [], 'Modules.Demoproductform.Admin'),
                    'label_attr' => [
                        'title' => 'h2',
                        'class' => 'text-info',
                    ],
                    'attr' => [
                        'placeholder' => $this->translator->trans('Ваш пример текста здесь', [], 'Modules.Demoproductform.Admin'),
                    ],
                    'data' => $customCombination->custom_field,
                    'empty_data' => '',
                    'form_theme' => '@PrestaShop/Admin/TwigTemplateForm/prestashop_ui_kit_base.html.twig',
                ]
            );
        }
    }
    

    Этот пример добавит ввод типа TextType в каждую Комбинацию продукта Продукт. Полный рабочий пример и реализацию можно найти в нашем репозитории примеров модулей.

    Добавление пользовательской вкладки на страницу продукта

    {{< minver v="8.1.0" >}} представил новую функцию: пользовательские вкладки на странице продукта.

    Полный рабочий пример реализации можно найти в нашем репозитории примеров модулей.

    • Вы можете расширить конструктор формы продукта с помощью хука actionProductFormBuilderModifier с созданным модификатором:

    demonewhooks.php:

    declare(strict_types=1);
    
    use DemoNewHooks\Form\Modifier\ProductFormModifier;
    
    class DemoNewHooks extends Module
    {
        public function __construct()
        {
            // [...]
        }
    
        /**
         * @return bool
         */
        public function install()
        {
            return parent::install() && $this->registerHook(['actionProductFormBuilderModifier']);
        }
        
        /**
         * Изменить конструктор формы продукта
         *
         * @param array $params
         */
        public function hookActionProductFormBuilderModifier(array $params): void
        {
            /** @var ProductFormModifier $productFormModifier */
            $productFormModifier = $this->get(ProductFormModifier::class);
            $productId = (int) $params['id'];
    
            $productFormModifier->modify($productId, $params['form_builder']);
        }
    }
    

    config/services.yml:

    services:
        DemoNewHooks\Form\Modifier\ProductFormModifier:
            autowire: true
            public: true
            arguments:
                $formBuilderModifier: '@form.form_builder_modifier'
    

    src/Form/Modifier/ProductFormModifier.php:

    declare(strict_types=1);
    
    namespace DemoNewHooks\Form\Modifier;
    
    use PrestaShopBundle\Form\FormBuilderModifier;
    use Symfony\Component\Form\Extension\Core\Type\TextType;
    use Symfony\Component\Form\FormBuilderInterface;
    
    final class ProductFormModifier
    {
        /**
         * @var FormBuilderModifier
         */
        private $formBuilderModifier;
    
        /**
         * @param FormBuilderModifier $formBuilderModifier
         */
        public function __construct(
            FormBuilderModifier $formBuilderModifier
        ) {
            $this->formBuilderModifier = $formBuilderModifier;
        }
    
        /**
         * @param int|null $productId
         * @param FormBuilderInterface $productFormBuilder
         */
        public function modify(
            int $productId,
            FormBuilderInterface $productFormBuilder
        ): void {
            
        }
    }
    
    • Создайте новый тип для вашей пользовательской вкладки, например CustomTabType, и добавьте ввод MoneyType в эту вкладку:

    src/Form/Type/CustomTabType.php:

    declare(strict_types=1);
    
    namespace PrestaShop\Module\DemoProductForm\Form\Type;
    
    use PrestaShopBundle\Form\Admin\Type\TranslatorAwareType;
    use Symfony\Component\Form\Extension\Core\Type\MoneyType;
    use Symfony\Component\Form\FormBuilderInterface;
    use Symfony\Component\OptionsResolver\OptionsResolver;
    use Symfony\Component\Translation\TranslatorInterface;
    use Symfony\Component\Validator\Constraints\NotBlank;
    use Symfony\Component\Validator\Constraints\PositiveOrZero;
    use Symfony\Component\Validator\Constraints\Type;
    
    class CustomTabType extends TranslatorAwareType
    {
        /**
         * @var \Currency
         */
        private $defaultCurrency;
    
        /**
         * @param TranslatorInterface $translator
         * @param array $locales
         * @param \Currency $defaultCurrency
         */
        public function __construct(
            TranslatorInterface $translator,
            array $locales,
            \Currency $defaultCurrency
        ) {
            parent::__construct($translator, $locales);
            $this->defaultCurrency = $defaultCurrency;
        }
    
        /**
         * {@inheritDoc}
         */
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            parent::buildForm($builder, $options);
            $builder
                ->add('custom_price', MoneyType::class, [
                    'label' => $this->trans('Моя пользовательская цена', 'Modules.Demoproductform.Admin'),
                    'label_tag_name' => 'h3',
                    'currency' => $this->defaultCurrency->iso_code,
                    'required' => false,
                    'constraints' => [
                        new NotBlank(),
                        new Type(['type' => 'float']),
                        new PositiveOrZero(),
                    ],
                ])
            ;
        }
    
        /**
         * {@inheritDoc}
         */
        public function configureOptions(OptionsResolver $resolver)
        {
            parent::configureOptions($resolver);
    
            $resolver
                ->setDefaults([
                    'label' => $this->trans('Настройка', 'Modules.Demoproductform.Admin'),
                ])
            ;
        }
    }
    

    Объявите вашу службу в вашем config.yml:

    services:
        DemoNewHooks\Form\Type\CustomTabType:
            class: DemoNewHooks\Form\Type\CustomTabType
            parent: 'form.type.translatable.aware'
            public: true
            arguments:
                - '@=service("prestashop.adapter.data_provider.currency").getDefaultCurrency()'
            tags:
                - { name: form.type }
    

    Добавьте оператор use в ваш ProductFormModifier:

    use DemoNewHooks\Form\Type\CustomTabType;
    

    Наконец, добавьте этот CustomTabType в переменную $productFormBuilder в вашем методе modify в ProductFormModifier:

    /**
     * @param int|null $productId
     * @param FormBuilderInterface $productFormBuilder
     */
    public function modify(
        int $productId,
        FormBuilderInterface $productFormBuilder
    ): void {
        
        $idValue = $productId ? $productId->getValue() : null;
        $customProduct = new CustomProduct($idValue);
    
        $this->formBuilderModifier->addAfter(
            $productFormBuilder,
            'pricing',
            'custom_tab',
            CustomTabType::class,
            [
                'data' => [
                    'custom_price' => $customProduct->custom_price,
                ],
            ]
        );
    }
    

    {{% notice note %}} Любой тип, добавленный напрямую в $productFormBuilder (а не во вкладыш), будет считаться вкладкой. {{% /notice %}}

    Обратная совместимость для хука displayAdminProductsExtra

    Пользовательский тип формы ExtraModulesType был добавлен в {{< minver v="8.1.0" >}}, чтобы обеспечить обратную совместимость для модулей, реализующих хук displayAdminProductsExtra.

    Если модуль регистрируется в хуке displayAdminProductsExtra, на новой странице продукта будет добавлена пользовательская вкладка, обрабатываемая ExtraModulesType.

    {{% notice info %}} Хотя этот хук (displayAdminProductsExtra) сохранен для обратной совместимости, его не рекомендуется использовать для новых модулей. {{% /notice %}}

    public function hookDisplayAdminProductsExtra(array $params): string
    {
        $productId = $params['id_product'];
        $customProduct = new CustomProduct($productId);
    
        /** @var EngineInterface $twig */
        $twig = $this->get('twig');
    
        return $twig->render('@Modules/demoproductform/views/templates/admin/extra_module.html.twig', [
            'customProduct' => $customProduct,
        ]);
    }
    

    Полный рабочий пример и реализация доступны в нашем репозитории примеров модулей.

    Обработка данных, измененных FormBuilderModifier

    Вам нужно реализовать соответствующий [actionAfterCreate<FormName>FormHandler]({{< relref "/8/modules/concepts/hooks/list-of-hooks/actionAfterCreateFormHandler" >}}) или [actionAfterUpdate<FormName>FormHandler]({{< relref "/8/modules/concepts/hooks/list-of-hooks/actionAfterUpdateFormHandler" >}}) хук, как показано в нашем репозитории примеров модулей.

    Назад к списку Следующая статья
    Категории
    • AI3
    • Android1
    • Cloud Platforms18
    • css/html3
    • Elasticsearch15
    • Git1
    • Js13
    • Linux27
    • 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 полем загрузки изображения
    • Сравнение между классической и новой системами перевода
      Сравнение между классической и новой системами перевода
    • Новая система перевода модулей
      Новая система перевода модулей
    • Система перевода классического модуля
      Система перевода классического модуля
    • Добавление страницы конфигурации с формами 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