How to create an automated sitemap generator in Laravel

You don't need any fancy tools to create a sitemap for your website, you can get Laravel to do it for you and it's even easy. All it requires is one package, and a simple function. I'll use my cocktail website, Mixologisten, as an example for the sitemap.

To generate the sitemap automatically, we'll be using the laravel-sitemap package. It can be installed with a simple composer install command, like shown below, and a publish command. How to install the roumen/sitemap package.

With the package installed, it is time to use it. I created a controller with one function, the function that creates the sitemap and saves it to a file. The entire controller can be seen below. The controller that creates the sitemap and saves it to a file.

The first few lines initializes the sitemap and sets up a cache for it (it is off by default). It is also possible to set the duration of the cache (in minutes) in the setCache-function, like so: $sitemap->setCache('laravel.sitemap', 60).

Thereafter I check whether or not the sitemap is already cached, because if it is I just need to show it. However, if the sitemap isn't cached I need to create it. This is done by adding all of the URLs one by one. They are added with the add-function which takes 4 variables: URL, date, priority, and frequency of change.

The first page added is the frontpage which is hardcoded in. The remainder of pages however are either saved as a page or as a cocktail in the database, which means I can automatically run through all of the remaining URLs. For the date I use date('c') which is a ISO 8601 timestamp that includes timezone.

Finally, after running through all the URLs, the sitemap is stored as a XML-file in the root of the website, and then I redirected to the file. In my case, the XML-file is used to keep Google Webmaster posted with changes on the website.

Kommentarer

Der er ingen kommentarer.

Tilføj kommentar