Skip to content

Modules

Menu: Development → Modules
Deep link: /_Admin/development/modules?SiteId={siteGuid}

Modules are installable Kooboo extensions: package views, APIs, scripts, static assets, and module.config in an isolated directory, expose capabilities via site routes, and can be edited in dev mode. Suitable for e-commerce plugins, form components, admin panels, and other reusable packages.

Permissions

List and dev mode: module (view). Create, import, online toggle, settings, export, share require module·edit; multi-select Delete requires module·delete.

Difference from site Code / View

ModulesDevelopment → Code / Views
StructureIsolated directory (view/, api/, code/, etc.) + module.configSingle site resource records
RoutesAuto-register /_ModuleName/{part}Per page / Code routes
Configmodule.config + admin Settings dialogNo unified module config
Admin entrymodule.config menu → site left menu (iframe)None
Scriptsk.module.* (module context only)k.site.codes, etc.

Script API: k.module.

How to Open

  1. In Edit Menu, enable Development → Modules.
  2. Open Development → Modules in the left sidebar.
Modules list overview

Module list

Toolbar

ButtonPermissionDescription
Createmodule·editNew module dialog
Importmodule·editUpload module zip (import dialog)
Searchmodule·editKooboo app store online search and install
Modules list toolbar

List table

Column / actionDescription
NameClick name to edit in dev mode (dev-mode?activity=modules&moduleId=...)
OnlineToggle whether module is active (ScriptModule/UpdateStatus)
BackendIf module has backend/ views, Manage button (different from menu sidebar below — Mount site admin menu)
SettingsModule settings dialog (settingDefines from module.config)
ReadmeRenders root Readme.md (Markdown)
ExportDownload current module zip
ShareShare to Kooboo package repository (confirmation required)

Supports multi-select Delete.

Modules list

New module dialog

Enter Name (1–50 chars, letter or digit first). Creates module record and default directory (module.config, Readme.md, etc.); click name in list to continue in dev mode.

New module dialog

Import dialog

FieldDescription
NameName after import; duplicate prompts replace confirmation
FileModule zip

On success refreshes list; Monaco module cache cleared for new code.

Import module dialog

Module settings dialog

Settings reads root module.config (JSON). settingDefines describes admin fields (input, number, select, switch, textarea, etc.); save writes site-side module Settings (runtime: k.module.config).

Same file's menu mounts module to site admin left menu (next section), unrelated to Settings dialog — edit module.config in dev mode.

When never saved, form initializes from settingDefines defaultValue.

Module settings dialog

Readme

Readme icon opens Readme.md Markdown preview for installers.

Module Readme

Edit in dev mode

Click list Name (or dev mode sidebar Modules activity). Left groups by resource type:

TypeDirectoryPurpose
rootRoot filesmodule.config, Readme.md, event.js, task scripts, etc. (root files usually not deletable)
viewview/Module pages (SSR/templates)
apiapi/Module API scripts (ModuleApi: reference)
codecode/Reusable scripts (module: reference, e.g. main / index)
css / jsStatic assetsStyles and scripts
img / fileBinaryImages and other files; upload supported
backendbackend/Module admin UI (list Manage button)

Text files edit in right tabs (Monaco); Save, Refresh, Preview for views, etc. + beside group title creates files; binary types support Upload.

Dev mode: edit module files

Dev mode top bar More returns to this list; Return exits current module file tree.

Mount site admin menu (menu)

Add menu object in module.config to show module as its own entry in site admin left menu (not the same as list Manage). On site admin login, Kooboo scans online modules' module.config; modules with both name and menu inject into sidebar.

Clicking loads module page in main area via iframe (route module-menu/:module, query url = resolved module view address).

Requirements

ConditionDescription
Module onlineList Online toggle on
module.config has namePackage name, matches module resource name
menu configuredSee table below
Refresh adminAfter menu change, re-enter site admin or refresh to reload moduleMenus
FieldRequiredDescription
nameYesSidebar display name
nameTranslationNoMultilingual text, keys are language codes (e.g. zh, en) for current admin user language
parentNoUnder a top-level admin menu; value is that menu's menu.name in routes (e.g. content, commerce) — menu overview
urlNoModule view relative path (e.g. dashboard.html); empty uses default start view
iconNoIcon: usually filename under img/, resolved as /_ModuleName/img/{filename}?SiteId=...
childrenNoSub-menu array; each item has name, nameTranslation, url (relative view path)

With children, sidebar shows expandable parent; each child row; child url resolves to /_ModuleName/{path}?SiteId={siteGuid}.

Example config

json
{
  "name": "my_shop_plugin",
  "version": "1.0.0",
  "description": "Shop extension",
  "menu": {
    "name": "Shop Plugin",
    "nameTranslation": {
      "zh": "店铺插件",
      "en": "Shop Plugin"
    },
    "parent": "commerce",
    "url": "admin/dashboard.html",
    "icon": "plugin-icon.svg",
    "children": [
      {
        "name": "Order sync",
        "url": "admin/orders.html"
      },
      {
        "name": "Inventory",
        "url": "admin/stock.html"
      }
    ]
  },
  "settingDefines": []
}
  • Example adds Shop Plugin under Commerce (parent: "commerce"), default view/admin/dashboard.html.
  • view/admin/*.html can read Settings via k.module.config.
  • If url starts with http:// or https://, module path is not prepended (external admin link).

vs list Manage button

menu sidebarList Manage
Configmodule.configmenuModule backend/ views + backendViewUrl from admin API
EntryDaily site admin left menuDevelopment → Modules list row
Typical useOperators using module featuresDevelopers opening module backend during dev

Both can coexist: operators use sidebar, developers use list Manage for backend/.

Routes and access

On create, Kooboo registers routes like:

text
/_ModuleName/{part}

{part} is view, api, static path, etc. (module renderer). On name conflict, system tries ModuleName2, ModuleName3, … until available.

In module scripts, current module root URL is k.module.baseUrl (module execution context only).

Typical workflow

  1. Create or Import / Search install.
  2. In dev mode, write view/, api/, code/, maintain module.config, Readme.md.
  3. For operator admin, configure menu and matching view/ pages in module.config.
  4. Open Settings in list, fill settingDefines (maps to k.module.config).
  5. Turn Online on; refresh site admin for sidebar; verify front-end /_ModuleName/....
  6. Export zip or Share to package repo for other sites.
DocDescription
k.moduleconfig, task, localFile, module.config conventions
Site admin menu overviewTop-level name values for menu.parent
CodeSite-level CodeBlock / API
Development overviewDevelopment group index
Development · JobsSite k.site.runJob (different from module k.module.task)