There are an important misunderstandings about D3 especially in Japan.
I made "Duplicatable" architecture for X2 system.
Then, a module only for XoopsCube Legacy cannot be called a D3 module, even if the module can be cloned easily.
D3 modules can work with XoopsCube Legacy2.1, XOOPS2-JP, ImpressCMS, and XOOPS from xoops.org (a bug patch needed).
This compatibility is quite important for me and you.
In XOOPS, there are some forked core.
It looks sad.
But they can be brother/friend each other if many modules can work with any cores.
I made/maintained my modules for whole XOOPS world, not for some specific forked cores. (Of course, XOOPS from xoops.org is just one of X2 forked cores)
Here is the definition of D3.
(1) X2 compatible
(2) dirname can be /^[0-9a-zA-Z_-]+$/
(3) Almost logics placed inside XOOPS_TRUST_PATH
(4) can be duplicated just by copy into ROOT/modules/. (No rewriting the source code)
(5) No logics in XOOPS_TRUST_PATH are duplicated.
- Place ROOT/modules/(dirname)/mytrustdirname.php
- All tables are created as (prefix)_(dirname)_(table)
- All templates are created as (dirname)_(tplfile) into DB
- All Blocks are rendered by 'module' templates not by 'block' templates
- Almost blocks can be cloned (just set 'can_clone')
- can use D3Language Manager
- can use D3Comment Integration
You can read a great documentation "Creating a D3 module" by kentaro.
Translated version by google:
Hi! Just a suggestion ( maybe a feature request ):
beyond duplicatable, a module can be movable too, at least partially. Capable of being installed out of modules folder, or moved from one place to another (ex: from \modules\news\ to \news\), using a "connector module" inside the XOOPS Cube module folder with the necessary information to make this works. What do you think?
PS: Ah! A little doubt: what the number 3 means in D3?