I'm building a custom theme and I would like to automatically display last third news (i.e. nodes with content type = News) on the bottom of the home page, from inside the home page template.
Something like this:
+-------------------------------+
| +---------------------------+ |
| | | |
| | Slides | |
| | | |
| +---------------------------+ |
| |
| +---------------------------+ |
| | | |
| | Page | |
| | Body | |
| | | |
| | | |
| +---------------------------+ |
| |
| +-------+ +-------+ +-------+ |
| | Last | |Second | | Third | |
| | News | | Last | | Last | |
| | | | News | | News | |
| +-------+ +-------+ +-------+ |
+-------------------------------+
I created a content type named Home page, with fields for manage slides and the page body, then I created a new content (a new node) of type Home page.
Inside my custom theme I created a template file named node--home-page.html.twig
and inside it I can handle the Home page's fields (slides and body) and how to render them inside the page.
After that I created another content type News and I added some content of such type.
Now I would like to automatically display latest news inside the homepage template as in the figure above. What is the simplest way to do it?
I'm thinking to load latest news in some hook_preprocess_HOOK
function (using the EntityFieldQuery
object) then add them inside a variable for the Twig template. Inside the template I will perform a for
loop rendering latest news at the page's bottom. Is this a good way to do it or I'm completely out of the way?
EDIT
Correction: I would like to display latest news between slides and body, in this way:
+-------------------------------+
| +---------------------------+ |
| | | |
| | Slides | |
| | | |
| +---------------------------+ |
| |
| +-------+ +-------+ +-------+ |
| | Last | |Second | | Third | |
| | News | | Last | | Last | |
| | | | News | | News | |
| +-------+ +-------+ +-------+ |
| |
| +---------------------------+ |
| | | |
| | Page | |
| | Body | |
| | | |
| | | |
| +---------------------------+ |
+-------------------------------+
Where slides
and body
are two fields of the Home page content type.