You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

education.03.site.md 9.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. Title: Обучение: 03. Сайт
  2. Date: 2019-06-18 00:00
  3. Category: Page
  4. Slug: education.03.site
  5. Lang: ru
  6. | < Назад | Начало | Далее > |
  7. |---|---|---|
  8. | [02. Зависимости][prev] | [Обучение][index] | [04. Язык][next] |
  9. </div><div class="contents">
  10. В этом документы мы создадим простой статический сайт с двумя страницами.
  11. Ожидаемое время завершения: 10 минут.
  12. **Содержание**
  13. * [01. Вдохновление](#inspiration)
  14. * [02. Изучите файл `pskov.cfg`](#cfg)
  15. * [03. Изучите файл `item.template`](#item)
  16. * [04. Изучите файлы `about.md` и `cv.md`](#md)
  17. * [05. Запустите ЛФСД](#lfsa)
  18. * [06. Сгенерируйте сайт](#gen)
  19. * [07. Итог](#summary)
  20. <a name="inspiration"/>
  21. ## 01. Вдохновление
  22. Представьте, что вы являетесь выдающимся русским живописцем Валентином Серовым. Каждый раз, когда кто-либо хочет узнать о вас, он идёт на [Википедию][serov]. Сегодня утром вы просыпаетесь раньше обычного с отчётливым желанием создать свой собственный веб-сайт.
  23. Вы приступаете к созданию следующих страницы:
  24. * About me
  25. * Curriculum vitae (CV)
  26. Несколько позже в [директории вашего сайта][01-files] у вас оказываются следующие файлы:
  27. * pskov.cfg
  28. * item.template
  29. * about.md
  30. * cv.md
  31. Давайте взглянем на их содержимое.
  32. <a name="cfg"/>
  33. ## 02. Изучите файл `pskov.cfg`
  34. Файл `pskov.cfg` содержит следующее:
  35. ```
  36. input = .
  37. item = item.template
  38. ```
  39. `pskov.cfg` является [файлом настроек][ini-file] со следующими ключами:
  40. | Ключ | Описание |
  41. |---|---|
  42. | `input` | Указывает на директорию с файлом, на который ссылается ключ `item` |
  43. | `item` | Указывает на файл с шаблоном HTML, который используется для генерации файлов HTML из Markdown |
  44. В нашем случае файл `item.template` расположен рядом с `pskov.cfg`, поэтому мы используем `.` для обозначения текущей директории.
  45. <a name="item"/>
  46. ## 03. Изучите файл `item.template`
  47. Файл `item.template` содержит следующее:
  48. ```
  49. <!DOCTYPE html>
  50. <html>
  51. <meta charset="utf-8">
  52. <head>
  53. <style>
  54. - - - - Схлопнуто для краткости - - - -
  55. </style>
  56. <title>Serov</title>
  57. </head>
  58. <body>
  59. <div id="header">
  60. <strong>Serov</strong>
  61. <a href="about.html">About me</a>
  62. <a href="cv.html">CV</a>
  63. </div>
  64. <center>
  65. <h1>PSKOV_ITEM_TITLE</h1>
  66. <div class="contents">
  67. PSKOV_ITEM_CONTENTS
  68. </div>
  69. <div id="footer">
  70. This sample web site has been generated by <a href="http://opengamestudio.org/pskov">PSKOV</a>.
  71. </div>
  72. </center>
  73. </body>
  74. </html>
  75. ```
  76. **Внимание**: стиль схлопнут для краткости.
  77. Как видите, `item.template` представляет из себя обычный файл HTML с двумя константами **ПСКОВА**:
  78. | Константа ПСКОВА | Описание |
  79. |---|---|
  80. | `PSKOV_ITEM_TITLE` | Значение ключа `Title` из файла Markdown страницы |
  81. | `PSKOV_ITEM_CONTENTS` | Предоставляет содержимое HTML, сгенерированное из Markdown |
  82. **Замечания**:
  83. * другие константы **ПСКОВА** описаны позже
  84. * файл Markdown страницы описан ниже
  85. <a name="md"/>
  86. ## 04. Изучите файлы `about.md` и `cv.md`
  87. Файл `about.md` содержит следующее:
  88. ```
  89. Title: About me
  90. Slug: about
  91. Hi, my name is Valentin Serov. Here's my self-portrait:
  92. ![Valentin Serov self-portrait][serov-portrait]
  93. - - - - Схлопнуто для краткости - - - -
  94. Have a look at my [CV][cv] now.
  95. [serov]: https://en.wikipedia.org/wiki/Valentin_Serov
  96. [revolution]: https://en.wikipedia.org/wiki/Russian_Revolution
  97. [serov-portrait]: myself.jpg
  98. [serov-work]: mywork.jpg
  99. [girl-with-peaches]: https://en.wikipedia.org/wiki/Girl_with_Peaches
  100. [pskov]: http://opengamestudio.org/pskov
  101. [cv]: cv.html
  102. ```
  103. `about.md` начинается с так называемого заголовка:
  104. | Ключ заголовка | Описание |
  105. |---|---|
  106. | `Title` | Предоставляет значение для константы `PSKOV_ITEM_TITLE` во время генерации HTML из Markdown |
  107. | `Slug` | Сообщает **ПСКОВУ** о том, что этот файл должен быть сохранён как `<slug>.html` |
  108. В остальном содержимое `about.md` ничем не отличается от любых других файлов Markdown.
  109. **Внимание**: ссылка на страницу `cv` указана как `cv.html`, не `cv.md`
  110. Файл `cv.md` содержит следующее:
  111. ```
  112. Title: Curriculum vitae
  113. Slug: cv
  114. 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!
  115. | Key | Value |
  116. |---|---|
  117. | Name | Valentin Serov |
  118. | Age | 46 |
  119. | Marital status | Married |
  120. | Country | Russian Empire |
  121. | Alma mater | Imperial Academy of Arts |
  122. | Education | * Member Academy of Arts (1898) <br> * Full Member Academy of Arts (1903) |
  123. ```
  124. Как видите, в `cv.md` нет ничего нового за исключением таблицы Markdown.
  125. <a name="lfsa"/>
  126. ## 05. Запустите ЛФСД
  127. Запустите [ЛФСД][lfsa] с указанием директории, содержащей только что рассмотренные файлы:
  128. ```
  129. $ /путь/до/lfsa_1.0.0.py /путь/до/директории/01.TwoPages
  130. ```
  131. Вы должны увидеть примерно такой вывод:
  132. ```
  133. DIR: '/Users/kornerr/p/site-pskov-sample/01.TwoPages'
  134. PORT: '8000'
  135. ```
  136. <a name="gen"/>
  137. ## 06. Сгенерируйте сайт
  138. Настало время сгенерировать свой собственный веб-сайт:
  139. * Перейдите на страницу [Инструмент][tool]
  140. * Убедитесь в том, что:
  141. * `Путь` указывает на нужную директорию
  142. * `Входящая директория` и `Шаблон элемента` содержат значения из `pskov.cfg`
  143. * Нажмите кнопку `Генерировать` для генерации файлов HTML рядом с файлами Markdown
  144. * Откройте сгенерированный файл `about.html` из директории сайта
  145. * Перед вами ваш собственный веб-сайт, запущенный локально
  146. <a name="summary"/>
  147. ## 07. Итог
  148. Вы успешно сгенерировали веб-сайт с двумя страницами. [Проверьте результат][01-sample].
  149. Представлены константы **ПСКОВА**:
  150. | Константа ПСКОВА | Описание |
  151. |---|---|
  152. | `PSKOV_ITEM_TITLE` | Значение ключа `Title` из файла Markdown страницы |
  153. | `PSKOV_ITEM_CONTENTS` | Предоставляет содержимое HTML, сгенерированное из Markdown |
  154. Представлены ключи настроек:
  155. | Ключ | Описание |
  156. |---|---|
  157. | `input` | Указывает на директорию с файлом, на который ссылается ключ `item` |
  158. | `item` | Указывает на файл с шаблоном HTML, который используется для генерации файлов HTML из Markdown |
  159. Представлены ключи заголовка:
  160. | Ключ заголовка | Описание |
  161. |---|---|
  162. | `Title` | Предоставляет значение для константы `PSKOV_ITEM_TITLE` во время генерации HTML из Markdown |
  163. | `Slug` | Сообщает **ПСКОВУ** о том, что этот файл должен быть сохранён как `<slug>.html` |
  164. </div><div class="contents">
  165. | < Назад | Начало | Далее > |
  166. |---|---|---|
  167. | [02. Зависимости][prev] | [Обучение][index] | [04. Язык][next] |
  168. [index]: education.html
  169. [prev]: education.02.deps.html
  170. [next]: education.04.lang.html
  171. [01-files]: https://github.com/OGStudio/site-pskov-sample/tree/master/01.TwoPages
  172. [01-sample]: http://opengamestudio.org/pskov/sample/01.TwoPages/about.html
  173. [ini-file]: https://ru.wikipedia.org/wiki/.ini
  174. [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
  175. [lfsa]: http://opengamestudio.org/lfsa/ru
  176. [tool]: http://opengamestudio.org/pskov/ru/pskov_1.0.0+ru.html