Pull to refresh

Yii2, быстрый старт. Самый простой сайт на Yii2 со статическими страницами без использования БД

Reading time3 min
Views20K
Сначала я написал пространное предисловие к этому тексту, а потом удалил его. В общем, этот текст для тех, кто как и я, любит сначала сделать, а потом уже разбираться с тем, что же он такое сделал. Чтобы собрать нижеизложенную информацию мне пришлось три дня усиленно рыться в различных источниках. Так что, надеюсь кому и пригодится. Это годная шпаргалка.

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' => 'yii\web\ErrorAction',
		],
		'captcha' => [
			'class' => 'yii\captcha\CaptchaAction',
			'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
		],
	];
}

на

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


Это позволит вам не писать отдельный 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 yii\helpers\Html;

в самом верху страницы, добавляете:

use yii\helpers\Url;

А сам og:url прописываете так:

$this->registerMetaTag([ 'property' => 'og:url', 'content' => Url::to('',true) ]);

Теперь при любых переносах с сервера на сервер ог-урл у вас будет в порядке.

8. То же самое и с внутренними ссылками по сайту. Подключаете хелпер (наверху страницы):

use yii\helpers\Url;

И, например, ссылку на нашу страницу-one размещаете в таком виде:

<?= Url::to(['site/page', 'view' => 'one']); ?>

Она теперь будет отображаться правильно вне зависимости от того, какие именно правила вы установите для ЧПУ.

И да, обратите внимание, что в виджете NavBar лэйаута (basic/views/layouts/main.php) эта же ссылка будет выглядеть примерно так:

['label' => 'Наша страница One', 'url' => ['/site/page', 'view' => 'one']],

Вот вроде и всё. Простой сайт на Yii2 вполне готов к работе (жалко что смайлы запрещают ставить).

Так или иначе, документацию к Yii2 читать вам все равно придется, по крайней мере, вводную часть. Но зато теперь вы знаете как сразу создать готовое к работе веб-приложение, а не просто заготовку. Если бы у меня такое руководство было сразу — я бы тогда не сидел три дня в сети, а побольше гулял бы. Весна же.

Будьте здоровы!
Tags:
Hubs:
Total votes 29: ↑15 and ↓14+1
Comments60

Articles