Jump to:

791 Posts in 369 Topics by 303 members

Widgets

SilverStripe Forums » Widgets » Change Widget Title

Discuss SilverStripe Widgets.

Moderators: martimiz, Sean, biapar, Willr, Ingo, swaiba, simon_w

Page: 1
Go to End
Author Topic: 1656 Views
  • kheeteck
    Avatar
    Community Member
    7 Posts

    Change Widget Title Link to this post

    Hi

    I am writing my own custom links widget that can display a list of links

    However, under this group of html links, i wish to put a Widget Title on top.

    By default, i need to set a static value to $title.

    But i would like user to define this title at run time - configure through the widget, just like they input their links.

    How can i do that?

    My code --

    class LinkWidget extends Widget {
       static $db = array(
          "Links_23" => "Varchar",
          "Name1" => "Varchar",
          "Link1" => "Varchar",
          "Name2" => "Varchar",
          "Link2" => "Varchar",
          "Name3" => "Varchar",
          "Link3" => "Varchar",
          "Name4" => "Varchar",
          "Link4" => "Varchar",
          "LinkTitle" => "Varchar"
          );
       
       
       static $title = "Top Links";
       static $cmsTitle = "Links";
       static $description = "Puts links into the side bar for you blog readers to access. Please remember to put http:// before links unless they are internal links.";

    function output() {
    $linkTitle = $this->LinkTitle;

        $link1 = $this->Link1;
        $test1 = $this->Link1;
       
        $name1 = $this->Name1;
        $link2 = $this->Link2;
       
        $test2 = $this->Link2;
        $name2 = $this->Name2;
       
        $link3 = $this->Link3;
       
        $test3 = $this->Link3;
       
        $name3 = $this->Name3;
        $link4 = $this->Link4;
       
       
        $test4 = $this->Link4;
        $name4 = $this->Name4;
       
       if(empty($linkTitle)){
       
       }else{
        $title = $linkTitle;
       }
       
       if (empty($test1)) {
       $output_1 = "";
       } else {
    $output_1 = "<li><a href='$link1'>$name1</a><br></li>";
       }
       
       if (empty($test2)){
       $output_2 = "";
       }else{
    $output_2 = "<li> <a href='$link2'>$name2</a><br></li>";
       }

       if (empty($test3)) {
       $output_3 = "";
       } else {
    $output_3 = "<li><a href='$link3'>$name3</a><br></li>";
       }
       
       if (empty($test4)){
       $output_4 = "";
       }else{
    $output_4 = "<li> <a href='$link4'>$name4</a><br></li>";
       }
       
       return "$output_1 $output_2 $output_3 $output_4";
       
          }
          
          function getCMSFields() {
           $links_choose = $this->Links_23;

           return new FieldSet(
           new TextField("LinkTitle", "Title "),
             new TextField("Name1", "Name "),
             new TextField("Link1", "Link "),
             new TextField("Name2", "Name "),
             new TextField("Link2", "Link "),
           new TextField("Name3", "Name "),
             new TextField("Link3", "Link "),
           new TextField("Name4", "Name "),
             new TextField("Link4", "Link "));
    }

    }

    Thanks

  • ajshort
    Avatar
    Community Member
    244 Posts

    Re: Change Widget Title Link to this post

    You can create a Title() method on your Widget class that overloads the default Title method - which just returns the static title.

    public function Title() {
       return $this->LinkTitle ? $this->LinkTitle : 'Default Title';
    }

    1656 Views
Page: 1
Go to Top

Want to know more about the company that brought you SilverStripe? Then check out SilverStripe.com

Comments on this website? Please give feedback.