The preceding lesson enabled us to extract the content of article no 1 from the database and build a web page from it. Let’s generalise for more than one single web page...
Our template is not terribly useful if it can only display article no 1. Let’s enhance it to display any article:
For that we will call our web page with a parameter, id_article=2
. Type the following into your web browser http://yoursite.net/spip.php?page=tutorial&id_article=2
.
And there it appears... still article 1. So let’s fix that problem by modifying the line in the tutorial.html template that defines the "article loop":<BOUCLE_article(ARTICLES){id_article}>
(As you can see, you simply replace {id_article=1}
with {id_article}
.)
And now, http://yoursite.net/spip.php?page=tutorial&id_article=2
should display article 2 [1].
The loop called BOUCLE_article
will be executed inside a "context" that includes the id_article
variable having a value of 2 (i.e. the value which was passed in the URL). If you specify {id_article=1}
in the template, it will specifically find article no 1, but if you only specify {id_article}
, it will find the article whose number is indicated by the context (in this case, by the URL).
Now click on:
- http://yoursite.net/spip.php?page=tutorial&id_article=1
,
- http://yoursite.net/spip.php?page=tutorial&id_article=2
and
- http://yoursite.net/spip.php?page=tutorial
.
Do you see the difference? The first two pages show you articles no 1 and 2, the third does not have a id_article
in its context, and generates an error.
Congratulations! Your template is now "contextual".