Hook replace (deprecated)

From Sohowiki
(Difference between revisions)
Jump to: navigation, search
(Things that screw it up)
(Example 1 - Calling hook_replace from your plugin's install manifest)
Line 9: Line 9:
  
  
==Example 1 - Calling hook_replace from your plugin's install manifest==
+
==Calling hook_replace from your plugin's install manifest==
 
<pre>hook_replace("sohoadmin/program/main_menu.php", "main_menu-replacements.php");</pre>
 
<pre>hook_replace("sohoadmin/program/main_menu.php", "main_menu-replacements.php");</pre>
 
  
 
==Example 2 - Content of replacement manifest file (i.e. main_menu-replacements.php)==
 
==Example 2 - Content of replacement manifest file (i.e. main_menu-replacements.php)==

Revision as of 11:51, 28 February 2007

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).


Calling hook_replace from your plugin's install manifest

hook_replace("sohoadmin/program/main_menu.php", "main_menu-replacements.php");

Example 2 - Content of replacement manifest file (i.e. main_menu-replacements.php)


#new replacement#
# Add another title row below the "Basic Features Group" row.
<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>

#new replacement#
# Replace title row with modifed version
<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".

Personal tools