Getting Started

Configuration

Administration

Modules

Templates

Integrations

Development

Getting Started

  • πŸ‘‹ Introduction
    High-level overview of UNA CMS: what it is, who it’s for, and what you can build.

  • βš™οΈ How UNA Works
    Explains the underlying architecture and relationship between front-end, Studio (admin console), and apps.

  • [πŸ’‘ Key Concepts][key-concepts]
    Covers essential terminology (Profiles, Context Modules, Permissions, etc.) that power UNA.

  • πŸ“• Glossary
    Alphabetical reference for important UNA terms.

  • ✊ Principles
    The guiding philosophies behind UNA development and community management.

  • [πŸ’» System Requirements][system-requirements]
    Details on hosting environment, server configuration, and prerequisites.

  • [πŸš€ Installation & Setup][installation-setup]
    Step-by-step instructions for installing UNA on various platforms (shared hosting, VPS, Docker, etc.).

  • [πŸƒ Quick Start Tutorial][quick-start-tutorial]
    A hands-on approach to spin up a basic UNA site with minimal configuration.

  • [πŸ“‹ Launch Checklist][launch-checklist]
    A structured guide (43 steps or more) to configure essentials before going live.

  • [❓ General FAQ][general-faq]
    Frequently asked questions for newcomers.


Building & Managing Your UNA Site

  • [πŸ”§ Studio Basics][studio-basics]
    How to navigate and use Studio: Pages, Forms, Navigation, Permissions, Languages, etc.

  • [πŸ“‘ Site Structure][site-structure]
    Understanding page layouts, blocks, and how modules interact.

  • πŸ—‚ Content Management
    Managing posts, media, categories, and moderation workflows.

  • [πŸ‘€ User & Profile Management][user-profile-management]
    Handling user accounts, profiles, activation, and roles.

  • [πŸ”’ Permissions & Roles][permissions-roles]
    Configuring membership levels, access controls, and custom permissions.

  • [🏷 Customization & Theming][customization-theming]
    Applying templates/themes, styling pages, and basic design tweaks.

  • [πŸ”€ Navigation & Menus][navigation-menus]
    Configuring menus, site navigation, and user interface structure.

  • [πŸ’¬ Language & Translations][language-translations]
    Setting default languages, editing language keys, and creating multilingual sites.

  • [πŸ”” Notifications][notifications]
    Customizing email templates, push notifications, and in-site alerts.

  • [πŸ›  Maintenance & Upgrades][maintenance-upgrades]
    Updating UNA core and apps, backups, cron tasks, and overall site health.

  • [πŸ“ˆ Analytics & Reporting][analytics-reporting]
    Integrating external analytics, built-in stats, and best practices for measuring growth.


Apps (Modules)

Click to expand all official UNA Inc apps
  • Core β€œContext” Modules

    • [Groups][app-groups]
    • [Events][app-events]
    • [Spaces][app-spaces]
    • [Organizations][app-organizations]
    • [Channels][app-channels]
  • Core β€œContent” Modules

    • [Posts][app-posts]
    • [Discussions][app-discussions]
    • [Albums][app-albums]
    • [Photos][app-photos]
    • [Videos][app-videos]
    • [Files][app-files]
    • [Wiki][app-wiki]
    • [Polls][app-polls]
    • [Blogs][app-blogs]
  • Communication & Messaging

    • [Messenger (Jot Server)][app-messenger]
    • [Conversations / Chat+ (if separate)][app-chatplus]
  • Membership & Monetization

    • [Paid Levels][app-paid-levels]
    • [Market][app-market]
    • [Ads][app-ads]
    • [Payments][app-payments]
  • Engagement & Interaction

    • [Timeline (Feed)][app-timeline]
    • [Reactions][app-reactions]
    • [Comments][app-comments]
    • [Notifications][app-notifications]
  • Administration & Utilities

    • [Permissions][app-permissions]
    • [Developer][app-developer]
    • [Helpdesk][app-helpdesk]
    • [Maintenance Tools][app-maintenance-tools]
  • E-Learning & Specialized

    • [Classes][app-classes]
    • [Courses (if separate)][app-courses]

Menus

Menu uses set of items and the template to display it, so it is possible to have several menus which uses the same set of items but different templates.

Menu is any set of some links or actions, for example menu can be links in site's footer or actions in profile view.

DB Structure

images/dev-menu-db-structure.png

Creating the Menu object

1. Add record to sys_objects_menu table:

  • object - name of the menu object, in the format: vendor prefix, underscore, module prefix, underscore, internal identifier or nothing; for example: bx_groups_actions - actions menu in group view.
  • title - name of the menu, displayed in the studio menu builder.
  • set_name - name of items' set.
  • module - the module this menu belongs to.
  • template_id - the template to use for menu displaying, this is id from sys_menu_templates table.
  • deletable - it determines if menu can be deleted from the studio menu builder.
  • active - it is possible to disable particular menu, then it will not be displayed.
  • override_class_name - user defined class name which is derived from BxTemplMenu.
  • override_class_file - the location of the user defined class, leave it empty if class is located in system folders.

Menu templates are stored in sys_menu_templates table:

  • id - template id.
  • template - template file.
  • title - template title to display in the studio menu builder.

All menu templates iterate through bx_repeat:menu_items and use the following template variables for each menu item: __link__, __target__, __onclick__, __title__, __class_add__.

2. Add an empty menu set to sys_menu_sets table (if you want to use new set of items for created menu):

  • set_name - the set name.
  • module - the module this set belongs to.
  • title - name of the set, displayed in studio menu builder.
  • deletable - it determines if the set can be deleted from menu builder.

3. Add menu items to the set by adding records to sys_menu_items table:

  • set_name - the set name this item belongs to.
  • module - the module this item belongs to.
  • name - name of the item (not displayed to the end user), unique in the particular set.
  • title - menu item title to display to the end user, please note that some templates can still display menu as icons without text titles.
  • link - menu item URL.
  • onclick - menu item onclick event.
  • target - menu item target.
  • icon - menu item icon, please note that some templates can still display menu as text without icons.
  • visibile_for_levels - bit field with set of member level ids. To use member level id in bit field - the level id minus 1 as power of 2 is used, for example:
    • user level id = 1 -> 2^(1-1) = 1
    • user level id = 2 -> 2^(2-1) = 2
    • user level id = 3 -> 2^(3-1) = 4
    • user level id = 4 -> 2^(4-1) = 8
  • active - it is possible to disable particular menu item, then it will not be displayed.
  • order - menu item order in the particular set.

4. Display Menu.

Use the following sample code to display menu:

    bx_import('BxTemplMenu');
    $oMenu = BxTemplMenu::getObjectInstance('sample_menu'); // 'sample_menu' is 'object' field from 'sys_objects_menu' table.
    if ($oMenu)
        echo $oMenu->getCode; // display menu

But in most cases you don't need to use above code to display menu, menu objects are integrated into Pages - there is special menu page block type for it.