PHPackages                             team23/module-setupmodule - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. team23/module-setupmodule

ActiveMagento2-module[Utility &amp; Helpers](/categories/utility)

team23/module-setupmodule
=========================

Setup Module for Magento 2 by TEAM23

1.1.1(3y ago)065GPL-3.0+PHPPHP ~7.4|~8.1

Since Apr 28Pushed 1y ago1 watchersCompare

[ Source](https://github.com/team23/magento-module-setupmodule)[ Packagist](https://packagist.org/packages/team23/module-setupmodule)[ Docs](https://www.team23.de/)[ RSS](/packages/team23-module-setupmodule/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (3)Used By (0)

TEAM23 SetupModule
==================

[](#team23-setupmodule)

The SetupModule makes it easy to install new persistent data for your current Magento 2 project.

It allows adding of the following Magento 2 data:

- EAV attribute groups
- EAV attributes
- content pages
- content blocks
- customer groups (TBD / WIP!)
- menus (TBD / WIP!)

How to
------

[](#how-to)

If you want to setup data, just add the resource folders as described in the following sections in your themes Team23\_SetupModule module override and run `bin/magento setup:upgrade`. All resources with a version &gt;= the setup version stored in `core_config_data`'s path `team23/setup_module/version`will become installed.

In rare cases when you want to repeat the installation process, just change the config with path `team23/setup_module/version` stored in `core_config_data` in the database.

### Example directory structure

[](#example-directory-structure)

In app/design/frontend/VENDOR/THEME/Team23\_SetupModule/

```
app
|-- ...
`-- design
    |-- ...
    `-- frontend
        |-- ...
        `-- VENDOR
            `-- THEME
                |-- ...
                `-- Team23_SetupModule
                    `-- resources
                        |-- attribute
                        |-- attribute_group
                        |-- block
                        |-- customer_group      # (TBD / WIP!)
                        |-- menu                # (TBD / WIP!)
                        `-- page

```

How it works internally
-----------------------

[](#how-it-works-internally)

Whenever `bin/magento setup:upgrade` will be run the extension will

- look in its data resource folders for defined and valid xml files (i.e. `filename_1.0.0.xml`)
- extract the files version number of the files &amp; compare it with the current setup version in the database (in `core_config_data`: `team23/setup_module/version`)
- run creation for all resources with a higher version than the setup version stored in the database (initially 0.0.0)
- increase the setup version in the database to the highest version of all resources

Installation via Composer
-------------------------

[](#installation-via-composer)

- Add satis.team23.de composer repository in your composer.json

```
composer config repositories.team23 composer https://satis.team23.de/
```

- Require team23/module-setupmodule

```
composer require team23/module-setupmodule ^dev-master
```

Resources
---------

[](#resources)

### General File naming:

[](#general-file-naming)

Resource files will be read from `resources/{TYPE}/`.
To add a new resource file add a XML file with the of your choice. The file **MUST** end on (`_`) followed by a php compatible version number &gt;= `1.0.0` and the file extension `.xml` e.g. `new-attribute_1.0.0.xml`.

The xml tags contents refer to the resources creation parameters, that Magento 2 uses in its functions. Therefore they **MUST** follow Magentos internal requirements (i.e. attribute codes must be written in snake\_case).

### Attribute resources

[](#attribute-resources)

Attribute files will be read from `resources/attribute`.

#### Mandatory tags

[](#mandatory-tags)

- `xml` - the surrounding root tag
- `code` - the attribute code

#### Optional tags

[](#optional-tags)

The following optional attributes are currently supported. For more information check the [Product EAV Attribute Options Reference](https://devdocs.magento.com/guides/v2.3/extension-dev-guide/attributes.html#add-product-eav-attribute-options-reference)

- `input`
- `label`
- `type`
- `source`
- `visible` - defaults to `0`
- `required` - defaults to `0`
- `user_defined` - defaults to `0`
- `default`
- `searchable` - defaults to `0`
- `filterable` - defaults to `0`
- `comparable` - defaults to `0`
- `visible_on_front` - defaults to `0`
- `is_used_in_grid` - defaults to `0`
- `is_filterable_in_grid` - defaults to `0`
- `used_in_product_listing` - defaults to `0`
- `backend`

**IMPORTANT NOTE**
When using `source` or `backend` tags, make sure the provided class is defined, otherwise that will lead to errors once
stored in the database. That's why SetupModule will throw an Exception if the class is not already defined.

#### Example

[](#example)

```

    my_custom_code
    text
    My label text
    1
    0
    1
    0
    0
    0
    1
    0
    1
    My example group

```

### Attribute Group resources

[](#attribute-group-resources)

Attribute Group files will be read from `resources/attribute_group`.

#### Mandatory tags

[](#mandatory-tags-1)

- `xml` - the surrounding root tag
- `name` - the groups name

#### Optional tags

[](#optional-tags-1)

- `sort_order`

#### Example

[](#example-1)

```

    Demo Group
    1

```

### Block resources

[](#block-resources)

Block files will be read from `resources/block`.

#### Mandatory tags

[](#mandatory-tags-2)

- `xml` - the surrounding root tag
- `identifier` - the blocks unique identifier (must be snake\_case)
- `title` - the blocks title

#### Optional tags

[](#optional-tags-2)

- `content` - defaults to `''`; Feel free to use CDATA for unescaped html
- `store_id` - defaults to `0`
- `is_active` - defaults to `0`

#### Example

[](#example-2)

```

    block_mydemo
    My demo block
    My demo title in HTML
Foo bar baz!]]>
    0
    1

```

### Page resources

[](#page-resources)

Page files will be read from `resources/page`.

#### Mandatory tags

[](#mandatory-tags-3)

- `xml` - the surrounding root tag
- `identifier` - the pages unique identifier (must be snake\_case)
- `title` - the pages title

#### Optional tags

[](#optional-tags-3)

- `content_heading`
- `content` - defaults to `''`; Feel free to use CDATA for unescaped html
- `store_id` - defaults to `0`
- `is_active` - defaults to `0`
- `page_layout` - defaults to `1column`

#### Example

[](#example-3)

```

    no-route
    404 - My custom 404 override
    404 - This is my overrides content heading

        Im sorry...

            Back to home

    ]]>

    0
    1
    1column

