Yii2, быстрый старт. Самый простой сайт на Yii2 со статическими страницами без использования БД
Добавлено: 2017.03.07, 17:46
Вот, по мотивам нашего с вами общения, нарисовался такой инструктаж:
///////////////////////////////////////////////////////
1. Устанавливаете Yii2 Basic на сервер, как написано в документации. Описано там всё четко и по делу, добавить мне нечего.
Разве что вот: локально на OpenServer поставилось без сучка, без задоринки. А вот удаленно, на KVM Ubuntu 16.04 с 1Gb оперативки Composer-у не хватило памяти. Бился часа два, так и не осилил. Благо, что с локального сервера на удаленный, сайт можно легко перенести простым копированием.
2. Повторюсь, установка — basic (допустим, в папку /www/site/basic, но далее мы для простоты изложения будем вести отсчет именно от папки basic в которую вы создали проект, как рекомендуется в руководстве).
Папку basic/web сразу устанавливаете как DocumentRoot — как это сделать, тоже есть в официальном руководстве на русском языке.
3. Открываете basic/controllers/SiteController.php и меняете
на
Это позволит вам не писать отдельный action для каждой статической страницы. Отныне они у вас вас будут подхватываться автоматически из папки basic/views/site/pages.
Создайте в этой папке файл one.php и скопируйте в него содержимое файла basic/views/site/about.php (для понятности).
Теперь содержимое этого файла доступно по адресу:
Соответственно, таких файлов вы можете создать сколько вам нужно.
4. Включаете ЧПУ, как написано здесь.
Настройки производятся в файле basic/config/web.php.
5. Для того, чтобы урл
выглядел как
нужно задать такое правило для ЧПУ
То есть кусок кода, отвечающий за ЧПУ в basic/config/web.php будет выглядеть так:
6. Теперь метатеги для каждой страницы. Изначально там установлен только title
А нам, допустим, нужно добавить OG-метатеги (если не в курсе что это — непременно прогуглите — для соцсетей вещь незаменимая). Пишете прямо строчкой ниже что-то вроде:
Остальные мета-теги добавляете по аналогии с этим. Если что-то непонятно — есть документация по registerMetaTag()
7. Трик для og:url
Под строчкой
в самом верху страницы, добавляете:
А сам og:url прописываете так:
Теперь при любых переносах с сервера на сервер ог-урл у вас будет в порядке.
8. То же самое и с внутренними ссылками по сайту. Подключаете хелпер (наверху страницы):
И, например, ссылку на нашу страницу-one размещаете в таком виде:
Она теперь будет отображаться правильно вне зависимости от того, какие именно правила вы установите для ЧПУ.
И да, обратите внимание, что в виджете NavBar лэйаута (basic/views/layouts/main.php) эта же ссылка будет выглядеть примерно так:
Вот вроде и всё. Простой сайт на Yii2 вполне готов к работе.
///////////////////////////////////////////////////////
Изначально я его тиснул на Хабре: Yii2, быстрый старт. Самый простой сайт на Yii2 со статическими страницами без использования БД - но там народ пока в каментах возмущен тем, что типа "это никому не нужно" НО МНЕ-ТО КАК РАЗ ТАКОЙ ТЕКСТ И НУЖЕН БЫЛ НЕДЕЛЮ НАЗАД!
///////////////////////////////////////////////////////
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',
Код: Выделить всё
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' => false,
'rules' => [
'<view>' => 'site/page',
],
],
Код: Выделить всё
$this->title = 'Титл для one.php';
Код: Выделить всё
$this->registerMetaTag([ 'property' => 'og:title', 'content' => 'OG-титл для one.php' ]);
7. Трик для og:url
Под строчкой
Код: Выделить всё
use yii\helpers\Html;
Код: Выделить всё
use yii\helpers\Url;
Код: Выделить всё
$this->registerMetaTag([ 'property' => 'og:url', 'content' => Url::to('',true) ]);
8. То же самое и с внутренними ссылками по сайту. Подключаете хелпер (наверху страницы):
Код: Выделить всё
use yii\helpers\Url;
Код: Выделить всё
<?= Url::to(['site/page', 'view' => 'one']); ?>
И да, обратите внимание, что в виджете NavBar лэйаута (basic/views/layouts/main.php) эта же ссылка будет выглядеть примерно так:
Код: Выделить всё
['label' => 'Наша страница One', 'url' => ['/site/page', 'view' => 'one']],
///////////////////////////////////////////////////////
Изначально я его тиснул на Хабре: Yii2, быстрый старт. Самый простой сайт на Yii2 со статическими страницами без использования БД - но там народ пока в каментах возмущен тем, что типа "это никому не нужно" НО МНЕ-ТО КАК РАЗ ТАКОЙ ТЕКСТ И НУЖЕН БЫЛ НЕДЕЛЮ НАЗАД!