ACtech
ACtech
учимся и разрабатываем

ShopScript: создать свой плагин или править чужой код?

03.06.2024

Выбор системы разработки и управления сайтом CMS производится по нескольким критериям, среди которых можно выделить функциональность, стоимость и распространенность. На этапе выбора CMS вопросы поддержки, обновления расширений и доработки функциональности уходят на второй план. Но только до того момента, пока не возникает необходимость обращаться за помощью к разработчикам. А здесь уже возможны разные варианты развития событий, о которых желательно знать и быть готовым.

По роду своей деятельности мне приходится заниматься поддержкой интернет-магазинов, дорабатывать сторонние плагины и разрабатывать новые для ShopScript, в результате чего возникают различные моменты, которые со стороны могут быть не видны. Если пользователь платит за программный продукт, то он ожидает, что его поддержка и обновление будут соответсвующим. Так ли это на самом деле?

В общем случае CMS состоит из системы (ядра) и расширений (приложений, плагинов, надстроек и др.).

Если говорить о Webasyst, то это CMS с открытым исходным кодом, основная функциональность в рамках которой реализуется за счет использования приложений, плагинов и тем от разных разработчиков. В этом есть как плюсы, так и минусы. К плюсам относится открытость системы, что позволяет дорабатывать функциональность под себя и не зависеть полностью от видения её функциональности разработчиками системы, как это происходит в проектах с закрытым исходным кодом. К минусам можно отнести необходимость взаимодействия с большим количеством разных разработчиков. Соответственно, качество расширений и уровень их поддержки тоже будет разным.

Несмотря на общую коммерческую направленность Webasyst в ней есть и бесплатные приложения - Сайт, Блог, Логи, Команда и др. При выборе бесплатной темы можно создать бесплатный сайт или блог, но не интернет-магазин.

Для создания интернет-магазина необходимо приобрести коммерческое приложение ShopScript с открытым исходным кодом, которое представляет собой платформу для создания проектов электронной коммерции. Необходимость платить за данную возможность может кого-то отпугнуть. Сразу возникают вопросы, насколько функциональна данная платформа и каков ассортимент плагинов для неё, регулярность обновлений, качество документации, техническая поддержка и др. Если ставить общую оценку всему этому, то на мой взгляд выйдет 4 из 5, поскольку встречал и более детальную документацию, и поддержку со 100% получением ответа на любой вопрос. Но в целом могу сказать так: ShopScript позволяет создавать работающие проекты и зарабатывать. Не без нюансов, но где их нет?

После первоначального знакомства с CMS имеет смысл задуматься над таким вопросом: будет ли с нашей стороны производиться доработка функциональности (штатными или внешними специалистами) или не будет, в надежде на то, что обновления купленных плагинов будут производиться оперативно?

Начну с расширений, поскольку чаще с этим работаю.

Для начала нужно отметить то, в официальный магазин Webasyst попадают расширения только после их проверки и отбора. С одной стороны это неплохо, что изначально все расширения проходят модерацию. Но с другой стороны это означает то, что нужная функциональность существует в единственном экземпляре, не все заявленные плагины выкладываются в магазине по усмотрению его сотрудников, а качество расширений проверяется на основе отзывов пользователей. При значительном количестве обоснованных претензий к расширениям они удаляются из магазина.

Если расширение функционально, то проблем с тем, что оно существует в единственном экземпляре нет. Если многое не устраивает в предложенном расширении или требует доработки, то выбрать альтернативу зачастую не получится, поскольку её просто нет. В связи с этим наличие более 350 бесплатных и более 1220 платных приложений и плагинов в магазине Webasyst уже не кажется пределом мечтаний, по сравнению с пол сотней тысяч плагинов для того же WordPress. Но не стоит думать, что всё самое лучшее для Webasyst предлагается только за деньги. Среди бесплатных расширений есть плагины для работы с банками, службами доставки, соцсетями, различными сервисами, данными в разных форматах и др.

Для оценки того, насколько подходит вам по функциональности Webasyst и ShopScript, необходимо произвести поиск в магазине Webasyst наличия критически важных расширений и интеграции с требуемыми сервисами, а также отзывов об их работе. Если чего-то нет, то сразу возникает вопрос, кто для вас создаст его и сколько это может стоить?

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

Одни расширения обновляются редко, а другие могут обновляться относительно регулярно.

Если в код расширения были внесены собственные доработки, то его обновление их перезапишет и придётся заново всё восстанавливать. Для чего редактировать чужой код, если в Webasyst есть возможность разрабатывать свои приложения и плагины? Зачем лезть в код системы?

Отвечаю. Как бы гибко и функционально не была разработана система и расширения, достаточно часто возникают ситуации, когда для получения нужной функциональности приходится изменять чужой код.

Например, в ShopScript реализована автопрокрутка вверх при переходе из таблицы товаров в карточку товара и обратно. Предположим, нам нужно отредактировать 10 товаров из середины таблицы. Мы прокручиваем таблицу к ним, выбираем товар, открываем карточку, вносим правку, сохраняем и возвращаемся в таблицу. Но вместо того, чтобы вернуться в ней к выбранной записи, происходит автоматическая прокрутка к началу таблицы. Приходится открывать вторую вкладку в браузере чтобы на одной вкладке перемещаться по таблице, а на другой редактировать нужный товар.