```

###  Health Score

30

—

LowBetter than 64% of packages

Maintenance27

Infrequent updates — may be unmaintained

Popularity8

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity66

Established project with proven stability

 Bus Factor1

Top contributor holds 90.5% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~926 days

Total

2

Last Release

1284d ago

PHP version history (2 changes)1.1.0PHP ~7.3

1.1.1PHP ~7.4|~8.1

### Community

Maintainers

![](https://www.gravatar.com/avatar/ce34ef5862574f47aad7affd7af09fd2e199def1e905577dbfba06542ce122fa?d=identicon)[team23](/maintainers/team23)

---

Top Contributors

[![Emanuel-23](https://avatars.githubusercontent.com/u/48509424?v=4)](https://github.com/Emanuel-23 "Emanuel-23 (19 commits)")[![BenOchocki](https://avatars.githubusercontent.com/u/146002771?v=4)](https://github.com/BenOchocki "BenOchocki (2 commits)")

---

Tags

attributespagesblocksmagento 2

### Embed Badge

![Health badge](/badges/team23-module-setupmodule/health.svg)

```
[![Health](https://phpackages.com/badges/team23-module-setupmodule/health.svg)](https://phpackages.com/packages/team23-module-setupmodule)
```

###  Alternatives

[jetbrains/phpstorm-attributes

PhpStorm specific attributes

41416.0M647](/packages/jetbrains-phpstorm-attributes)[magepal/magento2-googletagmanager

Google Tag Manager (GTM) for Magento 2 with Advance Data Layer

2671.5M4](/packages/magepal-magento2-googletagmanager)[yireo/magento2-webp2

Magento 2 module to add WebP support to the Magento frontend

2091.2M7](/packages/yireo-magento2-webp2)[mageplaza/magento-2-blog-extension

Magento 2 Blog extension

123708.2k5](/packages/mageplaza-magento-2-blog-extension)[mageplaza/magento-2-seo-extension

Magento 2 SEO extension

138506.6k2](/packages/mageplaza-magento-2-seo-extension)[magepal/magento2-reindex

Reindex your Magento2 store quickly and easily from backend/admin, instead of command line.

112649.7k1](/packages/magepal-magento2-reindex)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
