Hook replace (deprecated)
From Sohowiki
Revision as of 19:53, 23 September 2010 by ElinorDurall (Talk | contribs)
Contents |
Syntax and Description
- Syntax
- hook_replace(path to source file from docroot, replacement manifest file name)
- Description
- Reads your replacement manifest file and replaces specified chunk(s) of code in source file with your different (modified) code.
- Specific replacements for a particular source file should be placed in a dedicated file (this is your replacement manifest).
Example 1 - Calling hook_replace from your plugin's install manifest
The following example would be used to replace certain code in main_menu.php with code defined in your replacement manifest file (here named main_menu-replacements.php").
hook_replace("sohoadmin/program/main_menu.php", "main_menu-replacements.php");
# Add another title row below the "Basic Features Group" row. #new replacement# <oldcode> <tr> <td class="fgroup_title"><? echo lang("Basic Features Group"); ?></td> </tr> </oldcode> <newcode> <tr> <td class="fgroup_title"><? echo lang("Basic Features Group"); ?></td> </tr> <tr> <td class="fgroup_title">Hello World!</td> </tr> </newcode> # Replace title row with modifed version #new replacement# <oldcode> <tr> <td class="fgroup_title"><? echo lang("Basic Features Group"); ?></td> </tr> </oldcode> <newcode> <tr> <td class="fgroup_title" style="font-style: italic;">Hello World!</td> </tr> </newcode>
Things that screw it up
The following is a list of common problems that can preven hook_replace calls from working properly.
- Permissions - If php can't write to the file, then your hook_replace won't work on it.
- Not remembering the deal with client_files - If you're using hook_replace on, for example, client_files/shopping_cart/pgm-add_cart.php it's good practice (and less work for you while developing) to include an additional hook_replace call in your install manifest so that you're writing to both copies of the file, like so...
hook_replace("sohoadmin/client_files/shopping_cart/pgm-add_cart.php", "pgm-add_cart-replacements.php"); hook_replace("shopping/pgm-add_cart.php", "pgm-add_cart-replacements.php");
Note that "pgm-add_cart-replacements.php" is just an example of what your replacement manifest file might be called. Could just as easily be "myreplacements.php".