Publish site-pskov with en/ru docs
This commit is contained in:
230
pskov/ru/education.01.why.html
Normal file
230
pskov/ru/education.01.why.html
Normal file
@@ -0,0 +1,230 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<meta charset="utf-8">
|
||||
<head>
|
||||
<style>
|
||||
#header
|
||||
{
|
||||
background: #856d51;
|
||||
padding: 0.7em;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
#header a
|
||||
{
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
padding: 0.5em 1em 0.5em 1em;
|
||||
}
|
||||
#title
|
||||
{
|
||||
color: #433729;
|
||||
}
|
||||
html
|
||||
{
|
||||
font-family: sans-serif;
|
||||
}
|
||||
body
|
||||
{
|
||||
line-height: 1.5em;
|
||||
}
|
||||
body
|
||||
{
|
||||
background: #FAFAFA;
|
||||
}
|
||||
table
|
||||
{
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
table, th, td
|
||||
{
|
||||
border: 1px solid #aaa;
|
||||
padding: 0.5em;
|
||||
margin-top: 0.5em;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
code, pre
|
||||
{
|
||||
font-family: monospace, serif;
|
||||
font-size: 1em;
|
||||
color: #7f0a0c;
|
||||
background: #f5f5f5;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
.contents
|
||||
{
|
||||
background: #FFFFFF;
|
||||
width: 720px;
|
||||
padding: 1em;
|
||||
margin-top: 2em;
|
||||
margin-bottom: 2em;
|
||||
border: 1px solid #E0E0E0;
|
||||
text-align: left;
|
||||
color: #444;
|
||||
}
|
||||
#footer
|
||||
{
|
||||
text-align: center;
|
||||
}
|
||||
#lang
|
||||
{
|
||||
float: right;
|
||||
}
|
||||
</style>
|
||||
<title>
|
||||
PSKOV
|
||||
</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
<strong id="title">ПСКОВ</strong>
|
||||
<a href="pskov_1.0.0+ru.html">Инструмент</a>
|
||||
<a href="education.html">Обучение</a>
|
||||
<div id="lang">
|
||||
<a href="../en/education.01.why.html">EN</a>
|
||||
<a href="../ru/education.01.why.html">RU</a>
|
||||
</div>
|
||||
</div>
|
||||
<center><h1>
|
||||
Обучение: 01. Почему
|
||||
</h1></center>
|
||||
<center><div class="contents">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>< Назад</th>
|
||||
<th>Начало</th>
|
||||
<th>Далее ></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Отсутствует</td>
|
||||
<td><a href="education.html">Обучение</a></td>
|
||||
<td><a href="education.02.deps.html">02. Зависимости</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p></div><div class="contents"></p>
|
||||
<p>В этом документе мы кратко объясним причины создания <strong>ПСКОВА</strong>.</p>
|
||||
<p>Ожидаемое время завершения: 5 минут.</p>
|
||||
<p><strong>Содержание</strong></p>
|
||||
<ul>
|
||||
<li><a href="#why">01. Почему</a></li>
|
||||
<li><a href="#features">02. Возможности</a></li>
|
||||
</ul>
|
||||
<p><a name="why"/></p>
|
||||
<h2 id="01">01. Почему</h2>
|
||||
<p>Возможно, вы знаете о существовании множества <a href="https://habr.com/ru/company/selectel/blog/236441/">генераторов статических сайтов</a>, зачем же создавать ещё один? Потому что <strong>они не были достаточно хороши</strong> для нужд <a href="http://opengamestudio.org">Студии Открытых Игр</a>.</p>
|
||||
<p>Таков список <strong>избыточных для нас функциональностей</strong>:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>№</th>
|
||||
<th>Избыточная функциональность</th>
|
||||
<th>Детали</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td>Изучение чего-либо, кроме HTML, CSS, JavaScript и Markdown</td>
|
||||
<td>Этих технологий достаточно для создания чистого веб-сайта</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2</td>
|
||||
<td>На стороне сервера</td>
|
||||
<td>Никто не должен иметь возможность выключить ваш сайт кроме вас</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>3</td>
|
||||
<td>Установка</td>
|
||||
<td>Отсутствие принудительных обновлений, о которых никто не просил</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>4</td>
|
||||
<td>Осязаемый исходный код</td>
|
||||
<td>Отсутствие миллионов файлов исходного кода</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p><a name="features"/></p>
|
||||
<h2 id="02">02. Возможности</h2>
|
||||
<p>Как следствие, таковы <strong>возможности ПСКОВА</strong>:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>№</th>
|
||||
<th>Функциональность ПСКОВА</th>
|
||||
<th>Детали</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td>HTML, CSS, JavaScript и Markdown</td>
|
||||
<td>То, что вы уже знаете</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2</td>
|
||||
<td>На стороне клиента</td>
|
||||
<td><strong>ПСКОВ</strong> является приложением JavaScript, исполняемым на стороне клиента, строго на вашем устройств</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>3</td>
|
||||
<td>Доступен в сети</td>
|
||||
<td><a href="http://opengamestudio.org/pskov/ru/pskov_1.0.0+ru.html">http://opengamestudio.org/pskov</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>4</td>
|
||||
<td>Доступен без сети</td>
|
||||
<td>Просто сохраните страницу <a href="http://opengamestudio.org/pskov/ru/pskov_1.0.0+ru.html">Инструмент</a>, а затем откройте её локально</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>5</td>
|
||||
<td>Осязаемый исходный код</td>
|
||||
<td><strong>ПСКОВ</strong> умещается в один файл HTML</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>6</td>
|
||||
<td>Принадлежит каждому</td>
|
||||
<td><strong>ПСКОВ</strong> выпущен под лицензией <a href="https://creativecommons.org/share-your-work/public-domain/cc0/">CC0</a> (общественное достояние)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>7</td>
|
||||
<td>Работает десятилетия</td>
|
||||
<td>Вы можете использовать <strong>ПСКОВ</strong> и на Windows 2000, и на Windows 2030*</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>* Windows 2030 не существует (ещё), мы просто указываем на тот факт, что <strong>ПСКОВ</strong> создан для работы на операционных системах, выпущенных в период 2000-2030 годов.</p>
|
||||
<p></div><div class="contents"></p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>< Назад</th>
|
||||
<th>Начало</th>
|
||||
<th>Далее ></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Отсутствует</td>
|
||||
<td><a href="education.html">Обучение</a></td>
|
||||
<td><a href="education.02.deps.html">02. Зависимости</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div></center>
|
||||
<div id="footer">
|
||||
Сайт сгенерирован <a href="http://opengamestudio.org/pskov">ПСКОВОМ</a>
|
||||
из <a href="http://github.com/ogstudio/site-pskov">этого исходного кода</a>.
|
||||
Сайт расположен на <a href="https://pages.github.com">GitHub Pages</a>.
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
67
pskov/ru/education.01.why.md
Normal file
67
pskov/ru/education.01.why.md
Normal file
@@ -0,0 +1,67 @@
|
||||
Title: Обучение: 01. Почему
|
||||
Date: 2019-06-18 00:00
|
||||
Category: Page
|
||||
Slug: education.01.why
|
||||
Lang: ru
|
||||
|
||||
| < Назад | Начало | Далее > |
|
||||
|---|---|---|
|
||||
| Отсутствует | [Обучение][index] | [02. Зависимости][next] |
|
||||
|
||||
</div><div class="contents">
|
||||
|
||||
В этом документе мы кратко объясним причины создания **ПСКОВА**.
|
||||
|
||||
Ожидаемое время завершения: 5 минут.
|
||||
|
||||
**Содержание**
|
||||
|
||||
* [01. Почему](#why)
|
||||
* [02. Возможности](#features)
|
||||
|
||||
<a name="why"/>
|
||||
|
||||
## 01. Почему
|
||||
|
||||
Возможно, вы знаете о существовании множества [генераторов статических сайтов][other-generators], зачем же создавать ещё один? Потому что **они не были достаточно хороши** для нужд [Студии Открытых Игр][ogs].
|
||||
|
||||
Таков список **избыточных для нас функциональностей**:
|
||||
|
||||
| № | Избыточная функциональность | Детали |
|
||||
|---|---|---|
|
||||
| 1 | Изучение чего-либо, кроме HTML, CSS, JavaScript и Markdown | Этих технологий достаточно для создания чистого веб-сайта |
|
||||
| 2 | На стороне сервера | Никто не должен иметь возможность выключить ваш сайт кроме вас |
|
||||
| 3 | Установка | Отсутствие принудительных обновлений, о которых никто не просил |
|
||||
| 4 | Осязаемый исходный код | Отсутствие миллионов файлов исходного кода |
|
||||
|
||||
<a name="features"/>
|
||||
|
||||
## 02. Возможности
|
||||
|
||||
Как следствие, таковы **возможности ПСКОВА**:
|
||||
|
||||
| № | Функциональность ПСКОВА | Детали |
|
||||
|---|---|---|
|
||||
| 1 | HTML, CSS, JavaScript и Markdown | То, что вы уже знаете |
|
||||
| 2 | На стороне клиента | **ПСКОВ** является приложением JavaScript, исполняемым на стороне клиента, строго на вашем устройств |
|
||||
| 3 | Доступен в сети | [http://opengamestudio.org/pskov][pskov] |
|
||||
| 4 | Доступен без сети | Просто сохраните страницу [Инструмент][pskov], а затем откройте её локально |
|
||||
| 5 | Осязаемый исходный код | **ПСКОВ** умещается в один файл HTML |
|
||||
| 6 | Принадлежит каждому | **ПСКОВ** выпущен под лицензией [CC0][cc0] (общественное достояние)|
|
||||
| 7 | Работает десятилетия | Вы можете использовать **ПСКОВ** и на Windows 2000, и на Windows 2030\* |
|
||||
|
||||
\* Windows 2030 не существует (ещё), мы просто указываем на тот факт, что **ПСКОВ** создан для работы на операционных системах, выпущенных в период 2000-2030 годов.
|
||||
|
||||
</div><div class="contents">
|
||||
|
||||
| < Назад | Начало | Далее > |
|
||||
|---|---|---|
|
||||
| Отсутствует | [Обучение][index] | [02. Зависимости][next] |
|
||||
|
||||
[index]: education.html
|
||||
[next]: education.02.deps.html
|
||||
|
||||
[other-generators]: https://habr.com/ru/company/selectel/blog/236441/
|
||||
[ogs]: http://opengamestudio.org
|
||||
[pskov]: http://opengamestudio.org/pskov/ru/pskov_1.0.0+ru.html
|
||||
[cc0]: https://creativecommons.org/share-your-work/public-domain/cc0/
|
||||
185
pskov/ru/education.02.deps.html
Normal file
185
pskov/ru/education.02.deps.html
Normal file
@@ -0,0 +1,185 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<meta charset="utf-8">
|
||||
<head>
|
||||
<style>
|
||||
#header
|
||||
{
|
||||
background: #856d51;
|
||||
padding: 0.7em;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
#header a
|
||||
{
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
padding: 0.5em 1em 0.5em 1em;
|
||||
}
|
||||
#title
|
||||
{
|
||||
color: #433729;
|
||||
}
|
||||
html
|
||||
{
|
||||
font-family: sans-serif;
|
||||
}
|
||||
body
|
||||
{
|
||||
line-height: 1.5em;
|
||||
}
|
||||
body
|
||||
{
|
||||
background: #FAFAFA;
|
||||
}
|
||||
table
|
||||
{
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
table, th, td
|
||||
{
|
||||
border: 1px solid #aaa;
|
||||
padding: 0.5em;
|
||||
margin-top: 0.5em;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
code, pre
|
||||
{
|
||||
font-family: monospace, serif;
|
||||
font-size: 1em;
|
||||
color: #7f0a0c;
|
||||
background: #f5f5f5;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
.contents
|
||||
{
|
||||
background: #FFFFFF;
|
||||
width: 720px;
|
||||
padding: 1em;
|
||||
margin-top: 2em;
|
||||
margin-bottom: 2em;
|
||||
border: 1px solid #E0E0E0;
|
||||
text-align: left;
|
||||
color: #444;
|
||||
}
|
||||
#footer
|
||||
{
|
||||
text-align: center;
|
||||
}
|
||||
#lang
|
||||
{
|
||||
float: right;
|
||||
}
|
||||
</style>
|
||||
<title>
|
||||
PSKOV
|
||||
</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
<strong id="title">ПСКОВ</strong>
|
||||
<a href="pskov_1.0.0+ru.html">Инструмент</a>
|
||||
<a href="education.html">Обучение</a>
|
||||
<div id="lang">
|
||||
<a href="../en/education.02.deps.html">EN</a>
|
||||
<a href="../ru/education.02.deps.html">RU</a>
|
||||
</div>
|
||||
</div>
|
||||
<center><h1>
|
||||
Обучение: 02. Зависимости
|
||||
</h1></center>
|
||||
<center><div class="contents">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>< Назад</th>
|
||||
<th>Начало</th>
|
||||
<th>Далее ></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><a href="education.01.why.html">01. Почему</a></td>
|
||||
<td><a href="education.html">Обучение</a></td>
|
||||
<td><a href="education.03.site.html">03. Сайт</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p></div><div class="contents"></p>
|
||||
<p>В этом документы мы коснёмся зависимостей <strong>ПСКОВА</strong> и их установку.</p>
|
||||
<p>Ожидаемое время завершения: 5 минут.</p>
|
||||
<p><strong>Содержание</strong></p>
|
||||
<ul>
|
||||
<li><a href="#deps">01. Зависимости</a></li>
|
||||
<li><a href="#details">02. Подробности</a></li>
|
||||
</ul>
|
||||
<p><a name="deps"/></p>
|
||||
<h2 id="01">01. Зависимости</h2>
|
||||
<p>Мы спроектировали <strong>ПСКОВ</strong> таким образом, чтобы он исполнялся в веб-браузере. Для запуска <strong>ПСКОВА</strong> вам понадобятся:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>№</th>
|
||||
<th>Зависимость ПСКОВА</th>
|
||||
<th>Подробности</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td>Веб-браузер 2010-го года или новее</td>
|
||||
<td><strong>ПСКОВ</strong> использует ECMAScript 5 (2009), любой современный веб-браузер должен подойти</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2</td>
|
||||
<td>К локальной файловой системе доступ</td>
|
||||
<td><a href="http://opengamestudio.org/lfsa/ru">ЛФСД</a> предоставляет <strong>ПСКОВУ</strong> доступ к вашей локальной файловой системе. Установите ЛФСД, чтобы использовать <strong>ПСКОВ</strong>.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p><strong>Внимание</strong>: <a href="http://opengamestudio.org/lfsa/ru">установите ЛФСД</a>, чтобы использовать <strong>ПСКОВ</strong>.</p>
|
||||
<p><a name="details"/></p>
|
||||
<h2 id="02">02. Подробности</h2>
|
||||
<p><strong>ПСКОВ</strong>:</p>
|
||||
<ul>
|
||||
<li>является приложением JavaScript на стороне клиента</li>
|
||||
<li>не имеет прямого доступа к локальной файловой системе</li>
|
||||
<li>использует <a href="http://opengamestudio.org/lfsa/ru">ЛФСД</a> для доступа к локальной файловой системе</li>
|
||||
<li>использует <a href="https://github.com/showdownjs/showdown">Showdown</a> для перевода Markdown в HTML</li>
|
||||
</ul>
|
||||
<p><strong>ЛФСД</strong>:</p>
|
||||
<ul>
|
||||
<li>является крошечным веб-сервером, предоставляющим доступ к локальной файловой системе</li>
|
||||
<li>использует порт 8000</li>
|
||||
<li>занимает менее 200 строк кода, <a href="https://bitbucket.org/ogstudio/lfsa/src/default/lfsa_1.0.0.py">удостоверьтесь в этом</a> сами</li>
|
||||
</ul>
|
||||
<p></div><div class="contents"></p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>< Назад</th>
|
||||
<th>Начало</th>
|
||||
<th>Далее ></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><a href="education.01.why.html">01. Почему</a></td>
|
||||
<td><a href="education.html">Обучение</a></td>
|
||||
<td><a href="education.03.site.html">03. Сайт</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div></center>
|
||||
<div id="footer">
|
||||
Сайт сгенерирован <a href="http://opengamestudio.org/pskov">ПСКОВОМ</a>
|
||||
из <a href="http://github.com/ogstudio/site-pskov">этого исходного кода</a>.
|
||||
Сайт расположен на <a href="https://pages.github.com">GitHub Pages</a>.
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
64
pskov/ru/education.02.deps.md
Normal file
64
pskov/ru/education.02.deps.md
Normal file
@@ -0,0 +1,64 @@
|
||||
Title: Обучение: 02. Зависимости
|
||||
Date: 2019-06-18 00:00
|
||||
Category: Page
|
||||
Slug: education.02.deps
|
||||
Lang: ru
|
||||
|
||||
| < Назад | Начало | Далее > |
|
||||
|---|---|---|
|
||||
| [01. Почему][prev] | [Обучение][index] | [03. Сайт][next] |
|
||||
|
||||
</div><div class="contents">
|
||||
|
||||
В этом документы мы коснёмся зависимостей **ПСКОВА** и их установку.
|
||||
|
||||
Ожидаемое время завершения: 5 минут.
|
||||
|
||||
**Содержание**
|
||||
|
||||
* [01. Зависимости](#deps)
|
||||
* [02. Подробности](#details)
|
||||
|
||||
<a name="deps"/>
|
||||
|
||||
## 01. Зависимости
|
||||
|
||||
Мы спроектировали **ПСКОВ** таким образом, чтобы он исполнялся в веб-браузере. Для запуска **ПСКОВА** вам понадобятся:
|
||||
|
||||
| № | Зависимость ПСКОВА | Подробности |
|
||||
|---|---|---|
|
||||
| 1 | Веб-браузер 2010-го года или новее | **ПСКОВ** использует ECMAScript 5 (2009), любой современный веб-браузер должен подойти |
|
||||
| 2 | К локальной файловой системе доступ | [ЛФСД][lfsa] предоставляет **ПСКОВУ** доступ к вашей локальной файловой системе. Установите ЛФСД, чтобы использовать **ПСКОВ**. |
|
||||
|
||||
**Внимание**: [установите ЛФСД][lfsa], чтобы использовать **ПСКОВ**.
|
||||
|
||||
<a name="details"/>
|
||||
|
||||
## 02. Подробности
|
||||
|
||||
**ПСКОВ**:
|
||||
|
||||
* является приложением JavaScript на стороне клиента
|
||||
* не имеет прямого доступа к локальной файловой системе
|
||||
* использует [ЛФСД][lfsa] для доступа к локальной файловой системе
|
||||
* использует [Showdown][showdown] для перевода Markdown в HTML
|
||||
|
||||
**ЛФСД**:
|
||||
|
||||
* является крошечным веб-сервером, предоставляющим доступ к локальной файловой системе
|
||||
* использует порт 8000
|
||||
* занимает менее 200 строк кода, [удостоверьтесь в этом][lfsa-src] сами
|
||||
|
||||
</div><div class="contents">
|
||||
|
||||
| < Назад | Начало | Далее > |
|
||||
|---|---|---|
|
||||
| [01. Почему][prev] | [Обучение][index] | [03. Сайт][next] |
|
||||
|
||||
[index]: education.html
|
||||
[prev]: education.01.why.html
|
||||
[next]: education.03.site.html
|
||||
|
||||
[lfsa]: http://opengamestudio.org/lfsa/ru
|
||||
[lfsa-src]: https://bitbucket.org/ogstudio/lfsa/src/default/lfsa_1.0.0.py
|
||||
[showdown]: https://github.com/showdownjs/showdown
|
||||
387
pskov/ru/education.03.site.html
Normal file
387
pskov/ru/education.03.site.html
Normal file
@@ -0,0 +1,387 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<meta charset="utf-8">
|
||||
<head>
|
||||
<style>
|
||||
#header
|
||||
{
|
||||
background: #856d51;
|
||||
padding: 0.7em;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
#header a
|
||||
{
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
padding: 0.5em 1em 0.5em 1em;
|
||||
}
|
||||
#title
|
||||
{
|
||||
color: #433729;
|
||||
}
|
||||
html
|
||||
{
|
||||
font-family: sans-serif;
|
||||
}
|
||||
body
|
||||
{
|
||||
line-height: 1.5em;
|
||||
}
|
||||
body
|
||||
{
|
||||
background: #FAFAFA;
|
||||
}
|
||||
table
|
||||
{
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
table, th, td
|
||||
{
|
||||
border: 1px solid #aaa;
|
||||
padding: 0.5em;
|
||||
margin-top: 0.5em;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
code, pre
|
||||
{
|
||||
font-family: monospace, serif;
|
||||
font-size: 1em;
|
||||
color: #7f0a0c;
|
||||
background: #f5f5f5;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
.contents
|
||||
{
|
||||
background: #FFFFFF;
|
||||
width: 720px;
|
||||
padding: 1em;
|
||||
margin-top: 2em;
|
||||
margin-bottom: 2em;
|
||||
border: 1px solid #E0E0E0;
|
||||
text-align: left;
|
||||
color: #444;
|
||||
}
|
||||
#footer
|
||||
{
|
||||
text-align: center;
|
||||
}
|
||||
#lang
|
||||
{
|
||||
float: right;
|
||||
}
|
||||
</style>
|
||||
<title>
|
||||
PSKOV
|
||||
</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
<strong id="title">ПСКОВ</strong>
|
||||
<a href="pskov_1.0.0+ru.html">Инструмент</a>
|
||||
<a href="education.html">Обучение</a>
|
||||
<div id="lang">
|
||||
<a href="../en/education.03.site.html">EN</a>
|
||||
<a href="../ru/education.03.site.html">RU</a>
|
||||
</div>
|
||||
</div>
|
||||
<center><h1>
|
||||
Обучение: 03. Сайт
|
||||
</h1></center>
|
||||
<center><div class="contents">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>< Назад</th>
|
||||
<th>Начало</th>
|
||||
<th>Далее ></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><a href="education.02.deps.html">02. Зависимости</a></td>
|
||||
<td><a href="education.html">Обучение</a></td>
|
||||
<td><a href="education.04.lang.html">04. Язык</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p></div><div class="contents"></p>
|
||||
<p>В этом документы мы создадим простой статический сайт с двумя страницами.</p>
|
||||
<p>Ожидаемое время завершения: 10 минут.</p>
|
||||
<p><strong>Содержание</strong></p>
|
||||
<ul>
|
||||
<li><a href="#inspiration">01. Вдохновление</a></li>
|
||||
<li><a href="#cfg">02. Изучите файл <code>pskov.cfg</code></a></li>
|
||||
<li><a href="#item">03. Изучите файл <code>item.template</code></a></li>
|
||||
<li><a href="#md">04. Изучите файлы <code>about.md</code> и <code>cv.md</code></a></li>
|
||||
<li><a href="#lfsa">05. Запустите ЛФСД</a></li>
|
||||
<li><a href="#gen">06. Сгенерируйте сайт</a></li>
|
||||
<li><a href="#summary">07. Итог</a></li>
|
||||
</ul>
|
||||
<p><a name="inspiration"/></p>
|
||||
<h2 id="01">01. Вдохновление</h2>
|
||||
<p>Представьте, что вы являетесь выдающимся русским живописцем Валентином Серовым. Каждый раз, когда кто-либо хочет узнать о вас, он идёт на <a href="https://ru.wikipedia.org/wiki/%D0%A1%D0%B5%D1%80%D0%BE%D0%B2,_%D0%92%D0%B0%D0%BB%D0%B5%D0%BD%D1%82%D0%B8%D0%BD_%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B0%D0%BD%D0%B4%D1%80%D0%BE%D0%B2%D0%B8%D1%87">Википедию</a>. Сегодня утром вы просыпаетесь раньше обычного с отчётливым желанием создать свой собственный веб-сайт.</p>
|
||||
<p>Вы приступаете к созданию следующих страницы:</p>
|
||||
<ul>
|
||||
<li>About me</li>
|
||||
<li>Curriculum vitae (CV)</li>
|
||||
</ul>
|
||||
<p>Несколько позже в <a href="https://github.com/OGStudio/site-pskov-sample/tree/master/01.TwoPages">директории вашего сайта</a> у вас оказываются следующие файлы:</p>
|
||||
<ul>
|
||||
<li>pskov.cfg</li>
|
||||
<li>item.template</li>
|
||||
<li>about.md</li>
|
||||
<li>cv.md</li>
|
||||
</ul>
|
||||
<p>Давайте взглянем на их содержимое.</p>
|
||||
<p><a name="cfg"/></p>
|
||||
<h2 id="02pskovcfg">02. Изучите файл <code>pskov.cfg</code></h2>
|
||||
<p>Файл <code>pskov.cfg</code> содержит следующее:</p>
|
||||
<pre><code>input = .
|
||||
item = item.template
|
||||
</code></pre>
|
||||
<p><code>pskov.cfg</code> является <a href="https://ru.wikipedia.org/wiki/.ini">файлом настроек</a> со следующими ключами:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Ключ</th>
|
||||
<th>Описание</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>input</code></td>
|
||||
<td>Указывает на директорию с файлом, на который ссылается ключ <code>item</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>item</code></td>
|
||||
<td>Указывает на файл с шаблоном HTML, который используется для генерации файлов HTML из Markdown</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>В нашем случае файл <code>item.template</code> расположен рядом с <code>pskov.cfg</code>, поэтому мы используем <code>.</code> для обозначения текущей директории.</p>
|
||||
<p><a name="item"/></p>
|
||||
<h2 id="03itemtemplate">03. Изучите файл <code>item.template</code></h2>
|
||||
<p>Файл <code>item.template</code> содержит следующее:</p>
|
||||
<pre><code><!DOCTYPE html>
|
||||
<html>
|
||||
<meta charset="utf-8">
|
||||
<head>
|
||||
<style>
|
||||
- - - - Схлопнуто для краткости - - - -
|
||||
</style>
|
||||
<title>Serov</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
<strong>Serov</strong>
|
||||
<a href="about.html">About me</a>
|
||||
<a href="cv.html">CV</a>
|
||||
</div>
|
||||
<center>
|
||||
<h1>PSKOV_ITEM_TITLE</h1>
|
||||
<div class="contents">
|
||||
PSKOV_ITEM_CONTENTS
|
||||
</div>
|
||||
<div id="footer">
|
||||
This sample web site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a>.
|
||||
</div>
|
||||
</center>
|
||||
</body>
|
||||
</html>
|
||||
</code></pre>
|
||||
<p><strong>Внимание</strong>: стиль схлопнут для краткости.</p>
|
||||
<p>Как видите, <code>item.template</code> представляет из себя обычный файл HTML с двумя константами <strong>ПСКОВА</strong>:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Константа ПСКОВА</th>
|
||||
<th>Описание</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>PSKOV_ITEM_TITLE</code></td>
|
||||
<td>Значение ключа <code>Title</code> из файла Markdown страницы</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>PSKOV_ITEM_CONTENTS</code></td>
|
||||
<td>Предоставляет содержимое HTML, сгенерированное из Markdown</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p><strong>Замечания</strong>:</p>
|
||||
<ul>
|
||||
<li>другие константы <strong>ПСКОВА</strong> описаны позже</li>
|
||||
<li>файл Markdown страницы описан ниже</li>
|
||||
</ul>
|
||||
<p><a name="md"/></p>
|
||||
<h2 id="04aboutmdcvmd">04. Изучите файлы <code>about.md</code> и <code>cv.md</code></h2>
|
||||
<p>Файл <code>about.md</code> содержит следующее:</p>
|
||||
<pre><code> Title: About me
|
||||
Slug: about
|
||||
|
||||
Hi, my name is Valentin Serov. Here's my self-portrait:
|
||||
|
||||
![Valentin Serov self-portrait][serov-portrait]
|
||||
|
||||
- - - - Схлопнуто для краткости - - - -
|
||||
|
||||
Have a look at my [CV][cv] now.
|
||||
|
||||
[serov]: https://en.wikipedia.org/wiki/Valentin_Serov
|
||||
[revolution]: https://en.wikipedia.org/wiki/Russian_Revolution
|
||||
[serov-portrait]: myself.jpg
|
||||
[serov-work]: mywork.jpg
|
||||
[girl-with-peaches]: https://en.wikipedia.org/wiki/Girl_with_Peaches
|
||||
[pskov]: http://opengamestudio.org/pskov
|
||||
[cv]: cv.html
|
||||
</code></pre>
|
||||
<p><code>about.md</code> начинается с так называемого заголовка:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Ключ заголовка</th>
|
||||
<th>Описание</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>Title</code></td>
|
||||
<td>Предоставляет значение для константы <code>PSKOV_ITEM_TITLE</code> во время генерации HTML из Markdown</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Slug</code></td>
|
||||
<td>Сообщает <strong>ПСКОВУ</strong> о том, что этот файл должен быть сохранён как <code><slug>.html</code></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>В остальном содержимое <code>about.md</code> ничем не отличается от любых других файлов Markdown.</p>
|
||||
<p><strong>Внимание</strong>: ссылка на страницу <code>cv</code> указана как <code>cv.html</code>, не <code>cv.md</code></p>
|
||||
<p>Файл <code>cv.md</code> содержит следующее:</p>
|
||||
<pre><code> Title: Curriculum vitae
|
||||
Slug: cv
|
||||
|
||||
Here's my CV in case my paintings still interest you. I took a bit of a modern IT approach to structure my CV as key-value pairs of a dictionary (map), enjoy!
|
||||
|
||||
| Key | Value |
|
||||
|---|---|
|
||||
| Name | Valentin Serov |
|
||||
| Age | 46 |
|
||||
| Marital status | Married |
|
||||
| Country | Russian Empire |
|
||||
| Alma mater | Imperial Academy of Arts |
|
||||
| Education | * Member Academy of Arts (1898) <br> * Full Member Academy of Arts (1903) |
|
||||
</code></pre>
|
||||
<p>Как видите, в <code>cv.md</code> нет ничего нового за исключением таблицы Markdown.</p>
|
||||
<p><a name="lfsa"/></p>
|
||||
<h2 id="05">05. Запустите ЛФСД</h2>
|
||||
<p>Запустите <a href="http://opengamestudio.org/lfsa/ru">ЛФСД</a> с указанием директории, содержащей только что рассмотренные файлы:</p>
|
||||
<pre><code>$ /путь/до/lfsa_1.0.0.py /путь/до/директории/01.TwoPages
|
||||
</code></pre>
|
||||
<p>Вы должны увидеть примерно такой вывод:</p>
|
||||
<pre><code>DIR: '/Users/kornerr/p/site-pskov-sample/01.TwoPages'
|
||||
PORT: '8000'
|
||||
</code></pre>
|
||||
<p><a name="gen"/></p>
|
||||
<h2 id="06">06. Сгенерируйте сайт</h2>
|
||||
<p>Настало время сгенерировать свой собственный веб-сайт:</p>
|
||||
<ul>
|
||||
<li>Перейдите на страницу <a href="http://opengamestudio.org/pskov/ru/pskov_1.0.0+ru.html">Инструмент</a></li>
|
||||
<li>Убедитесь в том, что:<ul>
|
||||
<li><code>Путь</code> указывает на нужную директорию</li>
|
||||
<li><code>Входящая директория</code> и <code>Шаблон элемента</code> содержат значения из <code>pskov.cfg</code></li></ul></li>
|
||||
<li>Нажмите кнопку <code>Генерировать</code> для генерации файлов HTML рядом с файлами Markdown</li>
|
||||
<li>Откройте сгенерированный файл <code>about.html</code> из директории сайта</li>
|
||||
<li>Перед вами ваш собственный веб-сайт, запущенный локально</li>
|
||||
</ul>
|
||||
<p><a name="summary"/></p>
|
||||
<h2 id="07">07. Итог</h2>
|
||||
<p>Вы успешно сгенерировали веб-сайт с двумя страницами. <a href="http://opengamestudio.org/pskov/sample/01.TwoPages/about.html">Проверьте результат</a>.</p>
|
||||
<p>Представлены константы <strong>ПСКОВА</strong>:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Константа ПСКОВА</th>
|
||||
<th>Описание</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>PSKOV_ITEM_TITLE</code></td>
|
||||
<td>Значение ключа <code>Title</code> из файла Markdown страницы</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>PSKOV_ITEM_CONTENTS</code></td>
|
||||
<td>Предоставляет содержимое HTML, сгенерированное из Markdown</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Представлены ключи настроек:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Ключ</th>
|
||||
<th>Описание</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>input</code></td>
|
||||
<td>Указывает на директорию с файлом, на который ссылается ключ <code>item</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>item</code></td>
|
||||
<td>Указывает на файл с шаблоном HTML, который используется для генерации файлов HTML из Markdown</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Представлены ключи заголовка:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Ключ заголовка</th>
|
||||
<th>Описание</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>Title</code></td>
|
||||
<td>Предоставляет значение для константы <code>PSKOV_ITEM_TITLE</code> во время генерации HTML из Markdown</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Slug</code></td>
|
||||
<td>Сообщает <strong>ПСКОВУ</strong> о том, что этот файл должен быть сохранён как <code><slug>.html</code></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p></div><div class="contents"></p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>< Назад</th>
|
||||
<th>Начало</th>
|
||||
<th>Далее ></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><a href="education.02.deps.html">02. Зависимости</a></td>
|
||||
<td><a href="education.html">Обучение</a></td>
|
||||
<td><a href="education.04.lang.html">04. Язык</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div></center>
|
||||
<div id="footer">
|
||||
Сайт сгенерирован <a href="http://opengamestudio.org/pskov">ПСКОВОМ</a>
|
||||
из <a href="http://github.com/ogstudio/site-pskov">этого исходного кода</a>.
|
||||
Сайт расположен на <a href="https://pages.github.com">GitHub Pages</a>.
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
247
pskov/ru/education.03.site.md
Normal file
247
pskov/ru/education.03.site.md
Normal file
@@ -0,0 +1,247 @@
|
||||
Title: Обучение: 03. Сайт
|
||||
Date: 2019-06-18 00:00
|
||||
Category: Page
|
||||
Slug: education.03.site
|
||||
Lang: ru
|
||||
|
||||
| < Назад | Начало | Далее > |
|
||||
|---|---|---|
|
||||
| [02. Зависимости][prev] | [Обучение][index] | [04. Язык][next] |
|
||||
|
||||
</div><div class="contents">
|
||||
|
||||
В этом документы мы создадим простой статический сайт с двумя страницами.
|
||||
|
||||
Ожидаемое время завершения: 10 минут.
|
||||
|
||||
**Содержание**
|
||||
|
||||
* [01. Вдохновление](#inspiration)
|
||||
* [02. Изучите файл `pskov.cfg`](#cfg)
|
||||
* [03. Изучите файл `item.template`](#item)
|
||||
* [04. Изучите файлы `about.md` и `cv.md`](#md)
|
||||
* [05. Запустите ЛФСД](#lfsa)
|
||||
* [06. Сгенерируйте сайт](#gen)
|
||||
* [07. Итог](#summary)
|
||||
|
||||
<a name="inspiration"/>
|
||||
|
||||
## 01. Вдохновление
|
||||
|
||||
Представьте, что вы являетесь выдающимся русским живописцем Валентином Серовым. Каждый раз, когда кто-либо хочет узнать о вас, он идёт на [Википедию][serov]. Сегодня утром вы просыпаетесь раньше обычного с отчётливым желанием создать свой собственный веб-сайт.
|
||||
|
||||
Вы приступаете к созданию следующих страницы:
|
||||
|
||||
* About me
|
||||
* Curriculum vitae (CV)
|
||||
|
||||
Несколько позже в [директории вашего сайта][01-files] у вас оказываются следующие файлы:
|
||||
|
||||
* pskov.cfg
|
||||
* item.template
|
||||
* about.md
|
||||
* cv.md
|
||||
|
||||
Давайте взглянем на их содержимое.
|
||||
|
||||
<a name="cfg"/>
|
||||
|
||||
## 02. Изучите файл `pskov.cfg`
|
||||
|
||||
Файл `pskov.cfg` содержит следующее:
|
||||
|
||||
```
|
||||
input = .
|
||||
item = item.template
|
||||
```
|
||||
|
||||
`pskov.cfg` является [файлом настроек][ini-file] со следующими ключами:
|
||||
|
||||
| Ключ | Описание |
|
||||
|---|---|
|
||||
| `input` | Указывает на директорию с файлом, на который ссылается ключ `item` |
|
||||
| `item` | Указывает на файл с шаблоном HTML, который используется для генерации файлов HTML из Markdown |
|
||||
|
||||
В нашем случае файл `item.template` расположен рядом с `pskov.cfg`, поэтому мы используем `.` для обозначения текущей директории.
|
||||
|
||||
<a name="item"/>
|
||||
|
||||
## 03. Изучите файл `item.template`
|
||||
|
||||
Файл `item.template` содержит следующее:
|
||||
|
||||
```
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<meta charset="utf-8">
|
||||
<head>
|
||||
<style>
|
||||
- - - - Схлопнуто для краткости - - - -
|
||||
</style>
|
||||
<title>Serov</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
<strong>Serov</strong>
|
||||
<a href="about.html">About me</a>
|
||||
<a href="cv.html">CV</a>
|
||||
</div>
|
||||
<center>
|
||||
<h1>PSKOV_ITEM_TITLE</h1>
|
||||
<div class="contents">
|
||||
PSKOV_ITEM_CONTENTS
|
||||
</div>
|
||||
<div id="footer">
|
||||
This sample web site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a>.
|
||||
</div>
|
||||
</center>
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
|
||||
**Внимание**: стиль схлопнут для краткости.
|
||||
|
||||
Как видите, `item.template` представляет из себя обычный файл HTML с двумя константами **ПСКОВА**:
|
||||
|
||||
| Константа ПСКОВА | Описание |
|
||||
|---|---|
|
||||
| `PSKOV_ITEM_TITLE` | Значение ключа `Title` из файла Markdown страницы |
|
||||
| `PSKOV_ITEM_CONTENTS` | Предоставляет содержимое HTML, сгенерированное из Markdown |
|
||||
|
||||
**Замечания**:
|
||||
|
||||
* другие константы **ПСКОВА** описаны позже
|
||||
* файл Markdown страницы описан ниже
|
||||
|
||||
<a name="md"/>
|
||||
|
||||
## 04. Изучите файлы `about.md` и `cv.md`
|
||||
|
||||
Файл `about.md` содержит следующее:
|
||||
|
||||
```
|
||||
Title: About me
|
||||
Slug: about
|
||||
|
||||
Hi, my name is Valentin Serov. Here's my self-portrait:
|
||||
|
||||
![Valentin Serov self-portrait][serov-portrait]
|
||||
|
||||
- - - - Схлопнуто для краткости - - - -
|
||||
|
||||
Have a look at my [CV][cv] now.
|
||||
|
||||
[serov]: https://en.wikipedia.org/wiki/Valentin_Serov
|
||||
[revolution]: https://en.wikipedia.org/wiki/Russian_Revolution
|
||||
[serov-portrait]: myself.jpg
|
||||
[serov-work]: mywork.jpg
|
||||
[girl-with-peaches]: https://en.wikipedia.org/wiki/Girl_with_Peaches
|
||||
[pskov]: http://opengamestudio.org/pskov
|
||||
[cv]: cv.html
|
||||
```
|
||||
|
||||
`about.md` начинается с так называемого заголовка:
|
||||
|
||||
| Ключ заголовка | Описание |
|
||||
|---|---|
|
||||
| `Title` | Предоставляет значение для константы `PSKOV_ITEM_TITLE` во время генерации HTML из Markdown |
|
||||
| `Slug` | Сообщает **ПСКОВУ** о том, что этот файл должен быть сохранён как `<slug>.html` |
|
||||
|
||||
В остальном содержимое `about.md` ничем не отличается от любых других файлов Markdown.
|
||||
|
||||
**Внимание**: ссылка на страницу `cv` указана как `cv.html`, не `cv.md`
|
||||
|
||||
Файл `cv.md` содержит следующее:
|
||||
|
||||
```
|
||||
Title: Curriculum vitae
|
||||
Slug: cv
|
||||
|
||||
Here's my CV in case my paintings still interest you. I took a bit of a modern IT approach to structure my CV as key-value pairs of a dictionary (map), enjoy!
|
||||
|
||||
| Key | Value |
|
||||
|---|---|
|
||||
| Name | Valentin Serov |
|
||||
| Age | 46 |
|
||||
| Marital status | Married |
|
||||
| Country | Russian Empire |
|
||||
| Alma mater | Imperial Academy of Arts |
|
||||
| Education | * Member Academy of Arts (1898) <br> * Full Member Academy of Arts (1903) |
|
||||
```
|
||||
|
||||
Как видите, в `cv.md` нет ничего нового за исключением таблицы Markdown.
|
||||
|
||||
<a name="lfsa"/>
|
||||
|
||||
## 05. Запустите ЛФСД
|
||||
|
||||
Запустите [ЛФСД][lfsa] с указанием директории, содержащей только что рассмотренные файлы:
|
||||
|
||||
```
|
||||
$ /путь/до/lfsa_1.0.0.py /путь/до/директории/01.TwoPages
|
||||
```
|
||||
|
||||
Вы должны увидеть примерно такой вывод:
|
||||
|
||||
```
|
||||
DIR: '/Users/kornerr/p/site-pskov-sample/01.TwoPages'
|
||||
PORT: '8000'
|
||||
```
|
||||
|
||||
<a name="gen"/>
|
||||
|
||||
## 06. Сгенерируйте сайт
|
||||
|
||||
Настало время сгенерировать свой собственный веб-сайт:
|
||||
|
||||
* Перейдите на страницу [Инструмент][tool]
|
||||
* Убедитесь в том, что:
|
||||
* `Путь` указывает на нужную директорию
|
||||
* `Входящая директория` и `Шаблон элемента` содержат значения из `pskov.cfg`
|
||||
* Нажмите кнопку `Генерировать` для генерации файлов HTML рядом с файлами Markdown
|
||||
* Откройте сгенерированный файл `about.html` из директории сайта
|
||||
* Перед вами ваш собственный веб-сайт, запущенный локально
|
||||
|
||||
<a name="summary"/>
|
||||
|
||||
## 07. Итог
|
||||
|
||||
Вы успешно сгенерировали веб-сайт с двумя страницами. [Проверьте результат][01-sample].
|
||||
|
||||
Представлены константы **ПСКОВА**:
|
||||
|
||||
| Константа ПСКОВА | Описание |
|
||||
|---|---|
|
||||
| `PSKOV_ITEM_TITLE` | Значение ключа `Title` из файла Markdown страницы |
|
||||
| `PSKOV_ITEM_CONTENTS` | Предоставляет содержимое HTML, сгенерированное из Markdown |
|
||||
|
||||
Представлены ключи настроек:
|
||||
|
||||
| Ключ | Описание |
|
||||
|---|---|
|
||||
| `input` | Указывает на директорию с файлом, на который ссылается ключ `item` |
|
||||
| `item` | Указывает на файл с шаблоном HTML, который используется для генерации файлов HTML из Markdown |
|
||||
|
||||
Представлены ключи заголовка:
|
||||
|
||||
| Ключ заголовка | Описание |
|
||||
|---|---|
|
||||
| `Title` | Предоставляет значение для константы `PSKOV_ITEM_TITLE` во время генерации HTML из Markdown |
|
||||
| `Slug` | Сообщает **ПСКОВУ** о том, что этот файл должен быть сохранён как `<slug>.html` |
|
||||
|
||||
</div><div class="contents">
|
||||
|
||||
| < Назад | Начало | Далее > |
|
||||
|---|---|---|
|
||||
| [02. Зависимости][prev] | [Обучение][index] | [04. Язык][next] |
|
||||
|
||||
[index]: education.html
|
||||
[prev]: education.02.deps.html
|
||||
[next]: education.04.lang.html
|
||||
|
||||
[01-files]: https://github.com/OGStudio/site-pskov-sample/tree/master/01.TwoPages
|
||||
[01-sample]: http://opengamestudio.org/pskov/sample/01.TwoPages/about.html
|
||||
[ini-file]: https://ru.wikipedia.org/wiki/.ini
|
||||
[serov]: https://ru.wikipedia.org/wiki/%D0%A1%D0%B5%D1%80%D0%BE%D0%B2,_%D0%92%D0%B0%D0%BB%D0%B5%D0%BD%D1%82%D0%B8%D0%BD_%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B0%D0%BD%D0%B4%D1%80%D0%BE%D0%B2%D0%B8%D1%87
|
||||
[lfsa]: http://opengamestudio.org/lfsa/ru
|
||||
[tool]: http://opengamestudio.org/pskov/ru/pskov_1.0.0+ru.html
|
||||
281
pskov/ru/education.04.lang.html
Normal file
281
pskov/ru/education.04.lang.html
Normal file
@@ -0,0 +1,281 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<meta charset="utf-8">
|
||||
<head>
|
||||
<style>
|
||||
#header
|
||||
{
|
||||
background: #856d51;
|
||||
padding: 0.7em;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
#header a
|
||||
{
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
padding: 0.5em 1em 0.5em 1em;
|
||||
}
|
||||
#title
|
||||
{
|
||||
color: #433729;
|
||||
}
|
||||
html
|
||||
{
|
||||
font-family: sans-serif;
|
||||
}
|
||||
body
|
||||
{
|
||||
line-height: 1.5em;
|
||||
}
|
||||
body
|
||||
{
|
||||
background: #FAFAFA;
|
||||
}
|
||||
table
|
||||
{
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
table, th, td
|
||||
{
|
||||
border: 1px solid #aaa;
|
||||
padding: 0.5em;
|
||||
margin-top: 0.5em;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
code, pre
|
||||
{
|
||||
font-family: monospace, serif;
|
||||
font-size: 1em;
|
||||
color: #7f0a0c;
|
||||
background: #f5f5f5;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
.contents
|
||||
{
|
||||
background: #FFFFFF;
|
||||
width: 720px;
|
||||
padding: 1em;
|
||||
margin-top: 2em;
|
||||
margin-bottom: 2em;
|
||||
border: 1px solid #E0E0E0;
|
||||
text-align: left;
|
||||
color: #444;
|
||||
}
|
||||
#footer
|
||||
{
|
||||
text-align: center;
|
||||
}
|
||||
#lang
|
||||
{
|
||||
float: right;
|
||||
}
|
||||
</style>
|
||||
<title>
|
||||
PSKOV
|
||||
</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
<strong id="title">ПСКОВ</strong>
|
||||
<a href="pskov_1.0.0+ru.html">Инструмент</a>
|
||||
<a href="education.html">Обучение</a>
|
||||
<div id="lang">
|
||||
<a href="../en/education.04.lang.html">EN</a>
|
||||
<a href="../ru/education.04.lang.html">RU</a>
|
||||
</div>
|
||||
</div>
|
||||
<center><h1>
|
||||
Обучение: 04. Язык
|
||||
</h1></center>
|
||||
<center><div class="contents">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>< Назад</th>
|
||||
<th>Начало</th>
|
||||
<th>Далее ></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><a href="education.03.site.html">03. Сайт</a></td>
|
||||
<td><a href="education.html">Обучение</a></td>
|
||||
<td><a href="education.05.blog.html">05. Блог</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p></div><div class="contents"></p>
|
||||
<p>В этом документе мы добавим выбор языка.</p>
|
||||
<p>Ожидаемое время завершения: 10 минут.</p>
|
||||
<p><strong>Содержание</strong></p>
|
||||
<ul>
|
||||
<li><a href="#localization">01. Локализация</a></li>
|
||||
<li><a href="#cfg">02. Изучите файл <code>pskov.cfg</code></a></li>
|
||||
<li><a href="#item">03. Изучите файлы шаблонов</a></li>
|
||||
<li><a href="#md">04. Изучите файлы Markdown</a></li>
|
||||
<li><a href="#gen">05. Запустите ЛФСД и сгенерируйте сайт</a></li>
|
||||
<li><a href="#summary">06. Итог</a></li>
|
||||
</ul>
|
||||
<p><a name="localization"/></p>
|
||||
<h2 id="01">01. Локализация</h2>
|
||||
<p>Теперь, когда у вас есть собственный веб-сайт на английском, вы задумываетесь о русской версии, ведь вы же всё-таки русский!</p>
|
||||
<p>Вы создаёте директорию со <a href="https://github.com/OGStudio/site-pskov-sample/tree/master/02.Language">следующей структурой файлов</a>:</p>
|
||||
<ul>
|
||||
<li><code>pskov.cfg</code></li>
|
||||
<li><code>en/item.template</code></li>
|
||||
<li><code>en/about.md</code></li>
|
||||
<li><code>en/cv.md</code></li>
|
||||
<li><code>ru/item.template</code></li>
|
||||
<li><code>ru/about.md</code></li>
|
||||
<li><code>ru/cv.md</code></li>
|
||||
</ul>
|
||||
<p>Давайте взглянем на содержимое этих файлов.</p>
|
||||
<p><a name="cfg"/></p>
|
||||
<h2 id="02pskovcfg">02. Изучите файл <code>pskov.cfg</code></h2>
|
||||
<p>Файл <code>pskov.cfg</code> содержит следующее:</p>
|
||||
<pre><code>input = en;ru
|
||||
item = item.template
|
||||
</code></pre>
|
||||
<p>Как видите, <code>input</code> может принимать несколько директорий, разделённых символом <code>;</code>. <strong>ПСКОВ</strong> обработает каждую указанную директорию так же, как и ранее.</p>
|
||||
<p>В нашем случае каждая из директорий - <code>en/</code> и <code>ru/</code> - содержит собственный шаблон <code>item.template</code>.</p>
|
||||
<p><a name="item"/></p>
|
||||
<h2 id="03">03. Изучите файлы шаблонов</h2>
|
||||
<ul>
|
||||
<li><p>Содержимое <code>en/item.template</code>:</p>
|
||||
<pre><code>- - - - Схлопнуто для краткости - - - -
|
||||
<title>Serov</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
<strong>Serov</strong>
|
||||
<a href="about.html">About me</a>
|
||||
<a href="cv.html">CV</a>
|
||||
<div id="lang">
|
||||
<a href="../en/PSKOV_ITEM_URL">EN</a>
|
||||
<a href="../ru/PSKOV_ITEM_URL">RU</a>
|
||||
</div>
|
||||
</div>
|
||||
<center>
|
||||
- - - - Схлопнуто для краткости - - - -
|
||||
</code></pre></li>
|
||||
<li><p>Содержимое <code>ru/item.template</code>:</p>
|
||||
<pre><code>- - - - Схлопнуто для краткости - - - -
|
||||
<title>Серов</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
<strong>Серов</strong>
|
||||
<a href="about.html">Обо мне</a>
|
||||
<a href="cv.html">Резюме</a>
|
||||
<div id="lang">
|
||||
<a href="../en/PSKOV_ITEM_URL">EN</a>
|
||||
<a href="../ru/PSKOV_ITEM_URL">RU</a>
|
||||
</div>
|
||||
</div>
|
||||
<center>
|
||||
- - - - Схлопнуто для краткости - - - -
|
||||
</code></pre></li>
|
||||
</ul>
|
||||
<p><strong>Внимание</strong>: начало и конец схлопнуты для краткости.</p>
|
||||
<p>Как видите, <code>en/item.template</code> и <code>ru/item.template</code> очень похожи на <a href="education.03.site.html">виденный ранее</a> <code>item.template</code>.</p>
|
||||
<p>Изменения следующие:</p>
|
||||
<ul>
|
||||
<li>использование секции <code><div id="lang">...</div></code> для отображения выбора языка</li>
|
||||
<li>локализация заголовков на Английском и Русском языках</li>
|
||||
</ul>
|
||||
<p>Выбор языка использует следующую новую константу <strong>ПСКОВА</strong>:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Константа ПСКОВА</th>
|
||||
<th>Описание</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>PSKOV_ITEM_URL</code></td>
|
||||
<td>Предоставляет имя файла генерируемой страницы</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Использование <code>PSKOV_ITEM_URL</code> даёт вам поддержку стольких языков, сколько пожелаете.</p>
|
||||
<p><a name="md"/></p>
|
||||
<h2 id="04markdown">04. Изучите файлы Markdown</h2>
|
||||
<p>Файлы <code>en/about.md</code> и <code>en/cv.md</code> выглядят почти идентично <a href="education.03.site.html">виденным ранее</a>. <code>ru/about.md</code> и <code>ru/cv.md</code> представляют собой русские версии соответствующих английских страниц.</p>
|
||||
<p>Например, <code>ru/cv.md</code> содержит:</p>
|
||||
<pre><code> Title: Резюме
|
||||
Slug: cv
|
||||
|
||||
Здесь вы можете увидеть моё резюме в том случае, если мои произведения всё ещё вас интересуют. Я использовал современный подход ИТ для структурирования своего резюме в виде пар ключ-значение словаря (карты). Наслаждайтесь!
|
||||
|
||||
| Ключ | Значение |
|
||||
|---|---|
|
||||
| Имя | Валентин Серов |
|
||||
| Возраст | 46 |
|
||||
| Семейное положение | Женат |
|
||||
| Страна | Российская Империя |
|
||||
| Учёба | Императорская Академия художеств |
|
||||
| Звания | * академик ИАХ (1898) <br> * действительный член ИАХ (1903) |
|
||||
</code></pre>
|
||||
<p><strong>Внимание</strong>: русская страница использует точно такое же значение <code>Slug</code>, как и английская страница.</p>
|
||||
<p><a name="gen"/></p>
|
||||
<h2 id="05">05. Запустите ЛФСД и сгенерируйте сайт</h2>
|
||||
<p>Запустите <a href="http://opengamestudio.org/lfsa/ru">ЛФСД</a> с указанием директории, содержащей только что рассмотренные файлы:</p>
|
||||
<pre><code>$ /путь/до/lfsa_1.0.0.py /путь/до/директории/02.Language
|
||||
</code></pre>
|
||||
<p>Сгенерируйте сайт:</p>
|
||||
<ul>
|
||||
<li>Перейдите на страницу <a href="http://opengamestudio.org/pskov/ru/pskov_1.0.0+ru.html">Инструмент</a></li>
|
||||
<li>Нажмите кнопку <code>Генерировать</code></li>
|
||||
<li>Откройте сгенерированный файл <code>en/about.html</code> или <code>ru/about.html</code> из директории сайта</li>
|
||||
<li>Переключите язык, чтобы убедиться в корректной работе</li>
|
||||
</ul>
|
||||
<p><a name="summary"/></p>
|
||||
<h2 id="06">06. Итог</h2>
|
||||
<p>Вы успешно добавили выбор языка. <a href="http://opengamestudio.org/pskov/sample/02.Language/ru/about.html">Проверьте результат</a>.</p>
|
||||
<p>Представлены константы <strong>ПСКОВА</strong>:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Константа ПСКОВА</th>
|
||||
<th>Описание</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>PSKOV_ITEM_URL</code></td>
|
||||
<td>Предоставляет имя файла генерируемой страницы</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p></div><div class="contents"></p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>< Назад</th>
|
||||
<th>Начало</th>
|
||||
<th>Далее ></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><a href="education.03.site.html">03. Сайт</a></td>
|
||||
<td><a href="education.html">Обучение</a></td>
|
||||
<td><a href="education.05.blog.html">05. Блог</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div></center>
|
||||
<div id="footer">
|
||||
Сайт сгенерирован <a href="http://opengamestudio.org/pskov">ПСКОВОМ</a>
|
||||
из <a href="http://github.com/ogstudio/site-pskov">этого исходного кода</a>.
|
||||
Сайт расположен на <a href="https://pages.github.com">GitHub Pages</a>.
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
187
pskov/ru/education.04.lang.md
Normal file
187
pskov/ru/education.04.lang.md
Normal file
@@ -0,0 +1,187 @@
|
||||
Title: Обучение: 04. Язык
|
||||
Date: 2019-06-18 00:00
|
||||
Category: Page
|
||||
Slug: education.04.lang
|
||||
Lang: ru
|
||||
|
||||
| < Назад | Начало | Далее > |
|
||||
|---|---|---|
|
||||
| [03. Сайт][prev] | [Обучение][index] | [05. Блог][next] |
|
||||
|
||||
</div><div class="contents">
|
||||
|
||||
В этом документе мы добавим выбор языка.
|
||||
|
||||
Ожидаемое время завершения: 10 минут.
|
||||
|
||||
**Содержание**
|
||||
|
||||
* [01. Локализация](#localization)
|
||||
* [02. Изучите файл `pskov.cfg`](#cfg)
|
||||
* [03. Изучите файлы шаблонов](#item)
|
||||
* [04. Изучите файлы Markdown](#md)
|
||||
* [05. Запустите ЛФСД и сгенерируйте сайт](#gen)
|
||||
* [06. Итог](#summary)
|
||||
|
||||
<a name="localization"/>
|
||||
|
||||
## 01. Локализация
|
||||
|
||||
Теперь, когда у вас есть собственный веб-сайт на английском, вы задумываетесь о русской версии, ведь вы же всё-таки русский!
|
||||
|
||||
Вы создаёте директорию со [следующей структурой файлов][02-files]:
|
||||
|
||||
* `pskov.cfg`
|
||||
* `en/item.template`
|
||||
* `en/about.md`
|
||||
* `en/cv.md`
|
||||
* `ru/item.template`
|
||||
* `ru/about.md`
|
||||
* `ru/cv.md`
|
||||
|
||||
Давайте взглянем на содержимое этих файлов.
|
||||
|
||||
<a name="cfg"/>
|
||||
|
||||
## 02. Изучите файл `pskov.cfg`
|
||||
|
||||
Файл `pskov.cfg` содержит следующее:
|
||||
|
||||
```
|
||||
input = en;ru
|
||||
item = item.template
|
||||
```
|
||||
|
||||
Как видите, `input` может принимать несколько директорий, разделённых символом `;`. **ПСКОВ** обработает каждую указанную директорию так же, как и ранее.
|
||||
|
||||
В нашем случае каждая из директорий - `en/` и `ru/` - содержит собственный шаблон `item.template`.
|
||||
|
||||
<a name="item"/>
|
||||
|
||||
## 03. Изучите файлы шаблонов
|
||||
|
||||
* Содержимое `en/item.template`:
|
||||
|
||||
```
|
||||
- - - - Схлопнуто для краткости - - - -
|
||||
<title>Serov</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
<strong>Serov</strong>
|
||||
<a href="about.html">About me</a>
|
||||
<a href="cv.html">CV</a>
|
||||
<div id="lang">
|
||||
<a href="../en/PSKOV_ITEM_URL">EN</a>
|
||||
<a href="../ru/PSKOV_ITEM_URL">RU</a>
|
||||
</div>
|
||||
</div>
|
||||
<center>
|
||||
- - - - Схлопнуто для краткости - - - -
|
||||
```
|
||||
* Содержимое `ru/item.template`:
|
||||
|
||||
```
|
||||
- - - - Схлопнуто для краткости - - - -
|
||||
<title>Серов</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
<strong>Серов</strong>
|
||||
<a href="about.html">Обо мне</a>
|
||||
<a href="cv.html">Резюме</a>
|
||||
<div id="lang">
|
||||
<a href="../en/PSKOV_ITEM_URL">EN</a>
|
||||
<a href="../ru/PSKOV_ITEM_URL">RU</a>
|
||||
</div>
|
||||
</div>
|
||||
<center>
|
||||
- - - - Схлопнуто для краткости - - - -
|
||||
```
|
||||
|
||||
**Внимание**: начало и конец схлопнуты для краткости.
|
||||
|
||||
Как видите, `en/item.template` и `ru/item.template` очень похожи на [виденный ранее][prev] `item.template`.
|
||||
|
||||
Изменения следующие:
|
||||
|
||||
* использование секции `<div id="lang">...</div>` для отображения выбора языка
|
||||
* локализация заголовков на Английском и Русском языках
|
||||
|
||||
Выбор языка использует следующую новую константу **ПСКОВА**:
|
||||
|
||||
| Константа ПСКОВА | Описание |
|
||||
|---|---|
|
||||
| `PSKOV_ITEM_URL` | Предоставляет имя файла генерируемой страницы |
|
||||
|
||||
Использование `PSKOV_ITEM_URL` даёт вам поддержку стольких языков, сколько пожелаете.
|
||||
|
||||
<a name="md"/>
|
||||
|
||||
## 04. Изучите файлы Markdown
|
||||
|
||||
Файлы `en/about.md` и `en/cv.md` выглядят почти идентично [виденным ранее][prev]. `ru/about.md` и `ru/cv.md` представляют собой русские версии соответствующих английских страниц.
|
||||
|
||||
Например, `ru/cv.md` содержит:
|
||||
|
||||
```
|
||||
Title: Резюме
|
||||
Slug: cv
|
||||
|
||||
Здесь вы можете увидеть моё резюме в том случае, если мои произведения всё ещё вас интересуют. Я использовал современный подход ИТ для структурирования своего резюме в виде пар ключ-значение словаря (карты). Наслаждайтесь!
|
||||
|
||||
| Ключ | Значение |
|
||||
|---|---|
|
||||
| Имя | Валентин Серов |
|
||||
| Возраст | 46 |
|
||||
| Семейное положение | Женат |
|
||||
| Страна | Российская Империя |
|
||||
| Учёба | Императорская Академия художеств |
|
||||
| Звания | * академик ИАХ (1898) <br> * действительный член ИАХ (1903) |
|
||||
```
|
||||
|
||||
**Внимание**: русская страница использует точно такое же значение `Slug`, как и английская страница.
|
||||
|
||||
<a name="gen"/>
|
||||
|
||||
## 05. Запустите ЛФСД и сгенерируйте сайт
|
||||
|
||||
Запустите [ЛФСД][lfsa] с указанием директории, содержащей только что рассмотренные файлы:
|
||||
|
||||
```
|
||||
$ /путь/до/lfsa_1.0.0.py /путь/до/директории/02.Language
|
||||
```
|
||||
|
||||
Сгенерируйте сайт:
|
||||
|
||||
* Перейдите на страницу [Инструмент][tool]
|
||||
* Нажмите кнопку `Генерировать`
|
||||
* Откройте сгенерированный файл `en/about.html` или `ru/about.html` из директории сайта
|
||||
* Переключите язык, чтобы убедиться в корректной работе
|
||||
|
||||
<a name="summary"/>
|
||||
|
||||
## 06. Итог
|
||||
|
||||
Вы успешно добавили выбор языка. [Проверьте результат][02-sample].
|
||||
|
||||
Представлены константы **ПСКОВА**:
|
||||
|
||||
| Константа ПСКОВА | Описание |
|
||||
|---|---|
|
||||
| `PSKOV_ITEM_URL` | Предоставляет имя файла генерируемой страницы |
|
||||
|
||||
</div><div class="contents">
|
||||
|
||||
| < Назад | Начало | Далее > |
|
||||
|---|---|---|
|
||||
| [03. Сайт][prev] | [Обучение][index] | [05. Блог][next] |
|
||||
|
||||
[index]: education.html
|
||||
[prev]: education.03.site.html
|
||||
[next]: education.05.blog.html
|
||||
|
||||
[02-files]: https://github.com/OGStudio/site-pskov-sample/tree/master/02.Language
|
||||
[02-sample]: http://opengamestudio.org/pskov/sample/02.Language/ru/about.html
|
||||
[lfsa]: http://opengamestudio.org/lfsa/ru
|
||||
[tool]: http://opengamestudio.org/pskov/ru/pskov_1.0.0+ru.html
|
||||
712
pskov/ru/education.05.blog.html
Normal file
712
pskov/ru/education.05.blog.html
Normal file
@@ -0,0 +1,712 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<meta charset="utf-8">
|
||||
<head>
|
||||
<style>
|
||||
#header
|
||||
{
|
||||
background: #856d51;
|
||||
padding: 0.7em;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
#header a
|
||||
{
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
padding: 0.5em 1em 0.5em 1em;
|
||||
}
|
||||
#title
|
||||
{
|
||||
color: #433729;
|
||||
}
|
||||
html
|
||||
{
|
||||
font-family: sans-serif;
|
||||
}
|
||||
body
|
||||
{
|
||||
line-height: 1.5em;
|
||||
}
|
||||
body
|
||||
{
|
||||
background: #FAFAFA;
|
||||
}
|
||||
table
|
||||
{
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
table, th, td
|
||||
{
|
||||
border: 1px solid #aaa;
|
||||
padding: 0.5em;
|
||||
margin-top: 0.5em;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
code, pre
|
||||
{
|
||||
font-family: monospace, serif;
|
||||
font-size: 1em;
|
||||
color: #7f0a0c;
|
||||
background: #f5f5f5;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
.contents
|
||||
{
|
||||
background: #FFFFFF;
|
||||
width: 720px;
|
||||
padding: 1em;
|
||||
margin-top: 2em;
|
||||
margin-bottom: 2em;
|
||||
border: 1px solid #E0E0E0;
|
||||
text-align: left;
|
||||
color: #444;
|
||||
}
|
||||
#footer
|
||||
{
|
||||
text-align: center;
|
||||
}
|
||||
#lang
|
||||
{
|
||||
float: right;
|
||||
}
|
||||
</style>
|
||||
<title>
|
||||
PSKOV
|
||||
</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
<strong id="title">ПСКОВ</strong>
|
||||
<a href="pskov_1.0.0+ru.html">Инструмент</a>
|
||||
<a href="education.html">Обучение</a>
|
||||
<div id="lang">
|
||||
<a href="../en/education.05.blog.html">EN</a>
|
||||
<a href="../ru/education.05.blog.html">RU</a>
|
||||
</div>
|
||||
</div>
|
||||
<center><h1>
|
||||
Обучение: 05. Блог
|
||||
</h1></center>
|
||||
<center><div class="contents">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>< Назад</th>
|
||||
<th>Начало</th>
|
||||
<th>Далее ></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><a href="education.04.lang.html">04. Язык</a></td>
|
||||
<td><a href="education.html">Обучение</a></td>
|
||||
<td>Отсутствует</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p></div><div class="contents"></p>
|
||||
<p>В этом документе мы создадим "динамические" страницы блога.</p>
|
||||
<p>Ожидаемое время завершения: 20 минут.</p>
|
||||
<p><strong>Содержание</strong></p>
|
||||
<ul>
|
||||
<li><a href="#blog">01. Блог</a></li>
|
||||
<li><a href="#cfg">02. Изучите файл <code>pskov.cfg</code></a></li>
|
||||
<li><a href="#item">03. Изучите шаблоны элементов</a></li>
|
||||
<li><a href="#preview">04. Изучите шаблоны предпросмотров</a></li>
|
||||
<li><a href="#index">05. Изучите шаблоны страниц с предпросмотрами</a></li>
|
||||
<li><a href="#pagination">06. Изучите постраничные шаблоны</a></li>
|
||||
<li><a href="#md">07. Изучите файлы Markdown</a></li>
|
||||
<li><a href="#gen">08. Запустите ЛФСД и сгенерируйте сайт</a></li>
|
||||
<li><a href="#summary">09. Итог</a></li>
|
||||
</ul>
|
||||
<p><a name="blog"/></p>
|
||||
<h2 id="01">01. Блог</h2>
|
||||
<p>Итак, у вас есть веб-сайт на Английском и Русском языках. Вы начинаете ощущать желание регулярно делиться своими мыслями с миром в виде заметок блога.</p>
|
||||
<p>Вы создаёте директорию со <a href="https://github.com/OGStudio/site-pskov-sample/tree/master/03.Blog">следующей структурой файлов</a>:</p>
|
||||
<ul>
|
||||
<li><code>pskov.cfg</code></li>
|
||||
<li><code>en/blog/</code><ul>
|
||||
<li><code>item.template</code></li>
|
||||
<li><code>index.template</code></li>
|
||||
<li><code>preview.template</code></li>
|
||||
<li><code>pagination.template</code></li>
|
||||
<li><code>pagination.prev.template</code></li>
|
||||
<li><code>pagination.next.template</code></li>
|
||||
<li><code>1885.md</code></li>
|
||||
<li><code>1886.01.md</code></li>
|
||||
<li><code>1886.02.md</code></li>
|
||||
<li><code>1887.01.md</code></li>
|
||||
<li><code>1887.02.md</code></li>
|
||||
<li><code>1888.md</code></li>
|
||||
<li><code>1896.md</code></li>
|
||||
<li><code>1899.md</code></li></ul></li>
|
||||
<li><code>en/page/</code><ul>
|
||||
<li><code>item.template</code></li>
|
||||
<li><code>about.md</code></li>
|
||||
<li><code>cv.md</code></li></ul></li>
|
||||
<li><code>ru/blog/</code><ul>
|
||||
<li><code>item.template</code></li>
|
||||
<li><code>index.template</code></li>
|
||||
<li><code>preview.template</code></li>
|
||||
<li><code>pagination.template</code></li>
|
||||
<li><code>pagination.prev.template</code></li>
|
||||
<li><code>pagination.next.template</code></li>
|
||||
<li><code>1885.md</code></li>
|
||||
<li><code>1886.01.md</code></li>
|
||||
<li><code>1886.02.md</code></li>
|
||||
<li><code>1887.01.md</code></li>
|
||||
<li><code>1887.02.md</code></li>
|
||||
<li><code>1888.md</code></li>
|
||||
<li><code>1896.md</code></li>
|
||||
<li><code>1899.md</code></li></ul></li>
|
||||
<li><code>ru/page/</code><ul>
|
||||
<li><code>item.template</code></li>
|
||||
<li><code>about.md</code></li>
|
||||
<li><code>cv.md</code></li></ul></li>
|
||||
</ul>
|
||||
<p>Давайте взглянем на содержимое этих файлов.</p>
|
||||
<p><a name="cfg"/></p>
|
||||
<h2 id="02pskovcfg">02. Изучите файл <code>pskov.cfg</code></h2>
|
||||
<p>Файл <code>pskov.cfg</code> содержит следующее:</p>
|
||||
<pre><code>input = en/page;ru/page;en/blog;ru/blog
|
||||
item = item.template
|
||||
preview = preview.template
|
||||
index = index.template
|
||||
paginationPrev = pagination.prev.template
|
||||
paginationNext = pagination.next.template
|
||||
paginationPrevNext = pagination.template
|
||||
previewSize = 200
|
||||
previewEnding = . . .
|
||||
previewsPerPage = 3
|
||||
previewPageBaseName = index
|
||||
</code></pre>
|
||||
<p>Вы уже встречались с ключами <code>input</code> и <code>item</code>. Рассмотрим остальные:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Ключ</th>
|
||||
<th>Описание</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>preview</code></td>
|
||||
<td>Указывает на шаблон HTML, используемый для генерации предпросмотра HTML из первых <code>previewSize</code> (приблизительно) символов для каждого файла Markdown</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>index</code></td>
|
||||
<td>Указывает на шаблон HTML, используемый для генерации страницы с предпросмотрами</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>paginationPrev</code></td>
|
||||
<td>Указывает на шаблон HTML, используемый для генерации секции с переходом лишь на предыдущую страницу</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>paginationNext</code></td>
|
||||
<td>Указывает на шаблон HTML, используемый для генерации секции с переходм лишь на следующую страницу</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>paginationPrevNext</code></td>
|
||||
<td>Указывает на шаблон HTML, используемый для генерации секции с переходами по страницам</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>previewSize</code></td>
|
||||
<td>Количество символов (приблизительное) из файла Markdown, используемое для генерации предпросмотра</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>previewEnding</code></td>
|
||||
<td>Строка для добавления в конец каждого предпросмотра</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>previewsPerPage</code></td>
|
||||
<td>Максимальное количество предпросмотров, умещающееся на странице с предпросмотрами</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>previewsPageBaseName</code></td>
|
||||
<td>Базовое имя файла для страниц с предпросмотрами</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>В нашем случае:</p>
|
||||
<ul>
|
||||
<li>мы ограничиваем предпросмотр <code>200</code> символами (приблизительно)</li>
|
||||
<li>мы используем строку <code>. . .</code> в конце каждого предпросмотра</li>
|
||||
<li>страницы с предпросмотрами вмещают максимум <code>3</code> предпросмотра</li>
|
||||
<li>страницы с предпросмотрами будут сохранены как <code>index.html</code>, <code>index2.html</code>, <code>index3.html</code> и т.д.</li>
|
||||
</ul>
|
||||
<p><a name="item"/></p>
|
||||
<h2 id="03">03. Изучите шаблоны элементов</h2>
|
||||
<ul>
|
||||
<li><p>Содержимое <code>en/blog/item.template</code>:</p>
|
||||
<pre><code>- - - - Схлопнуто для краткости - - - -
|
||||
<body>
|
||||
<div id="header">
|
||||
<strong>Serov</strong>
|
||||
<a href="../../en/blog/index.html">Blog</a>
|
||||
<a href="../../en/page/about.html">About me</a>
|
||||
<a href="../../en/page/cv.html">CV</a>
|
||||
<div id="lang">
|
||||
<a href="../../en/blog/PSKOV_ITEM_URL">EN</a>
|
||||
<a href="../../ru/blog/PSKOV_ITEM_URL">RU</a>
|
||||
</div>
|
||||
</div>
|
||||
<center>
|
||||
<h1>In the blog...</h1>
|
||||
<div class="contents">
|
||||
<h2 class="itemTitle">
|
||||
<a href="PSKOV_ITEM_URL">PSKOV_ITEM_TITLE</a>
|
||||
</h2>
|
||||
<p class="itemDate">PSKOV_ITEM_DATE</p>
|
||||
PSKOV_ITEM_CONTENTS
|
||||
</div>
|
||||
<div id="footer">
|
||||
This sample web site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a>.
|
||||
</div>
|
||||
</center>
|
||||
</body>
|
||||
- - - - Схлопнуто для краткости - - - -
|
||||
</code></pre></li>
|
||||
<li><p>Содержимое <code>ru/blog/item.template</code>:</p>
|
||||
<pre><code>- - - - Схлопнуто для краткости - - - -
|
||||
<body>
|
||||
<div id="header">
|
||||
<strong>Серов</strong>
|
||||
<a href="../../ru/blog/index.html">Блог</a>
|
||||
<a href="../../ru/page/about.html">Обо мне</a>
|
||||
<a href="../../ru/page/cv.html">Резюме</a>
|
||||
<div id="lang">
|
||||
<a href="../../en/blog/PSKOV_ITEM_URL">EN</a>
|
||||
<a href="../../ru/blog/PSKOV_ITEM_URL">RU</a>
|
||||
</div>
|
||||
</div>
|
||||
<center>
|
||||
<h1>В блоге...</h1>
|
||||
<div class="contents">
|
||||
<h2 class="itemTitle">
|
||||
<a href="PSKOV_ITEM_URL">PSKOV_ITEM_TITLE</a>
|
||||
</h2>
|
||||
<p class="itemDate">PSKOV_ITEM_DATE</p>
|
||||
PSKOV_ITEM_CONTENTS
|
||||
</div>
|
||||
<div id="footer">
|
||||
Этот пример сайта сгенерирован <a href="http://opengamestudio.org/pskov">ПСКОВОМ</a>.
|
||||
</div>
|
||||
</center>
|
||||
</body>
|
||||
- - - - Схлопнуто для краткости - - - -
|
||||
</code></pre></li>
|
||||
</ul>
|
||||
<p><strong>Внимание</strong>: начало и конец схлопнуты для краткости.</p>
|
||||
<p>Как видите, оба файла выглядят практически так же, как и файлы <code>item.template</code>, рассмотренные <a href="education.04.lang.html">ранее</a>.</p>
|
||||
<p>Изменения следующие:</p>
|
||||
<ul>
|
||||
<li>новые URL страниц в директории <code>page</code> и первой страницы с предпросмотрами в директории <code>blog</code></li>
|
||||
<li>заголовок используется внутри секции <code>contents</code> в качестве ссылки на полную заметку блога</li>
|
||||
<li>дата используется для подчёркивания временной зависимости между заметками блога</li>
|
||||
</ul>
|
||||
<p>Дату мы получаем из константы <code>PSKOV_ITEM_DATE</code>:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Константа ПСКОВА</th>
|
||||
<th>Описание</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>PSKOV_ITEM_DATE</code></td>
|
||||
<td>Значение ключа <code>Date</code> файла Markdown</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p><a name="preview"/></p>
|
||||
<h2 id="04">04. Изучите шаблоны предпросмотров</h2>
|
||||
<ul>
|
||||
<li><p>Содержимое <code>en/blog/preview.template</code>:</p>
|
||||
<pre><code><div class="contents">
|
||||
<h2 class="itemTitle">
|
||||
<a href="PSKOV_ITEM_URL">PSKOV_ITEM_TITLE</a>
|
||||
</h2>
|
||||
<p class="itemDate">PSKOV_ITEM_DATE</p>
|
||||
PSKOV_PREVIEW
|
||||
<div class="itemMore">
|
||||
<a href="PSKOV_ITEM_URL">Continue reading</a>
|
||||
</div>
|
||||
</div>
|
||||
</code></pre></li>
|
||||
<li><p>Содержимое <code>ru/blog/preview.template</code>:</p>
|
||||
<pre><code><div class="contents">
|
||||
<h2 class="itemTitle">
|
||||
<a href="PSKOV_ITEM_URL">PSKOV_ITEM_TITLE</a>
|
||||
</h2>
|
||||
<p class="itemDate">PSKOV_ITEM_DATE</p>
|
||||
PSKOV_PREVIEW
|
||||
<div class="itemMore">
|
||||
<a href="PSKOV_ITEM_URL">Читать дальше</a>
|
||||
</div>
|
||||
</div>
|
||||
</code></pre></li>
|
||||
</ul>
|
||||
<p>У предпросмотров нет <code><head></code>, <code><body></code> и прочих полностраничных тэгов HTML. Предпросмотры являются секциями, вставляемыми в страницы с предпросмотрами.</p>
|
||||
<p>Сам предпросмотр мы получаем из константы <code>PSKOV_PREVIEW</code>:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Константа ПСКОВА</th>
|
||||
<th>Описание</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>PSKOV_PREVIEW</code></td>
|
||||
<td>Предоставляет содержимое файла Markdown, ограниченное <code>previewSize</code> символами (приблизительно)</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p><a name="index"/></p>
|
||||
<h2 id="05">05. Изучите шаблоны страниц с предпросмотрами</h2>
|
||||
<ul>
|
||||
<li><p>Содержимое <code>en/blog/index.template</code>:</p>
|
||||
<pre><code>- - - - Схлопнуто для краткости - - - -
|
||||
<body>
|
||||
<div id="header">
|
||||
<strong>Serov</strong>
|
||||
<a href="../../en/blog/index.html">Blog</a>
|
||||
<a href="../../en/page/about.html">About me</a>
|
||||
<a href="../../en/page/cv.html">CV</a>
|
||||
<div id="lang">
|
||||
<a href="../../en/blog/PSKOV_INDEX_URL">EN</a>
|
||||
<a href="../../ru/blog/PSKOV_INDEX_URL">RU</a>
|
||||
</div>
|
||||
</div>
|
||||
<center>
|
||||
<h1>Blog</h1>
|
||||
PSKOV_PREVIEWS
|
||||
PSKOV_PAGINATION
|
||||
<div id="footer">
|
||||
This sample web site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a>.
|
||||
</div>
|
||||
</center>
|
||||
</body>
|
||||
- - - - Схлопнуто для краткости - - - -
|
||||
</code></pre></li>
|
||||
<li><p>Содержимое <code>ru/blog/index.template</code>:</p>
|
||||
<pre><code>- - - - Схлопнуто для краткости - - - -
|
||||
<body>
|
||||
<div id="header">
|
||||
<strong>Серов</strong>
|
||||
<a href="../../ru/blog/index.html">Блог</a>
|
||||
<a href="../../ru/page/about.html">Обо мне</a>
|
||||
<a href="../../ru/page/cv.html">Резюме</a>
|
||||
<div id="lang">
|
||||
<a href="../../en/blog/PSKOV_INDEX_URL">EN</a>
|
||||
<a href="../../ru/blog/PSKOV_INDEX_URL">RU</a>
|
||||
</div>
|
||||
</div>
|
||||
<center>
|
||||
<h1>Блог</h1>
|
||||
PSKOV_PREVIEWS
|
||||
PSKOV_PAGINATION
|
||||
<div id="footer">
|
||||
Этот пример сайта сгенерирован <a href="http://opengamestudio.org/pskov">ПСКОВОМ</a>.
|
||||
</div>
|
||||
</center>
|
||||
</body>
|
||||
- - - - Схлопнуто для краткости - - - -
|
||||
</code></pre></li>
|
||||
</ul>
|
||||
<p><strong>Замечания</strong>:</p>
|
||||
<ul>
|
||||
<li>начало и конец схлопнуты для краткости</li>
|
||||
<li>константа <code>PSKOV_INDEX_URL</code> используется для выбора языка</li>
|
||||
</ul>
|
||||
<p>Новые константы <strong>ПСКОВА</strong>:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Константа ПСКОВА</th>
|
||||
<th>Описание</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>PSKOV_INDEX_URL</code></td>
|
||||
<td>Предоставляет генерируемое имя файла страницы с предпросмотрами: <code><previewsPageBaseName><id>.html</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>PSKOV_PREVIEWS</code></td>
|
||||
<td>Предоставляет набор предпросмотров</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>PSKOV_PAGINATION</code></td>
|
||||
<td>Предоставляет секцию для перехода между страницами с предпросмотрами</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p><a name="pagination"/></p>
|
||||
<h2 id="06">06. Изучите постраничные шаблоны</h2>
|
||||
<p>Постраничные шаблоны являются секциями HTML для перехода между страницами с предпросмотрами.</p>
|
||||
<p>Существует три постраничных шаблона:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Постраничный шаблон</th>
|
||||
<th>Описание</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Предыдущий</td>
|
||||
<td>Посетитель может перейти лишь назад</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Следующий</td>
|
||||
<td>Посетитель может перейти лишь вперёд</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Оба</td>
|
||||
<td>Посетитель может перейти либо вперёд, либо назад</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Рассмотрим английские постраничные шаблоны:</p>
|
||||
<ul>
|
||||
<li><p>Содержимое <code>en/blog/pagination.prev.template</code>:</p>
|
||||
<pre><code><p>Page PSKOV_PAGE_ID of PSKOV_PAGES_COUNT</p>
|
||||
<p>
|
||||
<a href="PSKOV_PREV_PAGE_URL">« Newer</a>
|
||||
</p>
|
||||
</code></pre></li>
|
||||
<li><p>Содержимое <code>en/blog/pagination.next.template</code>:</p>
|
||||
<pre><code><p>Page PSKOV_PAGE_ID of PSKOV_PAGES_COUNT</p>
|
||||
<p>
|
||||
<a href="PSKOV_NEXT_PAGE_URL">Older »</a>
|
||||
</p>
|
||||
</code></pre></li>
|
||||
<li><p>Содержимое <code>en/blog/pagination.template</code>:</p>
|
||||
<pre><code><p>Page PSKOV_PAGE_ID of PSKOV_PAGES_COUNT</p>
|
||||
<p>
|
||||
<a href="PSKOV_PREV_PAGE_URL">« Newer</a>
|
||||
<a href="PSKOV_NEXT_PAGE_URL">Older »</a>
|
||||
</p>
|
||||
</code></pre></li>
|
||||
</ul>
|
||||
<p>Русские версии выглядят схожим образом. Например, содержимое <code>ru/blog/pagination.template</code>:</p>
|
||||
<pre><code><p>Страница PSKOV_PAGE_ID из PSKOV_PAGES_COUNT</p>
|
||||
<p>
|
||||
<a href="PSKOV_PREV_PAGE_URL">« Новее</a>
|
||||
<a href="PSKOV_NEXT_PAGE_URL">Старее »</a>
|
||||
</p>
|
||||
</code></pre>
|
||||
<p>Новые константы <strong>ПСКОВА</strong>:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Константа ПСКОВА</th>
|
||||
<th>Описание</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>PSKOV_PAGE_ID</code></td>
|
||||
<td>Предоставляет порядковый номер страницы с предпросмотрами, начиная с <code>1</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>PSKOV_PAGES_COUNT</code></td>
|
||||
<td>Предоставляет количество сгенерированных страниц с предпросмотрами</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>PSKOV_PREV_PAGE_URL</code></td>
|
||||
<td>Предоставляет имя файла предыдущей страницы с предпросмотрами</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>PSKOV_NEXT_PAGE_URL</code></td>
|
||||
<td>Предоставляет имя файла следующей страницы с предпросмотрами</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p><a name="md"/></p>
|
||||
<h2 id="07markdown">07. Изучите файлы Markdown</h2>
|
||||
<p>Файлы Markdown являются заметками блога, они похожи на файлы Markdown обычных страниц. Вот как выглядит содержимое <code>en/blog/1885.md</code>:</p>
|
||||
<pre><code> Title: Bullocks
|
||||
Date: 1885
|
||||
Slug: 1885.01.bullocks
|
||||
|
||||
![Bullocks][bullocks]
|
||||
|
||||
I've been painting "Bullocks" sketch while I was staying in Odessa at Kuznetsov's in 1885.
|
||||
|
||||
[bullocks]: https://upload.wikimedia.org/wikipedia/commons/c/cb/Walentin_Aleksandrovich_Serov_Bullocks.jpg
|
||||
</code></pre>
|
||||
<p>Заметки блога сортируются по дате: новые заметки размещаются перед старыми.</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Ключ заголовка</th>
|
||||
<th>Описание</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>Date</code></td>
|
||||
<td>Предоставляет значение для константы <code>PSKOV_ITEM_DATE</code> при генерации HTML из Markdown</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p><a name="gen"/></p>
|
||||
<h2 id="08">08. Запустите ЛФСД и сгенерируйте сайт</h2>
|
||||
<p>Запустите <a href="http://opengamestudio.org/lfsa/ru">ЛФСД</a> с указанием директории, содержащей только что рассмотренные файлы:</p>
|
||||
<pre><code>$ /путь/до/lfsa_1.0.0.py /путь/до/директории/03.Blog
|
||||
</code></pre>
|
||||
<p>Сгенерируйте сайт:</p>
|
||||
<ul>
|
||||
<li>Перейдите на страницу <a href="http://opengamestudio.org/pskov/ru/pskov_1.0.0+ru.html">Инструмент</a></li>
|
||||
<li>Нажмите кнопку <code>Генерировать</code></li>
|
||||
<li>Откройте сгенерированный файл <code>en/blog/index.html</code> или <code>ru/blog/index.html</code> из директории сайта</li>
|
||||
<li>Осуществите переход между страницами предпросмотра</li>
|
||||
</ul>
|
||||
<p><a name="summary"/></p>
|
||||
<h2 id="09">09. Итог</h2>
|
||||
<p>Вы успешно сгенерировали веб-сайт с "динамическими" страницами блога. <a href="http://opengamestudio.org/pskov/sample/03.Blog/ru/blog/index.html">Проверьте результат</a>.</p>
|
||||
<p>Представлены константы <strong>ПСКОВА</strong>:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Константа ПСКОВА</th>
|
||||
<th>Описание</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>PSKOV_ITEM_DATE</code></td>
|
||||
<td>Значение ключа <code>Date</code> файла Markdown</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>PSKOV_PREVIEW</code></td>
|
||||
<td>Предоставляет содержимое файла Markdown, ограниченное <code>previewSize</code> символами (приблизительно)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>PSKOV_INDEX_URL</code></td>
|
||||
<td>Предоставляет генерируемое имя файла страницы с предпросмотрами: <code><previewsPageBaseName><id>.html</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>PSKOV_PREVIEWS</code></td>
|
||||
<td>Предоставляет набор предпросмотров</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>PSKOV_PAGINATION</code></td>
|
||||
<td>Предоставляет секцию для перехода между страницами с предпросмотрами</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>PSKOV_PAGE_ID</code></td>
|
||||
<td>Предоставляет порядковый номер страницы с предпросмотрами, начиная с <code>1</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>PSKOV_PAGES_COUNT</code></td>
|
||||
<td>Предоставляет количество сгенерированных страниц с предпросмотрами</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>PSKOV_PREV_PAGE_URL</code></td>
|
||||
<td>Предоставляет имя файла предыдущей страницы с предпросмотрами</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>PSKOV_NEXT_PAGE_URL</code></td>
|
||||
<td>Предоставляет имя файла следующей страницы с предпросмотрами</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Представлены ключи настроек:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Ключ</th>
|
||||
<th>Описание</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>preview</code></td>
|
||||
<td>Указывает на шаблон HTML, используемый для генерации предпросмотра HTML из первых <code>previewSize</code> (приблизительно) символов для каждого файла Markdown</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>index</code></td>
|
||||
<td>Указывает на шаблон HTML, используемый для генерации страницы с предпросмотрами</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>paginationPrev</code></td>
|
||||
<td>Указывает на шаблон HTML, используемый для генерации секции с переходом лишь на предыдущую страницу</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>paginationNext</code></td>
|
||||
<td>Указывает на шаблон HTML, используемый для генерации секции с переходм лишь на следующую страницу</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>paginationPrevNext</code></td>
|
||||
<td>Указывает на шаблон HTML, используемый для генерации секции с переходами по страницам</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>previewSize</code></td>
|
||||
<td>Количество символов (приблизительное) из файла Markdown, используемое для генерации предпросмотра</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>previewEnding</code></td>
|
||||
<td>Строка для добавления в конец каждого предпросмотра</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>previewsPerPage</code></td>
|
||||
<td>Максимальное количество предпросмотров, умещающееся на странице с предпросмотрами</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>previewsPageBaseName</code></td>
|
||||
<td>Базовое имя файла для страниц с предпросмотрами</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Представлены ключи заголовка:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Ключ заголовка</th>
|
||||
<th>Описание</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>Date</code></td>
|
||||
<td>Предоставляет значение для константы <code>PSKOV_ITEM_DATE</code> при генерации HTML из Markdown</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Это был последний документ, призванный научить вас уверенно владеть генератором статических сайтов <strong>ПСКОВ</strong>. Если вам нравится наш труд, присоединяйтесь к нам в <a href="https://vk.com/opengamestudo">VK</a>, <a href="https://twitter.com/OpenGameStudio">Twitter</a> или <a href="https://www.facebook.com/groups/162611230470183">Facebook</a>.</p>
|
||||
<p>А теперь используйте <strong>ПСКОВ</strong> для генерация своего собственного веб-сайта!</p>
|
||||
<p></div><div class="contents"></p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>< Назад</th>
|
||||
<th>Начало</th>
|
||||
<th>Далее ></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><a href="education.04.lang.html">04. Язык</a></td>
|
||||
<td><a href="education.html">Обучение</a></td>
|
||||
<td>Отсутствует</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div></center>
|
||||
<div id="footer">
|
||||
Сайт сгенерирован <a href="http://opengamestudio.org/pskov">ПСКОВОМ</a>
|
||||
из <a href="http://github.com/ogstudio/site-pskov">этого исходного кода</a>.
|
||||
Сайт расположен на <a href="https://pages.github.com">GitHub Pages</a>.
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
480
pskov/ru/education.05.blog.md
Normal file
480
pskov/ru/education.05.blog.md
Normal file
@@ -0,0 +1,480 @@
|
||||
Title: Обучение: 05. Блог
|
||||
Date: 2019-06-19 00:00
|
||||
Category: Page
|
||||
Slug: education.05.blog
|
||||
Lang: ru
|
||||
|
||||
| < Назад | Начало | Далее > |
|
||||
|---|---|---|
|
||||
| [04. Язык][prev] | [Обучение][index] | Отсутствует |
|
||||
|
||||
</div><div class="contents">
|
||||
|
||||
В этом документе мы создадим "динамические" страницы блога.
|
||||
|
||||
Ожидаемое время завершения: 20 минут.
|
||||
|
||||
**Содержание**
|
||||
|
||||
* [01. Блог](#blog)
|
||||
* [02. Изучите файл `pskov.cfg`](#cfg)
|
||||
* [03. Изучите шаблоны элементов](#item)
|
||||
* [04. Изучите шаблоны предпросмотров](#preview)
|
||||
* [05. Изучите шаблоны страниц с предпросмотрами](#index)
|
||||
* [06. Изучите постраничные шаблоны](#pagination)
|
||||
* [07. Изучите файлы Markdown](#md)
|
||||
* [08. Запустите ЛФСД и сгенерируйте сайт](#gen)
|
||||
* [09. Итог](#summary)
|
||||
|
||||
<a name="blog"/>
|
||||
|
||||
## 01. Блог
|
||||
|
||||
Итак, у вас есть веб-сайт на Английском и Русском языках. Вы начинаете ощущать желание регулярно делиться своими мыслями с миром в виде заметок блога.
|
||||
|
||||
Вы создаёте директорию со [следующей структурой файлов][03-files]:
|
||||
|
||||
* `pskov.cfg`
|
||||
* `en/blog/`
|
||||
* `item.template`
|
||||
* `index.template`
|
||||
* `preview.template`
|
||||
* `pagination.template`
|
||||
* `pagination.prev.template`
|
||||
* `pagination.next.template`
|
||||
* `1885.md`
|
||||
* `1886.01.md`
|
||||
* `1886.02.md`
|
||||
* `1887.01.md`
|
||||
* `1887.02.md`
|
||||
* `1888.md`
|
||||
* `1896.md`
|
||||
* `1899.md`
|
||||
* `en/page/`
|
||||
* `item.template`
|
||||
* `about.md`
|
||||
* `cv.md`
|
||||
* `ru/blog/`
|
||||
* `item.template`
|
||||
* `index.template`
|
||||
* `preview.template`
|
||||
* `pagination.template`
|
||||
* `pagination.prev.template`
|
||||
* `pagination.next.template`
|
||||
* `1885.md`
|
||||
* `1886.01.md`
|
||||
* `1886.02.md`
|
||||
* `1887.01.md`
|
||||
* `1887.02.md`
|
||||
* `1888.md`
|
||||
* `1896.md`
|
||||
* `1899.md`
|
||||
* `ru/page/`
|
||||
* `item.template`
|
||||
* `about.md`
|
||||
* `cv.md`
|
||||
|
||||
Давайте взглянем на содержимое этих файлов.
|
||||
|
||||
<a name="cfg"/>
|
||||
|
||||
## 02. Изучите файл `pskov.cfg`
|
||||
|
||||
Файл `pskov.cfg` содержит следующее:
|
||||
|
||||
```
|
||||
input = en/page;ru/page;en/blog;ru/blog
|
||||
item = item.template
|
||||
preview = preview.template
|
||||
index = index.template
|
||||
paginationPrev = pagination.prev.template
|
||||
paginationNext = pagination.next.template
|
||||
paginationPrevNext = pagination.template
|
||||
previewSize = 200
|
||||
previewEnding = . . .
|
||||
previewsPerPage = 3
|
||||
previewPageBaseName = index
|
||||
```
|
||||
|
||||
Вы уже встречались с ключами `input` и `item`. Рассмотрим остальные:
|
||||
|
||||
| Ключ | Описание |
|
||||
|---|---|
|
||||
| `preview` | Указывает на шаблон HTML, используемый для генерации предпросмотра HTML из первых `previewSize` (приблизительно) символов для каждого файла Markdown |
|
||||
| `index` | Указывает на шаблон HTML, используемый для генерации страницы с предпросмотрами |
|
||||
| `paginationPrev` | Указывает на шаблон HTML, используемый для генерации секции с переходом лишь на предыдущую страницу |
|
||||
| `paginationNext` | Указывает на шаблон HTML, используемый для генерации секции с переходм лишь на следующую страницу |
|
||||
| `paginationPrevNext` | Указывает на шаблон HTML, используемый для генерации секции с переходами по страницам |
|
||||
| `previewSize` | Количество символов (приблизительное) из файла Markdown, используемое для генерации предпросмотра |
|
||||
| `previewEnding` | Строка для добавления в конец каждого предпросмотра |
|
||||
| `previewsPerPage` | Максимальное количество предпросмотров, умещающееся на странице с предпросмотрами |
|
||||
| `previewsPageBaseName` | Базовое имя файла для страниц с предпросмотрами |
|
||||
|
||||
В нашем случае:
|
||||
|
||||
* мы ограничиваем предпросмотр `200` символами (приблизительно)
|
||||
* мы используем строку `. . .` в конце каждого предпросмотра
|
||||
* страницы с предпросмотрами вмещают максимум `3` предпросмотра
|
||||
* страницы с предпросмотрами будут сохранены как `index.html`, `index2.html`, `index3.html` и т.д.
|
||||
|
||||
<a name="item"/>
|
||||
|
||||
## 03. Изучите шаблоны элементов
|
||||
|
||||
* Содержимое `en/blog/item.template`:
|
||||
|
||||
```
|
||||
- - - - Схлопнуто для краткости - - - -
|
||||
<body>
|
||||
<div id="header">
|
||||
<strong>Serov</strong>
|
||||
<a href="../../en/blog/index.html">Blog</a>
|
||||
<a href="../../en/page/about.html">About me</a>
|
||||
<a href="../../en/page/cv.html">CV</a>
|
||||
<div id="lang">
|
||||
<a href="../../en/blog/PSKOV_ITEM_URL">EN</a>
|
||||
<a href="../../ru/blog/PSKOV_ITEM_URL">RU</a>
|
||||
</div>
|
||||
</div>
|
||||
<center>
|
||||
<h1>In the blog...</h1>
|
||||
<div class="contents">
|
||||
<h2 class="itemTitle">
|
||||
<a href="PSKOV_ITEM_URL">PSKOV_ITEM_TITLE</a>
|
||||
</h2>
|
||||
<p class="itemDate">PSKOV_ITEM_DATE</p>
|
||||
PSKOV_ITEM_CONTENTS
|
||||
</div>
|
||||
<div id="footer">
|
||||
This sample web site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a>.
|
||||
</div>
|
||||
</center>
|
||||
</body>
|
||||
- - - - Схлопнуто для краткости - - - -
|
||||
```
|
||||
* Содержимое `ru/blog/item.template`:
|
||||
|
||||
```
|
||||
- - - - Схлопнуто для краткости - - - -
|
||||
<body>
|
||||
<div id="header">
|
||||
<strong>Серов</strong>
|
||||
<a href="../../ru/blog/index.html">Блог</a>
|
||||
<a href="../../ru/page/about.html">Обо мне</a>
|
||||
<a href="../../ru/page/cv.html">Резюме</a>
|
||||
<div id="lang">
|
||||
<a href="../../en/blog/PSKOV_ITEM_URL">EN</a>
|
||||
<a href="../../ru/blog/PSKOV_ITEM_URL">RU</a>
|
||||
</div>
|
||||
</div>
|
||||
<center>
|
||||
<h1>В блоге...</h1>
|
||||
<div class="contents">
|
||||
<h2 class="itemTitle">
|
||||
<a href="PSKOV_ITEM_URL">PSKOV_ITEM_TITLE</a>
|
||||
</h2>
|
||||
<p class="itemDate">PSKOV_ITEM_DATE</p>
|
||||
PSKOV_ITEM_CONTENTS
|
||||
</div>
|
||||
<div id="footer">
|
||||
Этот пример сайта сгенерирован <a href="http://opengamestudio.org/pskov">ПСКОВОМ</a>.
|
||||
</div>
|
||||
</center>
|
||||
</body>
|
||||
- - - - Схлопнуто для краткости - - - -
|
||||
```
|
||||
|
||||
**Внимание**: начало и конец схлопнуты для краткости.
|
||||
|
||||
Как видите, оба файла выглядят практически так же, как и файлы `item.template`, рассмотренные [ранее][prev].
|
||||
|
||||
Изменения следующие:
|
||||
|
||||
* новые URL страниц в директории `page` и первой страницы с предпросмотрами в директории `blog`
|
||||
* заголовок используется внутри секции `contents` в качестве ссылки на полную заметку блога
|
||||
* дата используется для подчёркивания временной зависимости между заметками блога
|
||||
|
||||
Дату мы получаем из константы `PSKOV_ITEM_DATE`:
|
||||
|
||||
| Константа ПСКОВА | Описание |
|
||||
|---|---|
|
||||
| `PSKOV_ITEM_DATE` | Значение ключа `Date` файла Markdown |
|
||||
|
||||
<a name="preview"/>
|
||||
|
||||
## 04. Изучите шаблоны предпросмотров
|
||||
|
||||
* Содержимое `en/blog/preview.template`:
|
||||
|
||||
```
|
||||
<div class="contents">
|
||||
<h2 class="itemTitle">
|
||||
<a href="PSKOV_ITEM_URL">PSKOV_ITEM_TITLE</a>
|
||||
</h2>
|
||||
<p class="itemDate">PSKOV_ITEM_DATE</p>
|
||||
PSKOV_PREVIEW
|
||||
<div class="itemMore">
|
||||
<a href="PSKOV_ITEM_URL">Continue reading</a>
|
||||
</div>
|
||||
</div>
|
||||
```
|
||||
|
||||
* Содержимое `ru/blog/preview.template`:
|
||||
|
||||
```
|
||||
<div class="contents">
|
||||
<h2 class="itemTitle">
|
||||
<a href="PSKOV_ITEM_URL">PSKOV_ITEM_TITLE</a>
|
||||
</h2>
|
||||
<p class="itemDate">PSKOV_ITEM_DATE</p>
|
||||
PSKOV_PREVIEW
|
||||
<div class="itemMore">
|
||||
<a href="PSKOV_ITEM_URL">Читать дальше</a>
|
||||
</div>
|
||||
</div>
|
||||
```
|
||||
|
||||
У предпросмотров нет `<head>`, `<body>` и прочих полностраничных тэгов HTML. Предпросмотры являются секциями, вставляемыми в страницы с предпросмотрами.
|
||||
|
||||
Сам предпросмотр мы получаем из константы `PSKOV_PREVIEW`:
|
||||
|
||||
| Константа ПСКОВА | Описание |
|
||||
|---|---|
|
||||
| `PSKOV_PREVIEW` | Предоставляет содержимое файла Markdown, ограниченное `previewSize` символами (приблизительно) |
|
||||
|
||||
<a name="index"/>
|
||||
|
||||
## 05. Изучите шаблоны страниц с предпросмотрами
|
||||
|
||||
* Содержимое `en/blog/index.template`:
|
||||
|
||||
```
|
||||
- - - - Схлопнуто для краткости - - - -
|
||||
<body>
|
||||
<div id="header">
|
||||
<strong>Serov</strong>
|
||||
<a href="../../en/blog/index.html">Blog</a>
|
||||
<a href="../../en/page/about.html">About me</a>
|
||||
<a href="../../en/page/cv.html">CV</a>
|
||||
<div id="lang">
|
||||
<a href="../../en/blog/PSKOV_INDEX_URL">EN</a>
|
||||
<a href="../../ru/blog/PSKOV_INDEX_URL">RU</a>
|
||||
</div>
|
||||
</div>
|
||||
<center>
|
||||
<h1>Blog</h1>
|
||||
PSKOV_PREVIEWS
|
||||
PSKOV_PAGINATION
|
||||
<div id="footer">
|
||||
This sample web site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a>.
|
||||
</div>
|
||||
</center>
|
||||
</body>
|
||||
- - - - Схлопнуто для краткости - - - -
|
||||
```
|
||||
|
||||
* Содержимое `ru/blog/index.template`:
|
||||
|
||||
```
|
||||
- - - - Схлопнуто для краткости - - - -
|
||||
<body>
|
||||
<div id="header">
|
||||
<strong>Серов</strong>
|
||||
<a href="../../ru/blog/index.html">Блог</a>
|
||||
<a href="../../ru/page/about.html">Обо мне</a>
|
||||
<a href="../../ru/page/cv.html">Резюме</a>
|
||||
<div id="lang">
|
||||
<a href="../../en/blog/PSKOV_INDEX_URL">EN</a>
|
||||
<a href="../../ru/blog/PSKOV_INDEX_URL">RU</a>
|
||||
</div>
|
||||
</div>
|
||||
<center>
|
||||
<h1>Блог</h1>
|
||||
PSKOV_PREVIEWS
|
||||
PSKOV_PAGINATION
|
||||
<div id="footer">
|
||||
Этот пример сайта сгенерирован <a href="http://opengamestudio.org/pskov">ПСКОВОМ</a>.
|
||||
</div>
|
||||
</center>
|
||||
</body>
|
||||
- - - - Схлопнуто для краткости - - - -
|
||||
```
|
||||
|
||||
**Замечания**:
|
||||
|
||||
* начало и конец схлопнуты для краткости
|
||||
* константа `PSKOV_INDEX_URL` используется для выбора языка
|
||||
|
||||
Новые константы **ПСКОВА**:
|
||||
|
||||
| Константа ПСКОВА | Описание |
|
||||
|---|---|
|
||||
| `PSKOV_INDEX_URL` | Предоставляет генерируемое имя файла страницы с предпросмотрами: `<previewsPageBaseName><id>.html` |
|
||||
| `PSKOV_PREVIEWS` | Предоставляет набор предпросмотров |
|
||||
| `PSKOV_PAGINATION` | Предоставляет секцию для перехода между страницами с предпросмотрами |
|
||||
|
||||
<a name="pagination"/>
|
||||
|
||||
## 06. Изучите постраничные шаблоны
|
||||
|
||||
Постраничные шаблоны являются секциями HTML для перехода между страницами с предпросмотрами.
|
||||
|
||||
Существует три постраничных шаблона:
|
||||
|
||||
| Постраничный шаблон | Описание |
|
||||
|---|---|
|
||||
| Предыдущий | Посетитель может перейти лишь назад |
|
||||
| Следующий | Посетитель может перейти лишь вперёд |
|
||||
| Оба | Посетитель может перейти либо вперёд, либо назад |
|
||||
|
||||
Рассмотрим английские постраничные шаблоны:
|
||||
|
||||
* Содержимое `en/blog/pagination.prev.template`:
|
||||
|
||||
```
|
||||
<p>Page PSKOV_PAGE_ID of PSKOV_PAGES_COUNT</p>
|
||||
<p>
|
||||
<a href="PSKOV_PREV_PAGE_URL">« Newer</a>
|
||||
</p>
|
||||
```
|
||||
|
||||
* Содержимое `en/blog/pagination.next.template`:
|
||||
|
||||
```
|
||||
<p>Page PSKOV_PAGE_ID of PSKOV_PAGES_COUNT</p>
|
||||
<p>
|
||||
<a href="PSKOV_NEXT_PAGE_URL">Older »</a>
|
||||
</p>
|
||||
```
|
||||
|
||||
* Содержимое `en/blog/pagination.template`:
|
||||
|
||||
```
|
||||
<p>Page PSKOV_PAGE_ID of PSKOV_PAGES_COUNT</p>
|
||||
<p>
|
||||
<a href="PSKOV_PREV_PAGE_URL">« Newer</a>
|
||||
<a href="PSKOV_NEXT_PAGE_URL">Older »</a>
|
||||
</p>
|
||||
```
|
||||
|
||||
Русские версии выглядят схожим образом. Например, содержимое `ru/blog/pagination.template`:
|
||||
|
||||
```
|
||||
<p>Страница PSKOV_PAGE_ID из PSKOV_PAGES_COUNT</p>
|
||||
<p>
|
||||
<a href="PSKOV_PREV_PAGE_URL">« Новее</a>
|
||||
<a href="PSKOV_NEXT_PAGE_URL">Старее »</a>
|
||||
</p>
|
||||
```
|
||||
|
||||
Новые константы **ПСКОВА**:
|
||||
|
||||
| Константа ПСКОВА | Описание |
|
||||
|---|---|
|
||||
| `PSKOV_PAGE_ID` | Предоставляет порядковый номер страницы с предпросмотрами, начиная с `1` |
|
||||
| `PSKOV_PAGES_COUNT` | Предоставляет количество сгенерированных страниц с предпросмотрами |
|
||||
| `PSKOV_PREV_PAGE_URL` | Предоставляет имя файла предыдущей страницы с предпросмотрами |
|
||||
| `PSKOV_NEXT_PAGE_URL` | Предоставляет имя файла следующей страницы с предпросмотрами |
|
||||
|
||||
<a name="md"/>
|
||||
|
||||
## 07. Изучите файлы Markdown
|
||||
|
||||
Файлы Markdown являются заметками блога, они похожи на файлы Markdown обычных страниц. Вот как выглядит содержимое `en/blog/1885.md`:
|
||||
|
||||
```
|
||||
Title: Bullocks
|
||||
Date: 1885
|
||||
Slug: 1885.01.bullocks
|
||||
|
||||
![Bullocks][bullocks]
|
||||
|
||||
I've been painting "Bullocks" sketch while I was staying in Odessa at Kuznetsov's in 1885.
|
||||
|
||||
[bullocks]: https://upload.wikimedia.org/wikipedia/commons/c/cb/Walentin_Aleksandrovich_Serov_Bullocks.jpg
|
||||
```
|
||||
|
||||
Заметки блога сортируются по дате: новые заметки размещаются перед старыми.
|
||||
|
||||
| Ключ заголовка | Описание |
|
||||
|---|---|
|
||||
| `Date` | Предоставляет значение для константы `PSKOV_ITEM_DATE` при генерации HTML из Markdown |
|
||||
|
||||
<a name="gen"/>
|
||||
|
||||
## 08. Запустите ЛФСД и сгенерируйте сайт
|
||||
|
||||
Запустите [ЛФСД][lfsa] с указанием директории, содержащей только что рассмотренные файлы:
|
||||
|
||||
```
|
||||
$ /путь/до/lfsa_1.0.0.py /путь/до/директории/03.Blog
|
||||
```
|
||||
|
||||
Сгенерируйте сайт:
|
||||
|
||||
* Перейдите на страницу [Инструмент][tool]
|
||||
* Нажмите кнопку `Генерировать`
|
||||
* Откройте сгенерированный файл `en/blog/index.html` или `ru/blog/index.html` из директории сайта
|
||||
* Осуществите переход между страницами предпросмотра
|
||||
|
||||
<a name="summary"/>
|
||||
|
||||
## 09. Итог
|
||||
|
||||
Вы успешно сгенерировали веб-сайт с "динамическими" страницами блога. [Проверьте результат][03-sample].
|
||||
|
||||
Представлены константы **ПСКОВА**:
|
||||
|
||||
| Константа ПСКОВА | Описание |
|
||||
|---|---|
|
||||
| `PSKOV_ITEM_DATE` | Значение ключа `Date` файла Markdown |
|
||||
| `PSKOV_PREVIEW` | Предоставляет содержимое файла Markdown, ограниченное `previewSize` символами (приблизительно) |
|
||||
| `PSKOV_INDEX_URL` | Предоставляет генерируемое имя файла страницы с предпросмотрами: `<previewsPageBaseName><id>.html` |
|
||||
| `PSKOV_PREVIEWS` | Предоставляет набор предпросмотров |
|
||||
| `PSKOV_PAGINATION` | Предоставляет секцию для перехода между страницами с предпросмотрами |
|
||||
| `PSKOV_PAGE_ID` | Предоставляет порядковый номер страницы с предпросмотрами, начиная с `1` |
|
||||
| `PSKOV_PAGES_COUNT` | Предоставляет количество сгенерированных страниц с предпросмотрами |
|
||||
| `PSKOV_PREV_PAGE_URL` | Предоставляет имя файла предыдущей страницы с предпросмотрами |
|
||||
| `PSKOV_NEXT_PAGE_URL` | Предоставляет имя файла следующей страницы с предпросмотрами |
|
||||
|
||||
Представлены ключи настроек:
|
||||
|
||||
| Ключ | Описание |
|
||||
|---|---|
|
||||
| `preview` | Указывает на шаблон HTML, используемый для генерации предпросмотра HTML из первых `previewSize` (приблизительно) символов для каждого файла Markdown |
|
||||
| `index` | Указывает на шаблон HTML, используемый для генерации страницы с предпросмотрами |
|
||||
| `paginationPrev` | Указывает на шаблон HTML, используемый для генерации секции с переходом лишь на предыдущую страницу |
|
||||
| `paginationNext` | Указывает на шаблон HTML, используемый для генерации секции с переходм лишь на следующую страницу |
|
||||
| `paginationPrevNext` | Указывает на шаблон HTML, используемый для генерации секции с переходами по страницам |
|
||||
| `previewSize` | Количество символов (приблизительное) из файла Markdown, используемое для генерации предпросмотра |
|
||||
| `previewEnding` | Строка для добавления в конец каждого предпросмотра |
|
||||
| `previewsPerPage` | Максимальное количество предпросмотров, умещающееся на странице с предпросмотрами |
|
||||
| `previewsPageBaseName` | Базовое имя файла для страниц с предпросмотрами |
|
||||
|
||||
Представлены ключи заголовка:
|
||||
|
||||
| Ключ заголовка | Описание |
|
||||
|---|---|
|
||||
| `Date` | Предоставляет значение для константы `PSKOV_ITEM_DATE` при генерации HTML из Markdown |
|
||||
|
||||
Это был последний документ, призванный научить вас уверенно владеть генератором статических сайтов **ПСКОВ**. Если вам нравится наш труд, присоединяйтесь к нам в [VK][vk], [Twitter][tw] или [Facebook][fb].
|
||||
|
||||
А теперь используйте **ПСКОВ** для генерация своего собственного веб-сайта!
|
||||
|
||||
</div><div class="contents">
|
||||
|
||||
| < Назад | Начало | Далее > |
|
||||
|---|---|---|
|
||||
| [04. Язык][prev] | [Обучение][index] | Отсутствует |
|
||||
|
||||
[index]: education.html
|
||||
[prev]: education.04.lang.html
|
||||
|
||||
[03-files]: https://github.com/OGStudio/site-pskov-sample/tree/master/03.Blog
|
||||
[03-sample]: http://opengamestudio.org/pskov/sample/03.Blog/ru/blog/index.html
|
||||
[lfsa]: http://opengamestudio.org/lfsa/ru
|
||||
[tool]: http://opengamestudio.org/pskov/ru/pskov_1.0.0+ru.html
|
||||
|
||||
[vk]: https://vk.com/opengamestudo
|
||||
[tw]: https://twitter.com/OpenGameStudio
|
||||
[fb]: https://www.facebook.com/groups/162611230470183
|
||||
241
pskov/ru/education.html
Normal file
241
pskov/ru/education.html
Normal file
@@ -0,0 +1,241 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<meta charset="utf-8">
|
||||
<head>
|
||||
<style>
|
||||
#header
|
||||
{
|
||||
background: #856d51;
|
||||
padding: 0.7em;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
#header a
|
||||
{
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
padding: 0.5em 1em 0.5em 1em;
|
||||
}
|
||||
#title
|
||||
{
|
||||
color: #433729;
|
||||
}
|
||||
html
|
||||
{
|
||||
font-family: sans-serif;
|
||||
}
|
||||
body
|
||||
{
|
||||
line-height: 1.5em;
|
||||
}
|
||||
body
|
||||
{
|
||||
background: #FAFAFA;
|
||||
}
|
||||
table
|
||||
{
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
table, th, td
|
||||
{
|
||||
border: 1px solid #aaa;
|
||||
padding: 0.5em;
|
||||
margin-top: 0.5em;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
code, pre
|
||||
{
|
||||
font-family: monospace, serif;
|
||||
font-size: 1em;
|
||||
color: #7f0a0c;
|
||||
background: #f5f5f5;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
.contents
|
||||
{
|
||||
background: #FFFFFF;
|
||||
width: 720px;
|
||||
padding: 1em;
|
||||
margin-top: 2em;
|
||||
margin-bottom: 2em;
|
||||
border: 1px solid #E0E0E0;
|
||||
text-align: left;
|
||||
color: #444;
|
||||
}
|
||||
#footer
|
||||
{
|
||||
text-align: center;
|
||||
}
|
||||
#lang
|
||||
{
|
||||
float: right;
|
||||
}
|
||||
</style>
|
||||
<title>
|
||||
PSKOV
|
||||
</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
<strong id="title">ПСКОВ</strong>
|
||||
<a href="pskov_1.0.0+ru.html">Инструмент</a>
|
||||
<a href="education.html">Обучение</a>
|
||||
<div id="lang">
|
||||
<a href="../en/education.html">EN</a>
|
||||
<a href="../ru/education.html">RU</a>
|
||||
</div>
|
||||
</div>
|
||||
<center><h1>
|
||||
Обучение
|
||||
</h1></center>
|
||||
<center><div class="contents">
|
||||
<p>Представленные здесь документы научат вас уверенно владеть генератором статических сайтов <strong>ПСКОВ</strong>. Советуем читать документы по порядку.</p>
|
||||
<h2 id="01why"><a href="education.01.why.html">01. Почему</a></h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Свойство</th>
|
||||
<th>Подробности</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Описание</td>
|
||||
<td>Узнайте причины создания <strong>ПСКОВА</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Ожидаемое время завершения</td>
|
||||
<td>5 минут</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h2 id="02deps"><a href="education.02.deps.html">02. Зависимости</a></h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Свойство</th>
|
||||
<th>Подробности</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Описание</td>
|
||||
<td>Установите зависимости, чтобы начать использовать <strong>ПСКОВ</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Ожидаемое время завершения</td>
|
||||
<td>5 минут</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h2 id="03site"><a href="education.03.site.html">03. Сайт</a></h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Свойство</th>
|
||||
<th>Подробности</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Описание</td>
|
||||
<td>Научитесь создавать простой статический сайт с двумя страницами</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Ожидаемое время завершения</td>
|
||||
<td>10 минут</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Демонстрация</td>
|
||||
<td><a href="http://opengamestudio.org/pskov/sample/01.TwoPages/about.html">ДвеСтраницы</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Представленные константы ПСКОВА</td>
|
||||
<td><ol> <li><code>PSKOV_ITEM_TITLE</code></li> <li><code>PSKOV_ITEM_CONTENTS</code></li> </ol></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Представленные ключи настроек</td>
|
||||
<td><ol> <li><code>input</code></li> <li><code>item</code></li> </ol></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Представленные ключи заголовка</td>
|
||||
<td><ol> <li><code>Title</code></li> <li><code>Slug</code></li> </ol></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h2 id="04lang"><a href="education.04.lang.html">04. Язык</a></h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Свойство</th>
|
||||
<th>Подробности</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Описание</td>
|
||||
<td>Научитесь добавлять выбор языка</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Ожидаемое время завершения</td>
|
||||
<td>10 минут</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Демонстрация</td>
|
||||
<td><a href="http://opengamestudio.org/pskov/sample/02.Language/ru/about.html">Язык</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Представленные константы ПСКОВА</td>
|
||||
<td><ol> <li><code>PSKOV_ITEM_URL</code></li> </ol></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h2 id="05blog"><a href="education.05.blog.html">05. Блог</a></h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Свойство</th>
|
||||
<th>Подробности</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Описание</td>
|
||||
<td>Научитесь создавать "динамические" страницы для блога</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Ожидаемое время завершения</td>
|
||||
<td>20 минут</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Демонстрация</td>
|
||||
<td><a href="http://opengamestudio.org/pskov/sample/03.Blog/ru/blog/index.html">Блог</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Представленные константы ПСКОВА</td>
|
||||
<td><ol> <li><code>PSKOV_ITEM_DATE</code></li> <li><code>PSKOV_PREVIEW</code></li> <li><code>PSKOV_INDEX_URL</code></li> <li><code>PSKOV_PREVIEWS</code></li> <li><code>PSKOV_PAGINATION</code></li> <li><code>PSKOV_PAGE_ID</code></li> <li><code>PSKOV_PAGES_COUNT</code></li> <li><code>PSKOV_PREV_PAGE_URL</code></li> <li><code>PSKOV_NEXT_PAGE_URL</code></li> </ol></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Представленные ключи настроек</td>
|
||||
<td><ol> <li><code>preview</code></li> <li><code>index</code></li> <li><code>paginationPrev</code></li> <li><code>paginationNext</code></li> <li><code>paginationPrevNext</code></li> <li><code>previewSize</code></li> <li><code>previewEnding</code></li> <li><code>previewsPerPage</code></li> <li><code>previewsPageBaseName</code></li> </ol></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Представленные ключи заголовка</td>
|
||||
<td><ol> <li><code>Date</code></li> </ol></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Если вам нравится наш труд, присоединяйтесь к нам в <a href="https://vk.com/opengamestudo">VK</a>, <a href="https://twitter.com/OpenGameStudio">Twitter</a> или <a href="https://www.facebook.com/groups/162611230470183">Facebook</a>.</p>
|
||||
</div></center>
|
||||
<div id="footer">
|
||||
Сайт сгенерирован <a href="http://opengamestudio.org/pskov">ПСКОВОМ</a>
|
||||
из <a href="http://github.com/ogstudio/site-pskov">этого исходного кода</a>.
|
||||
Сайт расположен на <a href="https://pages.github.com">GitHub Pages</a>.
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
68
pskov/ru/education.md
Normal file
68
pskov/ru/education.md
Normal file
@@ -0,0 +1,68 @@
|
||||
Title: Обучение
|
||||
Date: 2019-06-18 00:00
|
||||
Category: Page
|
||||
Slug: education
|
||||
Lang: ru
|
||||
|
||||
Представленные здесь документы научат вас уверенно владеть генератором статических сайтов **ПСКОВ**. Советуем читать документы по порядку.
|
||||
|
||||
## [01. Почему][why]
|
||||
|
||||
| Свойство | Подробности |
|
||||
|---|---|
|
||||
| Описание | Узнайте причины создания **ПСКОВА** |
|
||||
| Ожидаемое время завершения | 5 минут |
|
||||
|
||||
## [02. Зависимости][deps]
|
||||
|
||||
| Свойство | Подробности |
|
||||
|---|---|
|
||||
| Описание | Установите зависимости, чтобы начать использовать **ПСКОВ** |
|
||||
| Ожидаемое время завершения | 5 минут |
|
||||
|
||||
## [03. Сайт][site]
|
||||
|
||||
| Свойство | Подробности |
|
||||
|---|---|
|
||||
| Описание | Научитесь создавать простой статический сайт с двумя страницами |
|
||||
| Ожидаемое время завершения | 10 минут |
|
||||
| Демонстрация | [ДвеСтраницы][01-sample] |
|
||||
| Представленные константы ПСКОВА | <ol> <li>`PSKOV_ITEM_TITLE`</li> <li>`PSKOV_ITEM_CONTENTS`</li> </ol> |
|
||||
| Представленные ключи настроек | <ol> <li>`input`</li> <li>`item`</li> </ol> |
|
||||
| Представленные ключи заголовка | <ol> <li>`Title`</li> <li>`Slug`</li> </ol> |
|
||||
|
||||
## [04. Язык][lang]
|
||||
|
||||
| Свойство | Подробности |
|
||||
|---|---|
|
||||
| Описание | Научитесь добавлять выбор языка |
|
||||
| Ожидаемое время завершения | 10 минут |
|
||||
| Демонстрация | [Язык][02-sample] |
|
||||
| Представленные константы ПСКОВА | <ol> <li>`PSKOV_ITEM_URL`</li> </ol> |
|
||||
|
||||
## [05. Блог][blog]
|
||||
|
||||
| Свойство | Подробности |
|
||||
|---|---|
|
||||
| Описание | Научитесь создавать "динамические" страницы для блога |
|
||||
| Ожидаемое время завершения | 20 минут |
|
||||
| Демонстрация | [Блог][03-sample] |
|
||||
| Представленные константы ПСКОВА | <ol> <li>`PSKOV_ITEM_DATE`</li> <li>`PSKOV_PREVIEW`</li> <li>`PSKOV_INDEX_URL`</li> <li>`PSKOV_PREVIEWS`</li> <li>`PSKOV_PAGINATION`</li> <li>`PSKOV_PAGE_ID`</li> <li>`PSKOV_PAGES_COUNT`</li> <li>`PSKOV_PREV_PAGE_URL`</li> <li>`PSKOV_NEXT_PAGE_URL`</li> </ol> |
|
||||
| Представленные ключи настроек | <ol> <li>`preview`</li> <li>`index`</li> <li>`paginationPrev`</li> <li>`paginationNext`</li> <li>`paginationPrevNext`</li> <li>`previewSize`</li> <li>`previewEnding`</li> <li>`previewsPerPage`</li> <li>`previewsPageBaseName`</li> </ol> |
|
||||
| Представленные ключи заголовка | <ol> <li>`Date`</li> </ol> |
|
||||
|
||||
Если вам нравится наш труд, присоединяйтесь к нам в [VK][vk], [Twitter][tw] или [Facebook][fb].
|
||||
|
||||
[why]: education.01.why.html
|
||||
[deps]: education.02.deps.html
|
||||
[site]: education.03.site.html
|
||||
[lang]: education.04.lang.html
|
||||
[blog]: education.05.blog.html
|
||||
|
||||
[01-sample]: http://opengamestudio.org/pskov/sample/01.TwoPages/about.html
|
||||
[02-sample]: http://opengamestudio.org/pskov/sample/02.Language/ru/about.html
|
||||
[03-sample]: http://opengamestudio.org/pskov/sample/03.Blog/ru/blog/index.html
|
||||
|
||||
[vk]: https://vk.com/opengamestudo
|
||||
[tw]: https://twitter.com/OpenGameStudio
|
||||
[fb]: https://www.facebook.com/groups/162611230470183
|
||||
105
pskov/ru/item.template
Normal file
105
pskov/ru/item.template
Normal file
@@ -0,0 +1,105 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<meta charset="utf-8">
|
||||
<head>
|
||||
<style>
|
||||
#header
|
||||
{
|
||||
background: #856d51;
|
||||
padding: 0.7em;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
#header a
|
||||
{
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
padding: 0.5em 1em 0.5em 1em;
|
||||
}
|
||||
#title
|
||||
{
|
||||
color: #433729;
|
||||
}
|
||||
html
|
||||
{
|
||||
font-family: sans-serif;
|
||||
}
|
||||
body
|
||||
{
|
||||
line-height: 1.5em;
|
||||
}
|
||||
body
|
||||
{
|
||||
background: #FAFAFA;
|
||||
}
|
||||
table
|
||||
{
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
table, th, td
|
||||
{
|
||||
border: 1px solid #aaa;
|
||||
padding: 0.5em;
|
||||
margin-top: 0.5em;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
code, pre
|
||||
{
|
||||
font-family: monospace, serif;
|
||||
font-size: 1em;
|
||||
color: #7f0a0c;
|
||||
background: #f5f5f5;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
.contents
|
||||
{
|
||||
background: #FFFFFF;
|
||||
width: 720px;
|
||||
padding: 1em;
|
||||
margin-top: 2em;
|
||||
margin-bottom: 2em;
|
||||
border: 1px solid #E0E0E0;
|
||||
text-align: left;
|
||||
color: #444;
|
||||
}
|
||||
#footer
|
||||
{
|
||||
text-align: center;
|
||||
}
|
||||
#lang
|
||||
{
|
||||
float: right;
|
||||
}
|
||||
</style>
|
||||
<title>
|
||||
PSKOV
|
||||
</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
<strong id="title">ПСКОВ</strong>
|
||||
<a href="pskov_1.0.0+ru.html">Инструмент</a>
|
||||
<a href="education.html">Обучение</a>
|
||||
<div id="lang">
|
||||
<a href="../en/PSKOV_ITEM_URL">EN</a>
|
||||
<a href="../ru/PSKOV_ITEM_URL">RU</a>
|
||||
</div>
|
||||
</div>
|
||||
<center><h1>
|
||||
PSKOV_ITEM_TITLE
|
||||
</h1></center>
|
||||
<center><div class="contents">
|
||||
PSKOV_ITEM_CONTENTS
|
||||
</div></center>
|
||||
<div id="footer">
|
||||
Сайт сгенерирован <a href="http://opengamestudio.org/pskov">ПСКОВОМ</a>
|
||||
из <a href="http://github.com/ogstudio/site-pskov">этого исходного кода</a>.
|
||||
Сайт расположен на <a href="https://pages.github.com">GitHub Pages</a>.
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
6931
pskov/ru/pskov_1.0.0+ru.html
Normal file
6931
pskov/ru/pskov_1.0.0+ru.html
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user