Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NEW! Добавление нового типа опции - списки цветов. #761

Merged
merged 7 commits into from
Jan 30, 2023

Conversation

Alexij2
Copy link
Contributor

@Alexij2 Alexij2 commented Jan 14, 2023

Что оно делает?

Добавление нового типа опции - списки цветов.
По умолчанию 21 цвет заложен в поля по умолчанию.
Если какие-то цвета не нужны - можно удалить.
Если какие-то цвета необходимы дополнительно - просто заполняются и сохраняются.

Зачем это нужно?

Нужно для упрощения, расширения работы с цветами для товаров.
Значения цветов хранятся как названия в БД. те Красынй, Синий и т.д.
Данный тип поля производит рендер в админке через равенство по тексту и отображает цвет, который заполнен был в допустимых значениях для этой опции.
Если вы уже делали мульиселект со списокм цветов и он был текстом, то есть шансы, что и перезаполнять товары не придется.

Отображение в админке:

Для вывода на лицевой (front-end) части сайта для опции доступен набор цвет + его код, поэтому создать удобное отображение для этой опции не составит труда.

@Alexij2
Copy link
Contributor Author

Alexij2 commented Jan 18, 2023

Последним и предпоследним комитами - убрал предустановленные цвета.
Опишем в документации как можно заполнять.

@Ruslan-Aleev
Copy link
Member

Тут еще лексиконы убрать нужно, только для русского оставить, а для других языков - через crowdin.

@Alexij2
Copy link
Contributor Author

Alexij2 commented Jan 23, 2023

Запишу сюда доку по полю.

Еще одно нововведение в minishop2 это новый тип опции – цвета. Суть его работы для товара – выбрать перечень цветов относящийся к этому товару. Список цветов вы формируете сами в момент настройки данной опции в админке.

При заполнении появляются 2 поля. Первое поле – название цвета, второе – значение, его код в hex формате понимает как #xxx, так и #xxxXXX. Rgb, rgba не поддерживает.
Ввод названий и значений цветов происходит полностью в ручную.
Двойной клик по полю – открывает редактирование поля.
Если верно ввели Значение цвета, то после нажатия Enter поле будет сразу же подсвечено этим цветом. Если в поле нет знака решетки #, то поле считается текстом и не обрабатывается рендером.
Если в поле есть # но не верные символы, то подчеркнет красным цветом ошибку.

Ошибка больше информационная. Дает сохранить данные.

Техническая часть:

Поле Название – пишется в БД. Поэтому на фронте можно использовать в разных вариантах.

  • Выводить, как через обычный разделитель запятая, как и все остальные опции (сохраняется стандартный вывод, не ломается совместимость для товаров).
  • Или дополнительно выводить окрас через обработку этого поля.

Colorx – пример имени нашей опции с цветом. Стандартный вывод даст цвета и размеры в выпадающем списке:
{'msOptions' | snippet : ['options' => 'colorx,size']}

Так же в стандартном выводе через сниппет
{'msProductOptions' | snippet : ['tpl' => '']}
Присутствует не только значения у товара, но и список всех возможных значений данного поля, они находятся в свойстве properties

Визуальный вывод:

Например на самой странице товара для нашего поля будет следующий вывод:
Тут находится список цветов в массиве - {$_modx->resource['colorx']}, далее в {$_modx->resource['colorx.properties']} – список всех возможных значений,
тогда мы можем для примера вывести цвета какие у нас есть с визуальной подсветкой цвета:

{set $colall = $_modx->resource['colorx.properties']  | fromJSON}
{foreach $_modx->resource['colorx'] as $name}
    {foreach $colall.values as $item}
        {if $item['name'] == $name}
            <span style="background-color:{$item['value']}">{$name}</span>
        {/if}
    {/foreach}
{/foreach}

Таким образом не составит труда выводить в нужном формате данный тип свойства.

@Alexij2
Copy link
Contributor Author

Alexij2 commented Jan 23, 2023

Тут еще лексиконы убрать нужно, только для русского оставить, а для других языков - через crowdin.

Ну вот... а я старался, переводил... ((

@webinmd
Copy link
Collaborator

webinmd commented Jan 24, 2023

Протестировал, по функционалу все что заявлено - работает.
По коду посмотрел немного, единственно за что зацепился взгляд это название переменной $tplka.

Copy link
Contributor Author

@Alexij2 Alexij2 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Тестирование вливания. оно ли?

…а на это поле. Чтобы небыло ошибок в коносли тк value в таком случае не определен
…ния.

И небольшой фикс отображения значения, чтобы можно было использовать не только как цвет.
… поле не считается цветом и выводится текст как есть.
@Ruslan-Aleev Ruslan-Aleev force-pushed the Новый_тип_поля_цвет branch from 5771f04 to ed7d827 Compare January 25, 2023 14:33
@biz87 biz87 merged commit 8d6445f into modx-pro:master Jan 30, 2023
@Serjpiotr
Copy link

Господа, подскажите, как можно реализовать связи по цветам, даже не сами связи, а вывод точки с цветом в каталоге. Сейчас выводить просто название цвета, мне же нужно вывести код цвета

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants