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

Обсуждение документации второй версии фреймворка. Переводы Cookbook и авторские рецепты.
Ответить
romayii
Сообщения: 70
Зарегистрирован: 2017.03.02, 11:00

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

Сообщение romayii »

Вот, по мотивам нашего с вами общения, нарисовался такой инструктаж:

///////////////////////////////////////////////////////

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',
То есть кусок кода, отвечающий за ЧПУ в 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, быстрый старт. Самый простой сайт на Yii2 со статическими страницами без использования БД - но там народ пока в каментах возмущен тем, что типа "это никому не нужно" :) НО МНЕ-ТО КАК РАЗ ТАКОЙ ТЕКСТ И НУЖЕН БЫЛ НЕДЕЛЮ НАЗАД! :D
Последний раз редактировалось romayii 2017.03.07, 17:50, всего редактировалось 2 раза.
Аватара пользователя
chungachguk
Сообщения: 435
Зарегистрирован: 2012.07.17, 11:52

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

Сообщение chungachguk »

Изначально я его тиснул на Хабре: Yii2, быстрый старт. Самый простой сайт на Yii2 со статическими страницами без использования БД - но там народ пока в каментах возмущен тем, что типа "это никому не нужно"
Это никому не нужно. Хрень полная.
romayii
Сообщения: 70
Зарегистрирован: 2017.03.02, 11:00

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

Сообщение romayii »

Onotole писал(а): 2017.03.07, 17:48 Разве этого всего нет в документации?
В виде пошагового гайда - нет.
romayii
Сообщения: 70
Зарегистрирован: 2017.03.02, 11:00

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

Сообщение romayii »

chungachguk писал(а): 2017.03.07, 20:04 Это никому не нужно. Хрень полная.
Это неправда.

Мне это было нужно неделю назад. И еще один чел отписался там в каментах. И еще в заклады кинуло 27 человек.
Onotole
Сообщения: 1808
Зарегистрирован: 2012.12.24, 12:49

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

Сообщение Onotole »

romayii писал(а): 2017.03.07, 21:26 Это неправда.
Правда
romayii писал(а): 2017.03.07, 21:26 Мне это было нужно неделю назад
Молодец. Разобрался и теперь знаешь больше, чем, если бы прочел такую статью
romayii писал(а): 2017.03.07, 21:26И еще в заклады кинуло 27 человек.
Такие посты обычно кидают в закладки, чтобы каменты почитать
romayii
Сообщения: 70
Зарегистрирован: 2017.03.02, 11:00

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

Сообщение romayii »

za4me писал(а): 2017.03.08, 00:58 Для чего на статический сайт фреймворк?
А например что еще?
romayii
Сообщения: 70
Зарегистрирован: 2017.03.02, 11:00

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

Сообщение romayii »

Onotole писал(а): 2017.03.07, 23:47
Молодец. Разобрался и теперь знаешь больше, чем, если бы прочел такую статью
Я предпочел бы подобный мануал - не люблю изыскания на ровном месте - я как и любой программист - достаточно ленив :)
Аватара пользователя
chungachguk
Сообщения: 435
Зарегистрирован: 2012.07.17, 11:52

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

Сообщение chungachguk »

romayii писал(а): 2017.03.07, 21:26
chungachguk писал(а): 2017.03.07, 20:04 Это никому не нужно. Хрень полная.
Это неправда.

Мне это было нужно неделю назад. И еще один чел отписался там в каментах. И еще в заклады кинуло 27 человек.
Не благодари http://des1roer.blogspot.ru/
romayii
Сообщения: 70
Зарегистрирован: 2017.03.02, 11:00

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

Сообщение romayii »

chungachguk писал(а): 2017.03.08, 04:54 Не благодари http://des1roer.blogspot.ru/
???

//а чего простыни в блоге под кат не убираешь? ;)
Аватара пользователя
za4me
Сообщения: 152
Зарегистрирован: 2016.06.26, 15:29
Контактная информация:

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

Сообщение za4me »

romayii писал(а): 2017.03.08, 02:17
za4me писал(а): 2017.03.08, 00:58 Для чего на статический сайт фреймворк?
А например что еще?
Если 5-10 страниц, имхо, лучше сделать на html.
Аватара пользователя
chungachguk
Сообщения: 435
Зарегистрирован: 2012.07.17, 11:52

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

Сообщение chungachguk »

romayii писал(а): 2017.03.08, 10:50
chungachguk писал(а): 2017.03.08, 04:54 Не благодари http://des1roer.blogspot.ru/
???

//а чего простыни в блоге под кат не убираешь? ;)
чтобы ни одна мелочь от внимания не ускользнула
romayii
Сообщения: 70
Зарегистрирован: 2017.03.02, 11:00

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

Сообщение romayii »

za4me писал(а): 2017.03.08, 11:42 Если 5-10 страниц, имхо, лучше сделать на html.
Ну, можно и так.

Хотя я раньше для этого использовал эдакий самописный MVC - просто раскидал код по файлам - вьюхи и лэйаут отдельно, контроллер (1 шт.) - отдельно, ну и т.д., подключение через require и через <?= $vars => в лэйауте - это все равно быстрее выходит чем "чистый" HTML.

Иначе, например надо тебе хидеры поменять общие - приходится менять в каждой странице.
Аватара пользователя
za4me
Сообщения: 152
Зарегистрирован: 2016.06.26, 15:29
Контактная информация:

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

Сообщение za4me »

romayii писал(а): 2017.03.08, 17:02
za4me писал(а): 2017.03.08, 11:42 Если 5-10 страниц, имхо, лучше сделать на html.
Ну, можно и так.

Хотя я раньше для этого использовал эдакий самописный MVC - просто раскидал код по файлам - вьюхи и лэйаут отдельно, контроллер (1 шт.) - отдельно, ну и т.д., подключение через require и через <?= $vars => в лэйауте - это все равно быстрее выходит чем "чистый" HTML.

Иначе, например надо тебе хидеры поменять общие - приходится менять в каждой странице.
А в чем проблема header и footer распихнуть по разным файлам и в файлах контента их подключать?
romayii
Сообщения: 70
Зарегистрирован: 2017.03.02, 11:00

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

Сообщение romayii »

za4me писал(а): 2017.03.08, 21:13 А в чем проблема header и footer распихнуть по разным файлам и в файлах контента их подключать?
А все равно не получится целиком - метатеги-то тебе нужны разные будут для каждой страницы - по любому придется делать view отдельно layout отдельно, ну и т.д. :)
Аватара пользователя
wbread
Сообщения: 3
Зарегистрирован: 2013.02.08, 08:30

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

Сообщение wbread »

вполне неплохо, теперь тоже самое и для адванса бы ^_^
Ответить