setono/prerender-bundle

A Symfony bundle that integrates 'prerender' services, i.e. rendertron or prerender.io

Installs: 2 505

Dependents: 1

Suggesters: 0

Security: 0

Stars: 0

Watchers: 1

Forks: 1

Open Issues: 2

Type:symfony-bundle

dev-master / 1.0.x-dev 2022-05-10 12:37 UTC

This package is auto-updated.

Last update: 2022-05-10 12:37:56 UTC


README

Latest Version Latest Unstable Version Software License Build Status

Use this bundle to (pre)render a request or URL. This is useful if you render your page using javascript and want to show the HTML output of that page to Googlebot or other clients not very fond of javascript.

See Googles own help page on this topic: Implement dynamic rendering.

Installation

To install this bundle, simply run:

composer require setono/prerender-bundle

This will install the bundle and enable it if you're using Symfony Flex. If you're not using Flex, add the bundle manually to bundles.php instead.

Configuration

# config/packages/setono_prerender.yaml
setono_prerender:
    prerenderer:
        rendertron:
            url: <the url of your rendertron service> # default is http://localhost:3000

Usage

Here is a very basic example of a product controller where we want to render the index (i.e. a product listing page).

<?php

declare(strict_types=1);

namespace App\Controller;

use Setono\PrerenderBundle\Prerenderer\PrerendererInterface;
use Symfony\Component\HttpFoundation\Response;

final class ProductController
{
    public function index(PrerendererInterface $prerenderer): Response
    {
        if($this->isBot()) {
            // return the rendered HTML if the client is a bot
            return new Response($prerenderer->renderMainRequest());
        }

        // render the response the normal way if the client is NOT a bot
        return new Response('...');
    }

    /**
     * Method that returns true if the client is a bot
     */
    private function isBot(): bool
    {
        // ...
    }
}