I just learned how to use page_types and custom attributes.
I needed to add a custom attribute that allowed me to interact with non-concrete5 database tables to make dynamic pages based off the information:
I added the custom page type as per normal in the Dashboard and then implemented the following in the controller for the page_type:
First, create a property of the controller $attribute_name.
Then in the on_start() method, add the following line;
$this->attribute_name = Page::getCurrentPage()->getAttribute('attribute_name');
From this point $this->attribute_name is available throughout the controller to code with.
This was helpful in my case, I hope it helps you too.