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]

Common Mistakes

During wring the code always keep in mind the following things:

  • this is Open Source product and the code is visible to anyone, we have to always show quality, readable, consistent code. In the future your code can be used for copy&paste, and be the base for other modules.
  • check if your code have no unused parts, so it will not confuse other developers.
  • make sure that the code is executed the most effective way, since UNA can be used for heavy loaded sites.
  • don't write duplicate code, because in this case it will be difficult to change and support such code in the future.
  • code must work in different server environments, such as different OS(Windows, Linux, etc) and Web-servers (Apache, Nginx), some PHP modules maybe disabled or even can't be added.

Common mistakes:

  1. Every commit must be atomic and include short description of the committed code and number of issue in the repository in the form of #123.

  2. The name of the module in every file should be named without spaces, if readable module name contain spaces it can be added after the name without spaces, for example:

    @defgroup    QuoteOfTheDay Quote of the Day
  3. Make sure that the comment in the beginning of every file is correct. In many cases files are copied from other modules and this comment is left unchanged.

  4. In the working repository module version must have DEV postfix, and for UNA modules module version number matches major UNA version, for example 9.0.0.DEV. Also compatibility in working repository must be 9.0.x. Compatibility and version is changed when module is released.

  5. Make sure that the code is written using UNA code convention - https://github.com/unaio/una/wiki/Code-Convention.

  6. Don't leave unnecessary commented code.

  7. To get content of the URL, use bx_file_get_contents instead of file_get_contents.

  8. Name check* function based on the checked action.

  9. It's better to define module name in install.sql (SET @sName) in the beginning of the file.

  10. Be careful with grid objects, it can be accessed directly, so it's important to set correct visible_for_levels field in sys_objects_grid table.

  11. Make sure that the sum of widths of fields in sys_grid_fields table is 100%.

  12. Write descriptive comment for every service* method, example of comments for service* methods can be seen in BxEventsModule.php file in Events module.

  13. If you use some of Base classes for your module, make sure that all classes are derived from the classes of the same base module, if there is no reason to do it otherwise.

  14. Don't add new classes to default.less file, if adding is necessary discuss with other team members.

  15. Don't create indexes longer than 191 for utf8mb4 fields, they will not work on InnoDB, as an example the following code will not work properly:

    CREATE TABLE `tablename` (
    `name` varchar(255) character set utf8mb4 collate utf8mb4_unicode_ci NOT NULL,
    ...
    INDEX `name` (`name`)
    )

    You need to limit field length or index length:

    ...
    INDEX `name` (`name`(191))
    ...

    Be especially careful with indexes for multiple fields, sum of all fields must not be greater than 191.

  16. Don't use references for method's arguments in modules Template class.
    For example instead of such method:

    function getLotsPreview($iProfileId, &$aLots, $bShowTime = true)

    Try to compose the code, that will work without the reference:

    function getLotsPreview($iProfileId, $aLots, $bShowTime = true)