Как правильно настроить страницу маршрутизации сайта? - PullRequest
0 голосов
/ 06 мая 2019

Я беспокоюсь о маршрутизации моего сайта. Все мои метаэлементы SEO реализованы через раздел Metadata моей CMS. Одна из наиболее важных записей, названная Page маршрутизацией, работает правильно. Я собираюсь создать метатеги для конкретной страницы. После того, как я поместил нужную ссылку в качестве ввода в запись «маршрутизация страницы» для реализации этих метатегов, она не работает. Например, рассмотрите следующую иерархию, чтобы показать точную проблему.

Главная страница -> Курс -> Курс 1 -> тема 1, тема 2,… ->

Когда я выбираю, скажем, тему 1 и хочу создать для нее Metas, реализуются последние теги для раздела «Курс»! Другими словами, внутренние ссылки раздела «Курс» моего сайта не поддерживают теги.

Я новичок в программировании и не могу найти, кто решит эту проблему.

некоторый раздел моего макета выглядит следующим образом:

<link rel="canonical" href="https://physexams.com/<?=Yii::$app- >controller->id."/". Yii::$app->controller->action->id?>" />

<link rel="publisher" href="<?=$metadata->publisher?>" />

<title><?= Html::encode($metadata->title) ?></title>

<meta charset="<?= Yii::$app->charset ?>">

<meta name="description" content="<?=$metadata->meta_description?>"/>

и часть контроллера и его действия:

class CoursesController extends Controller
{

    /**
     * @inheritdoc
     */
    public function actions()
    {
        return [
            'error' => [
                'class' => 'yii\web\ErrorAction',
            ],
            'captcha' => [
                'class' => 'yii\captcha\CaptchaAction',
                'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
            ],
        ];
    }

    /**
     * Displays homepage.
     *
     * @return mixed
     */
    public function actionIndex( $id = 0   )
    {
        $coursesP = [] ;
        if ( $id != 0 )
        {
            $coursesP = Courses::find()->where(['id'=> $id , 'itsok' => "yes"])->with('lessons')->one();

            if ( empty($coursesP) )
            {
                $this->redirect(Url::to(['courses']));
            }else {

                $courses = Lessons::find()->where(['course_id' => $coursesP->id, 'itsok' => "yes"])->all();
            }
        }
        else {

            $courses = Courses::find()->where(['itsok' => "yes"])->with('lessons')->all();

        }

        return $this->render('index' , [
            'courses' => $courses ,
            'id' => $id ,
            'parent' => $coursesP
        ]);
    }
    public function actionInternal( $id  = 0 )
    {



        if ( $id == NULL)
        {
            return $this->redirect(Url::to(['courses/index']));
        }

        $lesson = Lessons::find()->where(['itsok' => 'yes' , 'id' => $id])->with(['course' , 'lessonElements'])->one();
        $otherLessons = Lessons::find()->where(['course_id' => $lesson->course_id  , 'itsok' => 'yes'])->all();

        if ( empty( $lesson->id) )
        {
            return $this->redirect(Url::to(['courses/index']));
        }

        return $this->render('internal' , [
            'lesson' => $lesson ,

            'otherLessons' => $otherLessons

        ]);
    }

}

Файл конфигурации UrlManager:

<?php

$params = array_merge(
    require(__DIR__ . '/../../common/config/params.php'),
    require(__DIR__ . '/../../common/config/params-local.php'),
    require(__DIR__ . '/params.php'),
    require(__DIR__ . '/params-local.php')
);


use \yii\web\Request;
$baseUrl = str_replace('/frontend/web', '', (new Request)->getBaseUrl());



return [
    'id' => 'app-frontend',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log', 'thumbnail'],
    'controllerNamespace' => 'frontend\controllers',
    //'defaultRoute' => '/site/index',

    'components' => [
        'request' => [
            'baseUrl' => $baseUrl,
        ],
        'urlManager' => [
            'baseUrl' => $baseUrl,
            'class' => 'yii\web\UrlManager',

            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'enableStrictParsing' => false,
            'rules' => [
                'home' => 'site/index' ,
                '/' => 'site/index', 
                'frontend/web' => 'site/index',
                'index' => 'site/index',
                'site' => 'site/index',
                'site/login' => 'site/login' ,
                'site/contact' => 'site/contact' ,
                'site/about' => 'site/about' ,
                'site/faq' => 'site/faq' ,
                'profile/logout' => 'profile/logout',
                'profile' => 'profile/index',
                'lesson/<lesson:\w+>/<id:\d+>' => 'courses/internal',
                'lesson' => 'courses/internal',

                'course/<cat:\w+>/<id:\d+>' => 'courses/index',
                'courses' => 'courses/index',

                'exam/<cat:\w+>/<id:\d+>' => 'exam/internal',
                'exam' => 'exam/index',

                'ticket' => 'ticket/index',



                'flashcard/<cat:\w+>/<id:\d+>' => 'blog/internal',
                'blog/<cat:\w+>/<id:\d+>' => 'blog/cat',
                'blog' => 'blog/index',

                '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',


            ],
            ],
        'user' => [
            'identityClass' => 'common\models\User',
            'enableAutoLogin' => true,
        ],
        'log' => [
            'traceLevel' => YII_DEBUG ? 3 : 0,
            'targets' => [
                [
                    'class' => 'yii\log\FileTarget',
                    'levels' => ['error', 'warning'],
                ],
            ],
        ],
        'errorHandler' => [
            'errorAction' => 'site/error',
        ],

        'thumbnail' => [
            'class' => 'himiklab\thumbnail\EasyThumbnail',
            'cacheAlias' => 'assets/gallery_thumbnails',
        ],
        'assetManager' => [
            'class' => 'yii\web\AssetManager',
            'bundles' => [
                        'yii\web\JqueryAsset' => [
                            'js' => [
                                'jquery.min.js'
                            ]
                        ],

                        'yii\bootstrap\BootstrapAsset' => [
                            'css' => [
                               'css/bootstrap.min.css',
                            ]
                        ],

            ],
        ],
    ],
    'params' => $params,
];

Я хочу, чтобы элемент маршрутизации работал для каждой ссылки, которую я поместил именно в раздел метаданных моей CMS

...