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

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
主站蜘蛛池模板: 大新县| 遵义市| 会东县| 偏关县| 和林格尔县| 廊坊市| 镇宁| 宁津县| 松江区| 仁寿县| 榆树市| 瑞丽市| 罗定市| 于田县| 灵丘县| 鱼台县| 秭归县| 西畴县| 察隅县| 沧源| 西和县| 三河市| 陇川县| 公安县| 青田县| 和平县| 武清区| 二手房| 永善县| 诸城市| 尚志市| 迁西县| 东辽县| 大安市| 长寿区| 莫力| 扶绥县| 囊谦县| 寿宁县| 精河县| 依安县|