Для решения этой проблемы можно попробовать создать плагин, который будет отслеживать переход между страницами и по таймеру возвращать прокрутку на нужное значение. Но гораздо проще и практичнее открыть один из системных файлов ShopScript и просто закомментировать ненужную функциональность. Очередное обновление ShopScript снесёт эту правку. Значит, нужно создать файл изменений, в котором подробно написать, что необходимо дописать после обновления системы.

Можно работать без таких «заморочек»? Можно. Отказ от доработки чужого кода позволяет не беспокоиться по поводу обновлений. Но в этом случае возникает полная зависимость от разработчиков расширений и их возможностей (и желания) оперативно вносить обновления. Маловероятно то, что разработчик будет добавлять функциональность для каждого желающего. Значит, придётся пользоваться и привыкать к «неудобной функциональности», искать компромисс и обходные пути. Насколько это критично? Настолько, насколько сотрудники компании привыкли к удобству работы после доработок. Круг практических задач настолько обширен, что по определению невозможно создать плагин, который на 100% устроит каждого его пользователя.

Если штатного или внешнего программиста нет, то автоматически выбирается вариант без доработки расширений. Преимущество его в том, что не нужно беспокоиться по поводу обновлений. Они появились в Инсталляторе админки - установили и забыли, если после не возникло явных проблем, что редко, но случается. Недостаток — полная зависимость от разработчиков расширений. Бывают ситуации, когда вопрос нужно решить быстро, но не всегда это получается осуществить на практике.

Есть программист есть, то здесь возможны два варианта:

  1. Работа без правки чужого кода
  2. Работа с правкой чужого кода

В первом случае вся дополнительная функциональность реализуется исключительно при помощи расширений. Преимущество этого варианта в том, что не нужно беспокоиться об обновлениях чужих расширений. Недостаток данного подхода в том, что далеко не всё можно поправить при помощи расширений. Можно создавать собственные интерфейсы и делать постобработку данных, но это может быть связано с дополнительными неудобствами в работе и накладными расходами. Правка чужого кода — это очень тонкий момент, который имеет как существенные преимущества, так и существенные недостатки. Здесь крайне важно подробно документировать каждое изменение в коде и аккуратно подтверждать обновления плагинов. В моей практике был случай, когда у пользователя было установлено немало собственных доработок, по причине чего в Инсталляторе находилось большое количество неустановленных обновлений. И всё было хорошо до того момента, пока ему не показалось, что установка всех обновлений поможет решить какую-то возникшую с сайтом проблему. После этого пришлось откатываться на предыдущую версию сайта со старой темой.

В качестве ещё одного примера приведу такой. Фильтрация товаров в админке ShopScript реализована так, что для этого можно создать запрос с нужным фильтром и вручную вызывать его каждый раз, разработать плагин, с регулярным вызовом его через cron для постоянного обновления данных или внести условие для фильтрации из нескольких символов прямо в ячейку таблицы базы данных. Прямая запись данных в таблицы базы - это крайне плохое решение, как заметит большинство. Но, если есть уверенность в том, что категория не будет меняться годами, то что практичнее - потратить 1 минуту на запись в базу 10 символов или 30-40 минут потратить на создание плагина, который создаст пусть небольшую, но дополнительную нагрузку на сервер постоянным вызовом?

Я использую комбинированный вариант работы. Если правка чужого кода на порядок и тем более два практичнее и целесообразнее разработки плагина, то вношу изменения в чужой плагин с документацией этих изменений. Иногда намного проще, быстрее и целесообразнее доработать большое и сложное по функциональности расширение, чем заново его писать, либо городить внешние надстройки и обвесы. Но это происходит только после оценки частоты появления критически важных обновлений. Если они происходят каждую неделю, то править такой плагин не имеет смысла до перехода его в какое-то более или менее стабильное состояние.

Восстановление своих доработок в чужом коде - процесс не быстрый и не захочется это делать при каждом обновлении этого расширения. В результате обновления накапливаются в установщике и необходимо следить за тем, что в них исправлено. Если это критически важные изменения, то придётся обновиться и затем восстановить свою доработку в нём. А если нет, то обновление может несколько месяцев и повисеть без установки. За несколько лет работы у меня было 2-3 раза, когда нужно был обновиться и затем восстановить свои доработки до последней запятой, поскольку пользователи сразу заметили отсутствие крайне удобных доработок.

Скажу несколько слов о темах.

Преимущество CMS и тем для сайта состоит в видимости простого создания и настройки сайта. В админке темы можно увидеть много разных настроек, которые позволяют пользователю без программирования и знания HTML, CSS, JavaScript и др. производить его настройку и конфигурирование. Для простых сайтов с шаблонным видом этих настроек может быть достаточно. Но для получения серьёзного продукта приходится вносить большое количество правок в имеющийся шаблон.

В магазине Webasyst более 20 бесплатных и более 120 платных тем. Выбор небольшой, но он есть. В случае доработки темы может возникнуть ситуация, когда непонятно, где нужно производить изменения — в админке на странице настройки темы или в пользовательских файлах стилей и скриптов. Возможен такой вариант: сначала пользователь производит конфигурацию темы в админке, а затем эту конфигурацию довожу до кондиции в пользовательских файлах. При изменении конфигурации темы (чего хотелось бы делать реже) придётся вносить изменения и там, и там.

ShopScript без внешних плагинов и собственных доработок и с ними — это два разных продукта. Да, за функциональность приходится платить. Но реализовано это в достаточно логичной форме. Если Webasyst предлагает расширения, которые позволяют зарабатывать компании и расширять область её деятельности, ассортимент товаров, услуг и сервиса, то вполне логично оплатить работу разработчиков данных расширений.

© 2016-2024 
actech