How to Fix and Customize Shop-Script (Webasyst) Stores — Without a Russian Developer Quote
Shop-Script is the e-commerce app on Webasyst — the most popular Russian/CIS open-source CMS framework after Bitrix. The "open source for developers, license for live deployments" model means you can read every line, but the customization surface (themes/, plugins/, dispatchers, hooks) requires platform-specific knowledge. SimpleReview's Webasyst-aware agent knows the framework conventions — wa-apps/shop/themes/[theme]/, wa-apps/shop/plugins/[plugin]/, wa-config/ — so it edits the right file and opens a PR.
wa-apps/shop/themes/[theme]/, откроет PR — правка ушла in production within the hour, без счёта по 2000 ₽/час.
Key Takeaways
- Shop-Script lives inside Webasyst framework. Customizations split into: themes (
wa-apps/shop/themes/), plugins (wa-apps/shop/plugins/), and Webasyst-level extensions inwa-system/(don't touch core). - Plugin actions and hooks follow strict naming:
actionExample,frontend_*events,backend_*events. Get the convention wrong and the plugin silently does nothing. - Webasyst Store at www.webasyst.com/store/ — мы публикуем
simplereviewplugin для приложения Shop-Script. Standard install: Backend → Installer → Marketplace → Search "SimpleReview" → Install. - For payment-method (
waPayment), ERP/1С integration, custom checkout, paid theme licensing — Vibers human review takes over. These touch money flow and contract obligations. - Russian-friendly: target audience reads ru.docs.webasyst.com, brief in Russian works, RU locale (
ru_RU/) is the default.
Webasyst Framework + Shop-Script — Architecture Map
Knowing where each file lives saves the discovery hour every freelancer charges before touching a line. Here's the map:
| Path | What lives there | Touch? |
|---|---|---|
/wa-system/ | Framework core: waSystem, waRequest, waModel, dispatchers, kernel | Don't touch. Updated on every php wa.php update; your changes vanish. |
/wa-apps/shop/ | Shop-Script app — controllers, models, actions | Read for reference, override via plugins, not by editing. |
/wa-apps/shop/themes/[theme]/ | Frontend theme — Smarty .html templates, CSS, JS, theme.xml | Yes. 80% of customization lives here. |
/wa-apps/shop/plugins/[plugin]/ | Backend plugins — lib/, plugin.php, hooks, actions | Yes, write your own. Don't edit third-party plugins in place. |
/wa-config/ | Installed apps registry, db.php, SystemConfig.class.php, domain routing | Edit for cache/Memcache, multi-domain — careful. |
/wa-data/ | Uploaded files, generated thumbnails, cached themes | Don't touch except for backups. Regenerated on demand. |
/wa-log/ | PHP error log (php_errors.log), app logs | Read first when debugging. |
The pattern: core stays pristine, customization happens in themes and plugins. Try to override anything in /wa-system/ or /wa-apps/shop/lib/ directly and the next update wipes it.
Three-Click Workflow with SimpleReview
- Install the SimpleReview Chrome extension from the Chrome Web Store. Free with your own AI key (Claude Code or Codex), built-in mode if you don't have one.
- Connect your store's repo. Paste a GitHub / GitLab / Gitea URL. If your Shop-Script lives only on the production server, give SFTP credentials — SimpleReview creates a private working tree, commits from there. The Webasyst-aware agent reads
wa-config/apps.phpandtheme.xmlon first connect to learn your theme name and version. - Open your storefront, click the SimpleReview icon, click the element to change. Type in plain Russian or English: «уберите этот баннер», "change phone in header", «переведите кнопку 'Купить' на 'Заказать'», «отключите ненужный плагин в админке». Click Fix it. The agent finds the right Smarty template or plugin file and opens a Pull Request.
Common Shop-Script Fixes & Customizations
500 / "Произошла ошибка" after plugin update
The most common Shop-Script failure mode. The plugin shipped a new DB field but the migration didn't run on update, so every page that touches that field throws a fatal. Reproduce and fix:
# 1. Check the actual error
tail -n 50 wa-log/php_errors.log
# Typical line:
# PHP Fatal error: Uncaught waException: Field "shop_product.custom_x"
# does not exist in /wa-apps/shop/plugins/foo/lib/fooPlugin.class.php
# 2. Re-run the plugin's install.php (which holds CREATE TABLE / ALTER TABLE)
php wa.php install foo
# 3. If install.php is missing the migration, write it once:
# wa-apps/shop/plugins/foo/lib/config/db.php
# Webasyst auto-runs ALTER on next install.
The agent reads php_errors.log, identifies the missing field, and either runs php wa.php install [plugin_id] or generates the missing db.php migration block.
Add reCAPTCHA / антибот to a contact form
Webasyst ships a built-in waCaptcha class supporting reCAPTCHA v2/v3 and a simple image captcha. Two paths:
- Built-in form (Site app): Backend → Site → Forms → Captcha settings → enable reCAPTCHA, paste site/secret keys. No code.
- Custom form in your theme: add
{captcha}in your Smarty template — the agent inserts it in the right block ofwa-apps/shop/themes/[theme]/and adds the verify call in the action handler.
{* wa-apps/shop/themes/default/contact.html *}
<form method="post">
<input name="email" type="email" required>
<textarea name="message" required></textarea>
{captcha} {* <-- one line, agent adds this *}
<button type="submit">Отправить</button>
</form>
Hide "Powered by Webasyst" / «Сайт работает на Webasyst»
The string lives in wa-apps/shop/themes/[theme]/footer.html — search for webasyst.com or Сайт работает на. Remove the wrapping block, save, done.
Translate "В корзину" / "Купить" button text or change wording
Theme strings live in wa-apps/shop/themes/[theme]/locale/[locale]/. For Russian default, that's ru_RU/LC_MESSAGES/[theme].po (compiled into .mo). Two ways:
- Quick: edit the Smarty template directly — replace
{_w('Add to cart')}withЗаказатьhardcoded. Works, less clean. - Proper: add the translation to
ru_RU/LC_MESSAGES/[theme].po, recompile.moviamsgfmt. The agent does this — keeps i18n intact.
Slow admin / storefront
Three knobs, in priority order:
- Enable Memcache. In
wa-config/db.phpadd amemcacheconnection block; inwa-config/SystemConfig.class.phpset$this->cache = 'memcache'. Drops admin load time 2-5×. - Smarty production caching. In your theme's bootstrap (or
wa-config/SystemConfig.class.php), setcompile_check = false. Smarty stops re-checking template mtime on every request. - Disable unused plugins. Backend → Shop → Plugins. Each enabled plugin runs hooks on every page. Half of them you don't use.
Migration to a new Shop-Script version
# 1. Backup. Always.
mysqldump -u USER -p DBNAME > shop-backup-$(date +%F).sql
tar czf shop-files-$(date +%F).tar.gz wa-data/ wa-config/
# 2. Run the framework updater
php wa.php update
# 3. Verify your theme still loads — theme.xml's
# requires_app_version must be <= the new Shop-Script version.
# If not, the storefront falls back to default theme.
The agent flags theme incompatibility before the update by reading theme.xml against the target version. Saves the "white storefront after update" panic.
Webasyst Store — Our Plugin
Webasyst Store (www.webasyst.com/store/) — основной канал дистрибуции коммерческих плагинов и тем для Shop-Script и других приложений Webasyst (CRM, Mailer, Site). Мы публикуем плагин simplereview (в проверке).
Install (когда плагин выйдет в маркетплейс): Backend → Installer → Marketplace → SimpleReview → Install. Activates an "Edit with SimpleReview" button next to every theme/plugin file in the admin file editor — one click takes you into the Chrome-extension popup with that file pre-selected.
<meta name="generator" content="Webasyst"> + frontend HTML signatures (specific class names, {$wa->...} markers in rendered output). Routes edits to your Git repo or SFTP — no plugin needed today.Comparison Table — Shop-Script Freelancer vs SimpleReview
| Step | Russian Webasyst freelancer | SimpleReview agent |
|---|---|---|
| Брифинг | 30-60 min Telegram chat or Zoom | 1 sentence in popup (RU or EN) |
| Repo / SFTP setup | 30-90 min, every project | Once, then cached per store |
| Find theme / plugin file | 30-90 min depending on theme familiarity | Instant — Webasyst layout pre-indexed |
| Make the edit | 5-30 min | 5-30 seconds |
| PR / version control | "Скиньте FTP, я залью" — обычно без git | Always a Pull Request you review |
| Cost for a 1-line change | 1500-3000 ₽ (1-hour minimum) | 0 ₽ (BYO key) or pennies of API usage |
| Available 23:00 субботы | Завтра в 11:00 | Right now |
When You Want a Senior Webasyst/Shop-Script Developer
The agent handles the 80%. The other 20% — money flow, ERP integration, custom checkout, performance archaeology — wants a human. Specifically:
waPaymentcustom payment method. Yoomoney, Tinkoff, Robokassa с нестандартной логикой (split payments, fiscalization 54-ФЗ, returns). Money flows through it; humans review.- 1С (1C/8.3) integration. Two-way exchange between
waContacts/ Shop-Script orders ↔ 1С. CommerceML format, scheduled jobs, idempotency on retries. Senior territory. - Custom checkout flow. Multi-step, B2B logic (legal entities, VAT, invoices), conditional shipping. The default
shopCheckoutaction is opinionated — overriding it cleanly takes Webasyst experience. - Performance audit. Slow query log on
shop_product,shop_order,shop_customer.EXPLAINoutput. Missing composite indexes after data growth past 100k SKUs. - Migration from Bitrix or 1C-Битрикс to Shop-Script. Catalog mapping, customers, orders, URLs (with redirects to keep SEO). Multi-week project, not an agent task.
That's exactly the slice Vibers covers — a real human reviews any PR you flag, sends a fix-up if needed, and approves before merge. Use the agent for the 80%, use a human for the 20% that earns its hourly rate.
Перестаньте платить 2000 ₽/час за правку 1 файла в Shop-Script
SimpleReview's Webasyst-aware agent reads your repo, knows wa-apps/shop/themes/ and plugins/, opens a Pull Request for the change you described — in Russian or English.
Custom оплата, 1C интеграция, миграция? Get a human review → Free first PR for a GitHub star.
Frequently Asked Questions
wa-apps/shop/themes/[theme]/), переводов (locale/ru_RU/) и небольших настроек плагинов. Webasyst-ориентированный агент SimpleReview знает структуру фреймворка: где живут Smarty-шаблоны, где actionExample, где hooks frontend_*/backend_*. Он находит нужный файл и открывает Pull Request — фрилансер не нужен.<meta name="generator" content="Webasyst"> и HTML-сигнатурам фронтенда.wa-apps/shop/themes/[theme]/footer.html (поиск по webasyst.com). Юридически — зависит от вашей лицензии: бесплатные версии (Free Edition) и часть тарифов могут требовать сохранения ссылки «Сайт работает на Webasyst». Прочитайте текущее лицензионное соглашение на webasyst.com перед удалением. Платные тарифы и приобретённые лицензии обычно разрешают убрать упоминание.themes/, plugins/, dispatchers, hooks). Shop-Script 8 поддерживается ограниченно — Smarty-шаблоны там же, но часть API и админки отличаются. Для версий старше 8 рекомендуем сначала обновиться (php wa.php update) и проверить совместимость темы через theme.xml requires_app_version.wa-apps/[app]/themes/, wa-apps/[app]/plugins/ одинакова для всех приложений Webasyst — Shop-Script, CRM, Site, Mailer, Hub. Агент знает общие соглашения фреймворка и применяет правки в правильном приложении. Только Shop-Script — самое популярное и оттестированное; для остальных может потребоваться человеческое ревью первой правки.wa-apps/shop/, открывает PR за секунды. Расширение бесплатное — платите только за токены вашего AI-ключа (центы) либо используйте встроенный режим. Фрилансер берёт минимум 1 час (1500-3000 ₽) даже за 5-минутную правку.Related
Sources
- developers.webasyst.com — official framework + Shop-Script developer docs
- ru.docs.webasyst.com — Russian-language platform docs (admin, settings, deploy)
- www.webasyst.com/store/ — Webasyst Store marketplace (plugins, themes)
- github.com/webasyst/ — official open-source repositories the agent indexes against
- forum.webasyst.ru — Russian community forum (real-world fixes, plugin debugging)
- SimpleReview — Click element → leave comment → get PR