Something didn't work just now which I thought would, which suggests my understanding of the way inheritance works in Silverstripe is slightly flawed. I'm hoping someone can clarify things for me.
I have, as usual, a Page.php. I also have a ChildPage.php which extends that. In my themes directory, I have templates called Page.ss and ChildPage.ss, which behave exactly as they should. I also have a PHP class called StudentsPage, which extends ChildPage. My expectation was that unless I created a matching template file called StudentsPage.ss, it would default to using the parent template file, namely ChildPage.ss. But it doesn't, it uses Page.ss, skipping a generation. This is puzzling to me. It's not hugely problematic, because if I do create a file called StudentsPage.ss, it does use it. It doesn't go well with the Don't Repeat Yourself philosophy, though, as it is fundamentally the same as ChildPage.ss.
What have I misunderstood here? This is Silverstripe 2.3.4.