Clicking the question mark within the navbar will start the help tour for this page.

Code


view/layouts/main.php
...
use luc\tourist\Tourist;
use app\helpers\TouristHelper;
...
AppAsset::register($this);
if (empty($this->js[View::POS_READY]['tourist'])) {
    Tourist::widget(TouristHelper::getDefaultTourist());
}
?>
<?php $this->beginPage() ?>
<!DOCTYPE html>
<html lang="<?= Yii::$app->language ?>">

<head>
    <meta charset="<?= Yii::$app->charset ?>">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <?= Html::csrfMetaTags() ?>
    <title>Yii2 Snippets - <?= Html::encode($this->title) ?></title>
    <?php $this->head() ?>
</head>

<body>
    <?php $this->beginBody() ?>

    <div class="wrapper">
        <nav id="sidebar">
            <!-- Sidebar Header -->
            <div class="sidebar-header">
                <?= Html::a(
                    '<span class="glyphicon glyphicon-question-sign" style="color:white;"></span>',
                    '#',
                    [
                        'class' => 'btn btn-md btn-link',
                        'style' => 'float: right;padding: 0px;',
                        'id' => 'tourHelp',
                    ]
                ); ?>
view/*/index.php
<?php

use app\helpers\MarkdownHelper;
use app\helpers\TouristHelper;
use luc\tourist\Tourist;
use yii\helpers\Html;


/* @var $this yii\web\View */

$this->title = 'Tourist';
Tourist::widget(TouristHelper::getOptions([
    [
        'element' => "#example",
        'title' => Yii::t('app', 'Example'),
        'content' => Yii::t('text', "Here you see an example, how the snippet is used within the application."),
        'placement' => 'bottom'
    ],
    [
        'element' => "#code",
        'title' => Yii::t('app', 'Code'),
        'content' =>  Yii::t('text', "Here you see the code used for this snippet."),
        'placement' => 'left'
    ], [
        'element' => "#requirement",
        'title' => Yii::t('app', 'Requirement'),
        'content' =>  Yii::t('text', "Here you see the requirements for this snippet to work properly."),
        'placement' => 'left'
    ]
]));
helpers/TourHelper.php
<?php

namespace app\helpers;

use Yii;
use yii\bootstrap\Html;
use yii\helpers\Url;

class TouristHelper
{
    public static function getDefaultTourist()
    {
        return [
            'clientOptions' => [
                'steps' => [[
                    'element' => "#tourHelp",
                    'title' => Yii::t('app', 'Help'),
                    'content' => Yii::t(
                        'text',
                        "On this page are no helps available. See the {tour-page} for how to use this snippet.",
                        ['tour-page' => Html::a(
                            Yii::t('app', 'Tour-Page'),
                            Url::to(['/tour']),
                            ['style' => 'border-bottom: 1px dotted;']
                        )]
                    ),
                    'placement' => "bottom",
                ]],
                'showProgressBar' => false,
                'template' => "<div class='popover tour'>
                            <div class='arrow'></div>
                            <h3 class='popover-title'></h3>
                            <div class='popover-content'></div>
                            <div class='popover-navigation'>
                              <button class='btn btn-sm btn-default' data-role='end'>" . Yii::t('app', 'Ok') . "</button>
                            </div>
                          </div>"
            ],
        ];
    }

    public static function getOptions($steps)
    {
        return [
            'clientOptions' => [
                'steps' => $steps,
                'sanitizeWhitelist' => [
                    "label" => ['data-toggle', 'data-trigger', 'data-placement', 'data-html', 'data-content', 'style'], "mark" => []
                ],
                'showProgressBar' => false,
                'template' => "<div class='popover tour'>
                            <div class='arrow'></div>
                            <h3 class='popover-title'></h3>
                            <div class='popover-content'></div>
                            <div class='popover-navigation'>
                              <button class='btn btn-sm btn-default' data-role='prev'>" . Yii::t('app', '« Prev') . "</button>
                              <span data-role='separator'> </span>
                              <button class='btn btn-sm btn-default' data-role='next'>" . Yii::t('app', 'Next »') . "</button>
                              <span data-role='separator'> </span>
                              <button class='btn btn-sm btn-default' data-role='end'>" . Yii::t('app', 'End Help') . "</button>
                            </div>
                          </div>",
            ],
        ];
    }
}
web/js/main.js
$(function() {
    // start tour if tour help is clicked
    $(document).on('click', '#tourHelp', function() {
        tour.restart();
    });
});
assets/AppAsset.php
...
public $js = [
        'js/main.js',
...