Shopkit commerce plugin


The alternative would be a flat structure without a hierarchy if there is absolutely no way to categorize them uniquely. It certainly doesn’t make sense to duplicate content in multiple folders, and it doesn’t make sense to force categorize them in some sort of arbitrary way that is not logical. What sort of products are you talking about?


The products are crystal glassware (wine glasses, vases, etc.). I’m working to create the US version of this site

Each item lives in at least two categories. For example…

Drinkware > Wine Glasses > Wine Master White Wine Glasses


Collections > Drinkware > Wine Glasses > Wine Master White Wine Glasses

Same product found/navigated-to two different ways, through two different categories.

It seems as though I need to store all products in 1 folder, id/tag/categorize them, and use routes to produce the friendly URLs. Now I’m taking less about Shopkit and more about categories here. This post is starting to resurface in my mind. Maybe that’s my ticket to pulling this off. Offering multiple languages not a challenge I have to overcome.


I’d still put them into the two main categories Drinkware and Homeware (and their subcategories, and then add additional categories/tags for the collections. I wine glass is a wine glass after all, no matter where you put it.


Thanks for your input.


*whispers* There’s an alpha dev preview of Shopkit v2.0 available now.

If you enjoy the thrill of testing an unstable release and reporting bugs, this is for you!

This is also your last chance to ask for new features that might – might – just make it into the final release.

Please file issues on GitHub, message me on this forum, or email if you find any bugs. I am also very interested to hear about how the upgrade process goes for existing Shopkit sites, and especially how it breaks your custom themes :wink:

So far, the changelog looks like this:

- Panel
    - Consolidate Shop options into Site options page
    - New Site options
        - Set default country
        - Show quantity in stock on Product pages
        - Number formatting (decimal and thousands separator)
    - Remove slider option from Product blueprints
    - Replace structure fields with snippetfield plugin (better entry summaries)
    - Replace Visual Markdown with WYSIWYG editor
- Widgets
    - Basic visitor stats (forked from [Fabian Sperrle](
    - Aggregate order stats (abandoned, pending, paid & shipped)
- New cart handling
    - Store cart details in transaction file instead of session variable
    - Rename `order.create` snippet to `order.process`
    - New transaction status: "abandoned"
- New theme
    - Remove the UIKit framework
    - Use normal URLs instead of data-URIs for product photos
    - AJAX quantity selector on Cart page
    - AJAX product slideshow
    - Tag cloud in sidebar
    - Shop by Brand in the sidebar
    - Use radio buttons instead of select box for shipping options on Cart page
    - Remove base colour in colour options (only link and accent colour can be edited from Site options)
    - Product-specific page descriptions for better SEO
    - New frontend admin buttons
- Easier to change default language in `config.php`
- Bug fixes
    - Fix false error message on registration
    - Fix multiple orders bug (#131)
- Performance enhancements
    - Limit use of `index()`
    - Limit re-declaration of `site()` and `page()`
    - Faster font loading
    - Consolidate most logic into `shopkit.php`

I’m all ears! :rabbit:


Shopkit v2.0 beta

After two weeks of bug fixes, I’m confident enough to present the beta of Shopkit v2.0. If you want to test it out, please clone from the dev branch at

v2.0 includes a new payment gateway, Square. I am using it on the Shopkit site now, so if you want to get a feel for the user experience, just try to make a purchase.

Note: Square requires that the currency matches the country where your business is registered. For this reason, Shopkit licenses are now $25 Canadian Dollars instead of $19 USD.

Speaking of the Shopkit website, it is running v2.0 beta so you can explore the new theme. It should be faster, smoother, and easier to modify than before!

And a reminder, if you want to get involved in this beta test, I’ll give you a free license key.

Thanks everyone!


v2.0 is here :cherries:

This is a major release with new features, a new payment gateway, lots of bugfixes, and a brand new theme (and new logo too)!


  • New gateway: Square
  • New widgets: visitor stats and order stats
  • Replace Visual Markdown editor with WYSIWYG editor
  • New theme which removed UIKit framework and reduced total page weight by 75%
  • Performance and usability improvements

Download Shopkit v2.0

View the full changelog here:

This is a big release! Upgrading your existing Shopkit installation will probably cause some merge conflicts. If you only want bugfixes, run git checkout v1-stable to upgrade to v1.1.7 instead. The v1-stable branch will continue getting bugfixes only, and will not be updated to work with Kirby 2.5 when it is eventually released.

Thank you to everyone who helped me during the beta phase!

Now I’m off to a birthday party, so no difficult questions until tomorrow please :stuck_out_tongue_winking_eye:


v2.0.1 is here :bread:

Just a couple small bug fixes, and some form validation messages for the shop/confirm page.

Download it here:


v2.1 is here :lollipop:

Some bug fixes and improved multilanguage features.

Download it here:

  • Moved translation files to site/plugins/shopkit/languages
  • Bug fixes
    • Stop reverting to default language through the checkout process
    • Explicit type casting to prvent PHP warnings
  • Updated dependencies
    • Kirby and Panel (2.5.2)
    • Stripe SDK (v5.1.1)
    • Square SDK (2.0.2)
    • Multiselect field (2.1.1)
    • Color field (now packaged as a plugin)
  • Added local config files for development environments (debugging enabled, whoops disabled)

If you have custom templates or snippets that override Shopkit’s default, you’ll want to make sure to update any calls to l::get($key) or l($key). Shopkit v2.1 now uses a new function, _t($key), to return translated strings.

This new function makes it possible to compartmentalize Shopkit’s language files within the plugin folder. The other benefit is that it allows you to override those defaults by setting your own strings through l::set().

More information:


v2.2 is here :headphones:

Download it here:

  • :zap:️ Update Kirby and Panel to 2.5.5
  • :framed_picture: (image: ) kirbytag generates responsive images
  • New features
    • :high_heel: Product details table: add unlimited key-value pairs to product page
    • :envelope_with_arrow: Add direct download links to customer emails
  • Bug fixes
    • Fix non-numeric value error when calculating cart total
    • Fix reference to $site in page update hook


I have a question: Do you shrink the images on upload ? And if yes where ? I need to show the product images in full width and the quality of them seems to be lowered somewhere.


I think this hook is responsible for the image shrinking:


Yes, @thguenther is right. I should probably include a config setting for changing the maximum image size.


v2.3 is here :space_invader:

Download it here:

This release includes the security update to Kirby 2.5.7, a bunch of bug fixes, and an important long-requested feature: tax-inclusive pricing!

You’ll find this new option under the Shipping & Tax tab of Site Options.

  • Update Kirby and Panel to 2.5.7
  • Update dompdf dependency
  • Improved German translation (danke @andreasfehn)
  • Config option to override maximum image upload size
  • New features
    • Tax-inclusive pricing
    • License keys
    • Add checkbox with validation to terms and conditions notice on the Cart page
    • Allow $0 sale price
    • Skip gateways when cart total is $0
  • Bug fixes
    • Add HTTPS certificate and update IPN endpoints for PayPal
    • Set utf-8 encoding when submitting PayPal IPN call
    • Hide download links unless the transaction is paid or shipped
    • Remove ability to disable the Pay Later gateway (it was causing problems with gift card / discount code purchases)
    • Ensure the transaction file records the correct number of decimal places depending on currency in Site Options
    • Fix duplicate tax summary display issue on Orders page
    • Fix slideshow issues with products in the shop root
    • Ensure long hex codes are in compiled CSS file (short hex codes won’t be picked up by Shopkit’s themeing functions)


v2.4 is here :lemon:

Download it here:


  • Update Kirby and Panel to 2.5.10
  • Update dompdf to v0.6.1-446-g501ff6d
  • New transaction summary snippet (order.details.php)
  • Decouple session ID from transaction ID
  • Improved French and German translations (thanks to Julien Bidoret, Moritz Pfeiffer, and Andreas Fehn)
  • Prevent translation of core fields
  • New features
    • Per-product shipping rules
    • Add contact info and address to the Cart page, remove separate Confirm page and simplify gateway snippets
    • Payer address is now split into multiple fields (address, city, country, etc…)
  • Bug fixes
    • Use url::paramSeparator() instead of hard-coding a colon
    • Prevent jittery loading appearance of navbar
    • Fix several instances of a non-numeric value encountered error
    • Fix permissions error that prevented token/ urls from working properly
    • Fix rounding errors in Stripe validation code

To everyone who submitted bug reports over the last 5 months, thank you for your patience. I wasn’t able to put a new release together until now because I have had a pretty big change in my life which placed all web development projects on the back burner.

In January, my partner and I became the new owners of a health food store in our city. My primary job is now focused on running the store and bringing good healthy groceries to our downtown neighbourhood.

Due to this, I have decided to put a feature freeze on Shopkit. New small features may still get built, but don’t expect any major ones for the time being.


Good luck with your shop, @samnabi ! Just a new Kirby website missing :wink:


Hello there,

We are about to get a shopkit license but language detection may not be working perfectly, or I wonder what does it use to detect language. In any case, before devling into the code, how easy would it be to add a regular ol’ language switch menu on… say, top right corner?

Additionally, this effect where the images get a sort of a blurred frame, I imagine to adapt them to your selected image box size, can it be easily removed ?

Thank you


Language detection

Shopkit uses Kirby’s standard detection for deciding which language to show:

You can manually switch to, say, the German language by going to

If you want to add a language switch menu, you can start with this:

I would add that code to the header.menus.php snippet. Copy the plugin’s snippet to the site/snippets folder and it’ll override the default file.

Editing image styles

Yes, the blurred image background effect can be removed by copying the site/plugins/shopkit/snippets/slider.php file to site/plugins/snippets/slider.php and editing line 19.

Simply remove the style="" attribute to get rid of the blurred backgorund image.


I am getting this error on home, may it be a php version problem? I have shopkit in a custom name folder under root and so I modified .htaccess to set rewritebase to this folder, although without setting rewritebase the error is the same.

Thank you


What is your PHP version?