Jump to:

17452 Posts in 4473 Topics by 1971 members

Archive

SilverStripe Forums » Archive » Homepage page listing

Our old forums are still available as a read-only archive.

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

Page: 1 2
Go to End
Author Topic: 2453 Views
  • NickJacobs
    Avatar
    Community Member
    144 Posts

    Homepage page listing Link to this post

    Hi, I'm pretty new to this and having some trouble implementing a function on the homepage which lists pages from another section. I've got the news list sorted from the tutorials but can't seem to replicate it ... and trying to find documentation is a nightmare!

    I've got a DocumentHolder type and a DocumentPage type:

    *** in DocumentHolder.php ***

    class DocumentHolder extends Page {   
       static $db = array();   
       static $has_one = array();
    static $allowed_children = array('DocumentPage');
    }

    class DocumentHolder_Controller extends Page_Controller {}

    *** in DocumentPage.php ***

    class DocumentPage extends Page {
    static $db = array(
    'PDFdocDesc' => 'Text',
    'ShowOnHomePage' => 'Text'
    );
    static $has_one = array(
    'PDFdoc' => 'File'
    );
       
    function getCMSFields() {
       $fields = parent::getCMSFields();
       $fields->addFieldToTab("Root.Content.Main", new TextField('PDFdocDesc',"Document Description"));
       $fields->addFieldToTab("Root.Content.Main", new FileIFrameField('PDFdoc',"PDF Document"));    
          $fields->addFieldToTab("Root.Content.Main", new CheckboxField('ShowOnHomePage',"Show this on homepage?"));    
          $fields->removeFieldFromTab("Root.Content.Main", "Content");
                
    return $fields;
    }
    }

    class DocumentPage_Controller extends Page_Controller {
       
    }

    and, I'm pretty sure this is where I'm getting trouble because I just copied the news one & I don't fully understand it yet

    class HomePage extends SiteTree {
       static $db = array(
       'SubTitle' => 'Text'
       );
       static $has_one = array(
    );

    class HomePage_Controller extends ContentController {
       function init() {
          parent::init();
          
          }
          
       function LatestNews($num=5) {
       $news = DataObject::get_one("NewsIntroPage");
       return ($news) ? DataObject::get("NewsArticlePage", "ParentID = $news->ID", "Date DESC", "", $num) : false;
    }

       function HomeDocs($num=5) {
        $doccys = DataObject::get_one("DocumentHolder");
        return ($doccys) ? DataObject::get("DocumentPage", "ParentID = $doccys->ID", "Date DESC", "", $num) : false;
    }
    }

    In my sidebar I'm trying to do this:

    <% control HomeDocs %>
           <% if $ShowOnHomePage %>   
    <li ><a href="$PDFdoc.filename" target="_blank" title="Download this file">$Title t</a></li>
          <% end_if %>
       <% end_control %>

    any help with this would be much appreciated. Thanks

  • Double-A-Ron
    Avatar
    Community Member
    604 Posts

    Re: Homepage page listing Link to this post

    What error/problem are you experiencing exactly?

  • Double-A-Ron
    Avatar
    Community Member
    604 Posts

    Re: Homepage page listing Link to this post

    class HomePage_Controller extends ContentController {


    Can you post the code you have for the HomePage class? I haven't been through this tutorial but I think that line should be:

    class HomePage_Controller extends PageController {


    Cheers
    Aaron

  • NickJacobs
    Avatar
    Community Member
    144 Posts

    Re: Homepage page listing Link to this post

    Hi Aaron...I've added my Homepage class in the code above. Homepage sits at the same level as page (doesn't inherit from it) so extends sitetree rather than page.

  • Double-A-Ron
    Avatar
    Community Member
    604 Posts

    Re: Homepage page listing Link to this post

    So what is happening when you run that code exactly? It helps to know the error and where the error is occurring.

    Aaron

  • NickJacobs
    Avatar
    Community Member
    144 Posts

    Re: Homepage page listing Link to this post

    sorry....so if I try and include the HomeDocs function on my homepage all I get when I try to go to the site is a blank page with:

    Error
    The website server has not been able to respond to your request.

  • dio5
    Avatar
    Community Member
    501 Posts

    Re: Homepage page listing Link to this post

    try

    class HomePage_Controller extends Page_Controller {

    with an underscore between page and controller...

    *** edit ** sorry I didn't read everything, so just ignore this

  • Willr
    Avatar
    Forum Moderator
    5482 Posts

    Re: Homepage page listing Link to this post

    Put your site into dev mode so you can actually see the proper error rather then that blank generic one. So open up mysite/_config.php and add

    Director::set_environment_type("dev");

    or if you are doing this on a local dev environment eg WAMP or MAMP then make sure your server is in the array of dev servers in that _config

    Director::set_dev_servers(array(
       'localhost',
       '127.0.0.1',
    ));

    Once the sites in dev mode we shall see a bright red (sometimes helpful) error!.

    2453 Views
Page: 1 2
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.