官术网_书友最值得收藏!

Will a Module solve my problem?

The previous two recipes have shown you how to assess two possible types of CMS extension, and to see if they are optimal for any specific problem. This recipe rounds out the analysis and shows you how to determine whether creating a Module is the most appropriate solution.

How to do it...

By examining your requirements, and comparing them to the strengths of the Module API, we can figure out whether or not a Module is the best way to implement your extension.

To do so, consult the following list, and determine if each item applies to the problem you are trying to solve. Feel free to write down a list of your answers (yes/no).

  1. Are you trying to solve a problem that requires multiple actions? An example of multiple actions would be both displaying a form and processing its results.
  2. Will you need to support localization and internationalization to solve your problem? For example, if your code will be displaying messages, will the messages need to be translated into multiple languages?
  3. Will your solution require an Administration panel?
  4. Will you want to share this solution with other people so they can install it into their own CMS Made Simple sites?
  5. Do you need to create new database tables or set up new preferences to solve your problem?
  6. Do you want your code to display help text in the Admin area, so site administrators understand what parameters are available and what the code does?

If you answered "yes" to any of the above questions, a Module is going to be the best way to implement your extension — with one possible exception. If you want to write an extension that you can apply to Smarty variables within a template to reformat their output (that is, a Smarty modifier), you will need to use a Tag. However, outside of that one case, a Module will be your best bet. If you answered "no" to all of the above questions, you could still use a module, but you might want to consider using a Tag or User-Defined Tag, as you will still be able to solve your problem with less complexity and overhead.

How it works...

A Module is PHP code that extends the CMSModule Class, which means that you start with a rich API that will save you a great deal of work. Module code can do virtually anything that PHP can do. The only thing that Modules cannot do (and which Tags can do) is act directly as Smarty modifiers.

Modules are extremely powerful and versatile, but that power comes with additional complexity. If you find that it would be possible to solve your problem with a Tag or User-Defined Tag, you should opt for the simpler approach. If, however, your requirements go beyond the capabilities of those extensions, there are very few limits to what you can accomplish with a Module!

See also

  • Will a User-Defined Tag solve my problem recipe?
  • Will a Tag solve my problem recipe?
  • Create a "Hello World" module recipe
主站蜘蛛池模板: 红河县| 海晏县| 新河县| 亚东县| 伽师县| 南召县| 江陵县| 浦江县| 延安市| 都兰县| 邛崃市| 收藏| 中山市| 三江| 栾城县| 平陆县| 剑阁县| 洛南县| 图们市| 宜川县| 霍州市| 太仓市| 思茅市| 如东县| 新竹县| 乐安县| 甘泉县| 芮城县| 武隆县| 巴塘县| 禹州市| 柳河县| 兰溪市| 勃利县| 青岛市| 象州县| 聊城市| 庄河市| 衡南县| 南京市| 涟水县|