Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

Template Questions

Basic Extending


Reply

2 Posts   1197 Views

Avatar
Richie

22 December 2008 at 10:03pm (Last edited: 22 December 2008 10:04pm), Community Member, 18 Posts

Hi, I want to extend a class and found this example: [url]http://doc.silverstripe.com/doku.php?id=recipes:adding_metatags[/url]. This works as expected so I use the same approach on the PageCommentInterface class. My code:

==mysite/code/CustomCommentInterface.php==
class CustomCommentInterface extends DataObjectDecorator {
   function CustomCommentForm() {
      return 'Foo';
   }
}

==mysite/_config.php==
DataObject::add_extension('PageCommentInterface', 'CustomCommentInterface.php');

==mysite/templates/Layout/ArticlePage.ss==
$CustomCommentForm ('Foo' is not showing up!?)

Thanks for your time!

Note. I asked this before but the old forum is archived. I got a reply from howardgrigg (thanks for that!) but I don't want to alter the core.

Avatar
dio5

27 December 2008 at 10:49pm Community Member, 501 Posts

Hi,

instead of using a dod for that, I would extend PageCommentInterface directly.

You'll see that this is called in ContentController.php (around line 300). - see the method 'PageComments'.

In your Page_Controller you could then do more or less the same:

function CustomComments() {
      if($this->data() && $this->data()->ProvideComments) {
         return new CustomCommentInterface($this, 'CustomComments', $this->data());
      } else {
         if(isset($_REQUEST['executeForm']) && $_REQUEST['executeForm'] == 'CustomComments.PostCommentForm') {
            echo "Comments have been disabled for this page";
            die();
         }
      }
   }

which gives you the $CustomComments tag in yr template...

Hope this might help a bit.