# 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>

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>

## 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).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://xoops.gitbook.io/xoops-install-upgrade/doc-v2.5.10/first-steps/firststeps/modules.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
