Blog » How to remove "Your website URL" field from comment forms in Silverstripe CMS
It's obvious that “Your website URL” field in Silverstripe comment forms is a plum for spammers, so let's remove this field.
Comment forms' interface is defined in PageCommentInterface class (“cms\code\sitefeatures\PageCommentInterface.php”), we need to create our own interface for comment forms on top of this class. In order to do that create a file called “mysite\code\MyPageCommentInterface.php” and write the following to it:
<?php
class MyPageCommentInterface extends PageCommentInterface {
public function PostCommentForm() {
$form = parent::PostCommentForm();
$fields = $form->Fields();
$fields->removeByName("CommenterURL");
return $form;
}
}
After adding a new file to your Silverstripe project you have to rebuild the file cache — execute “http://your-site/dev/build” script.
Then open “mysite/code/Page.php” file and rewrite PageComments method in your Page_Controller class:
public function PageComments() {
$ret = parent::PageComments();
// Substitute system page comments interface with ours
if (get_class($ret) == 'PageCommentInterface') {
$ret = new MyPageCommentInterface($this, 'PageComments', $this->data());
}
return $ret;
}
Now “Your website URL” field in comment forms won't be shown, and all attempts to pass CommenterURL variable in a POST-request will be unsuccessful.
No one has commented on this page yet.