# Add a module

Modules are the building blocks of XOOPS systems. Modules provide specific functionality that you can easily add to your XOOPS site. Modules can add calendars, forums, image galleries, article management and more.

XOOPS maintains an "organization" consisting of modules on GitHub here: [https://github.com/XoopsModules25x](https://github.com/XoopsModules25x)

For our example, we will add an article management module called "Publisher" to a new system. Publisher can be used to manage any kind of articles. It provides a hierarchical category system to organize articles, article submission and editing, an extensive permission system to control viewing and editing rights, and article syndication using RSS.

The _publisher_ repository can be found here: [https://github.com/XoopsModules25x/publisher](https://github.com/XoopsModules25x/publisher)

## Download the Module

On GitHub, locate the _Releases_ link on the repository page.

![XOOPS Module on GitHub](https://265890714-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-L_EjUvXXbOiEMe2qFIc%2F-L_EkOTndUbjmkcnpXxm%2F-L_EkQRBFRoq8Cut5y1O%2Fmodule-github-01.png?generation=1551821296751868\&alt=media)

Follow the releases tag, and locate the _Latest Release_

![XOOPS Module Release on GitHub](https://265890714-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-L_EjUvXXbOiEMe2qFIc%2F-M0BqOVDh5CWQ3xMwKtx%2F-L_EkQRDzbMiYeSfEDhS%2Fmodule-github-02.png?generation=1581837296473035\&alt=media)

Download the release archive (your prefernce of either .zip or .tar.gz flavor.) Extract the contents of the archive.

![Extracting the XOOPS Module Source Code](https://265890714-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-L_EjUvXXbOiEMe2qFIc%2F-L_EkOTndUbjmkcnpXxm%2F-L_EkQRF0RjlbriO0cYA%2Fmodule-extract-01.png?generation=1551821292659818\&alt=media)

The archive will have a name composed of the repository name (i.e. publisher) followed by a dash, and the release version tag. When you are preparing the extracted archive to upload to your XOOPS site, remove everything from the dash and after it from the folder name. In this case, it should just be "publisher" and not something like "publisher-v1.04\_Final".

Upload the _publisher_ directory and all of its contents to the _modules_ directory in the web root of your XOOPS installation.

![Uploading a Module to Your XOOPS System](https://265890714-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-L_EjUvXXbOiEMe2qFIc%2F-L_EkOTndUbjmkcnpXxm%2F-L_EkQRHiUOOBZIafvON%2Fmodule-upload-01.png?generation=1551821292760636\&alt=media)

Once the module files are uploaded, enter the Administration area of your XOOPS system, and select _Modules_

![XOOPS Module Administration](https://265890714-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-L_EjUvXXbOiEMe2qFIc%2F-L_EkOTndUbjmkcnpXxm%2F-L_EkQRJFoY75BPcyZsA%2Fmodule-install-01.png?generation=1551821297603487\&alt=media)

From the module list, select the _Install Module_ button.

![XOOPS Install Module](https://265890714-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-L_EjUvXXbOiEMe2qFIc%2F-L_EkOTndUbjmkcnpXxm%2F-L_EkQRLDP5bXvUlnARZ%2Fmodule-install-02.png?generation=1551821297750082\&alt=media)

This will show a list of modules which are available on your system, which have not been installed. The module install process uses instructions in the module's files to set up its requirements, such as database tables, preference options, blocks and peermissions. Once a this process is completed, the new module is availble for use.

To install _publisher_, select the install action, and confirm the install.

![XOOPS Installable Modules](https://265890714-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-L_EjUvXXbOiEMe2qFIc%2F-L_EkOTndUbjmkcnpXxm%2F-L_EkQRNRaCUMbnflQqv%2Fmodule-install-03.png?generation=1551821297407046\&alt=media)

The system will present a report of actions taken during the installation process.

At this point, _publisher_ is installed, and ready for you to start using it. Your first steps will be to establish categories, set permissions and begin adding articles. Once you have articles, you may wish to add some blocks to highlight important or new content.

![Publisher Block on Home Page](https://265890714-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-L_EjUvXXbOiEMe2qFIc%2F-M0BjT4zPv747av8zUyR%2F-L_EkQRPrgF4aX_kIubo%2Fadd-module-06.png?generation=1581835483541556\&alt=media)

For more information on using _publisher_, please see the [XOOPS Publisher Module Tutorial](https://www.gitbook.com/read/book/xoops/publisher-tutorial).
