Сначала я написал пространное предисловие к этому тексту, а потом удалил его. В общем, этот текст для тех, кто как и я, любит сначала сделать, а потом уже разбираться с тем, что же он такое сделал. Чтобы собрать нижеизложенную информацию мне пришлось три дня усиленно рыться в различных источниках. Так что, надеюсь кому и пригодится. Это годная шпаргалка.
1. Устанавливаете Yii2 Basic на сервер, как написано в документации. Описано там всё четко и по делу, добавить мне нечего.
Разве что вот: локально на OpenServer поставилось без сучка, без задоринки. А вот удаленно, на KVM Ubuntu 16.04 с 1Gb оперативки Composer-у не хватило памяти. Бился часа два, так и не осилил. Благо, что с локального сервера на удаленный, сайт можно легко перенести простым копированием.
2. Повторюсь, установка — basic (допустим, в папку /www/site/basic, но далее мы для простоты изложения будем вести отсчет именно от папки basic в которую вы создали проект, как рекомендуется в руководстве).
Папку basic/web сразу устанавливаете как DocumentRoot — как это сделать, тоже есть в официальном руководстве на русском языке.
3. Открываете basic/controllers/SiteController.php и меняете
public function actions()
{
return [
'error' => [
'class' => 'yiiwebErrorAction',
],
'captcha' => [
'class' => 'yiicaptchaCaptchaAction',
'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
],
];
}
на
public function actions()
{
return [
'error' => [
'class' => 'yiiwebErrorAction',
],
'captcha' => [
'class' => 'yiicaptchaCaptchaAction',
'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
],
'page' => [
'class' => 'yiiwebViewAction',
],
];
}
Это позволит вам не писать отдельный action для каждой статической страницы. Отныне они у вас вас будут подхватываться автоматически из папки basic/views/site/pages.
Создайте в этой папке файл one.php и скопируйте в него содержимое файла basic/views/site/about.php (для понятности).
Теперь содержимое этого файла доступно по адресу:
http://yoursite.com/index.php?r=site%2Fpage&view=one
Соответственно, таких файлов вы можете создать сколько вам нужно.
4. Включаете ЧПУ, как написано здесь.
Настройки производятся в файле basic/config/web.php.
5. Для того, чтобы урл
http://yoursite.com/index.php?r=site%2Fpage&view=one
выглядел как
http://yoursite.com/one
нужно задать такое правило для ЧПУ
'view' => 'site/page',
(Внимание!!! Слово view в вышеприведенном примере следует взять в угловые скобки, не смог написать как есть, ибо хабра-HTML-фильтры не пропускают, зато ниже — все нормально, парадокс… *пожимаю плечами*)
То есть кусок кода, отвечающий за ЧПУ в basic/config/web.php будет выглядеть так:
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' => false,
'rules' => [
'<view>' => 'site/page',
],
],
6. Теперь метатеги для каждой страницы. Изначально там установлен только title
$this->title = 'Титл для one.php';
А нам, допустим, нужно добавить OG-метатеги (если не в курсе что это — непременно прогуглите — для соцсетей вещь незаменимая). Пишете прямо строчкой ниже что-то вроде:
$this->registerMetaTag([ 'property' => 'og:title', 'content' => 'OG-титл для one.php' ]);
Остальные мета-теги добавляете по аналогии с этим. Если что-то непонятно — есть документация по registerMetaTag()
7. Трик для og:url
Под строчкой
use yiihelpersHtml;
в самом верху страницы, добавляете:
use yiihelpersUrl;
А сам og:url прописываете так:
$this->registerMetaTag([ 'property' => 'og:url', 'content' => Url::to('',true) ]);
Теперь при любых переносах с сервера на сервер ог-урл у вас будет в порядке.
8. То же самое и с внутренними ссылками по сайту. Подключаете хелпер (наверху страницы):
use yiihelpersUrl;
И, например, ссылку на нашу страницу-one размещаете в таком виде:
<?= Url::to(['site/page', 'view' => 'one']); ?>
Она теперь будет отображаться правильно вне зависимости от того, какие именно правила вы установите для ЧПУ.
И да, обратите внимание, что в виджете NavBar лэйаута (basic/views/layouts/main.php) эта же ссылка будет выглядеть примерно так:
['label' => 'Наша страница One', 'url' => ['/site/page', 'view' => 'one']],
Вот вроде и всё. Простой сайт на Yii2 вполне готов к работе (жалко что смайлы запрещают ставить).
Так или иначе, документацию к Yii2 читать вам все равно придется, по крайней мере, вводную часть. Но зато теперь вы знаете как сразу создать готовое к работе веб-приложение, а не просто заготовку. Если бы у меня такое руководство было сразу — я бы тогда не сидел три дня в сети, а побольше гулял бы. Весна же.
Будьте здоровы!
Автор: procode