Thanks for your input, a few final questions about this before i give up on trying to be fancy.
1. Is it not possible to "extend" a module with a custom module? Kinda like if I was object programing? Or is hook_alter also required for this?
2. Is there any documentation I can read about making a module able to be altered? What changes need to be made to allow this?
3. The nodeasblock.module does have several nodeasblock_*_form_alter functions in it, is it somehow possible to preprocess some of these in a theme or in a custom module, to add the new checkbox to toggle the link being an href yes/no, and to then call a different function [from my custom module] to accomplish this?
Even if this last option is not the best solution [since I should probably submit a patch to the module with the new checkbox as part of the module's code], I'm curious to just know IF this is possible; so that when I encounter more complicated problems, where what I need to do isn't necessarily something that anyone else is ever going to want, and I still want to make sure that if the module is updated that my extension to it still (probably) works.
While I appreciate your comment that I could just "leave it" I'm also trying to learn here at the same time the more advanced aspects of drupal at this stage since I am feeling ready for it! At the moment the best solution I have is using PHP at the block-nodeasblock.tpl.php level to do a string replace and strip the a href; but that feels like "wearing a bullet vest" instead of just "getting rid of the gun".
:-)
Until now I've been depending on a lot of other Drupal people to handle bugs/features when they get hardcore but I really want to get a better understanding for how to modify / extend / hook into and alter modules. It's hard finding a lot of good information on this, so I'm always open to some good links too!
Thanks again!
Really appreciated.
Sebastian.
Unfortunately in that case it doesn't look like there's a way in. You'll need
to either hack the module or submit a patch back to the maintainer to make it
more flexible. The latter approach is generally preferred. :-)
Or just decide that having the link there doesn't actually hurt anything so
it's not worth fussing over. That's also a viable option far more often than
people realize.
--Larry Garfield
On Thursday, December 09, 2010 10:17:12 pm sebastian wrote:
> Hi Larry,
>
> Thank you so much for replying to my query.
>
> So if my contrib module doesn't offer an _alter() (and it does not) my
> only option is to hack the module? [or worse, use jquery to alter the
> output]
>
> The module is question is nodeasblock and the function implements:
>
> nodeasblock_block ($op = 'list', $delta = 0)
>
> It makes theming decisions in it's operation, which I need to alter.
> Namely it decides that the $node->title should be:
>
> l($node->title, 'node/'. $node->nid)
>
> I need to strip the <a href> since I don't want my block to be clickable
> and lead to itself.
>
> In other words:
>
> 'subject' => l($node->title, 'node/'. $node->nid),
>
> will just become
>
> 'subject' => $node->title,
>
> I can hack the module, but that seems like a "no-no"
>
> Thanks!
>
> Sebastian.
>
> On 2010-12-09 8:04 PM, Larry Garfield wrote:
> > Some hooks that offer definitions, like hook_menu(), will have a
> > corresponding alter hook like hook_menu_alter(). There is no alter hook
> > for hook_block(), though. That said, there is an alter hook for all
> > forms, hook_form_alter(). So if you're manipulating a form you may be
> > able to do so that way.
> >
> > --Larry Garfield
> >
> > On Thursday, December 09, 2010 9:22:48 pm sebastian wrote:
> >> Hello,
> >>
> >> Having a terrible time finding anything about this, and all I can find
> >> on Drupal.org is the API for hooks, which doesn't really explain enough.
> >>
> >> My question is, if there is a contrib module with an implementation of:
> >>
> >> hook_block()
> >>
> >> such as:
> >>
> >> nodeasblock_block()
> >>
> >> How can I change the values inside of this function, without changing
> >> the function directly?
> >>
> >> can I write something in template.php to catch the nodeasblock_block
> >> hook and then change the values in it?
> >>
> >> Or do I need to change the nodeasblock module directly? perhaps adding
> >> the feature as a full blown check box addition or just hack it??
> >>
> >> Thanks for any help you can provide me!
> >>
> >> kindly,
> >>
> >> Sebastian.