diff --git a/pskov/en/education.01.why.html b/pskov/en/education.01.why.html index 73d93f3..2e095be 100644 --- a/pskov/en/education.01.why.html +++ b/pskov/en/education.01.why.html @@ -64,9 +64,17 @@ text-align: left; color: #444; } + #footer + { + text-align: center; + } + #lang + { + float: right; + } - pskov_1.0.0 + PSKOV @@ -74,6 +82,10 @@ PSKOV Tool Education +
+ EN + RU +

Education: 01. Why @@ -105,7 +117,7 @@ Education: 01. Why

01. Why

-

You might know there already exist quite a lot of static site generators, why create another one? Because they are not good enough for Opensource Game Studio needs.

+

You might know there already exist quite a lot of static site generators, why create another one? Because they were not good enough for Open Game Studio needs.

Here's a list of features we don't need:

@@ -119,7 +131,7 @@ Education: 01. Why - + @@ -129,12 +141,12 @@ Education: 01. Why - + - +
1 Learning anything beyond HTML, CSS, JavaScript, and MarkdownThese technologies are enough to deliver information to usersThese technologies are enough to have a clean web site
2
3 InstallationWe had enough updates that were never requestedNo more forced updates that were never requested
4 Comprehensible source codeSingle file with just enough number of linesNo more millions of source code files
@@ -152,8 +164,8 @@ Education: 01. Why 1 -Bare HTML, CSS, JavaScript, and Markdown -No need for template language, web framework or anything else +HTML, CSS, JavaScript, and Markdown +Just what you already know 2 @@ -162,17 +174,27 @@ Education: 01. Why 3 -Optional installation -PSKOV is available at http://opengamestudio.org/pskov. However, if you want to keep PSKOV locally, you can get PSKOV single HTML file here and open it locally +Available on-line +http://opengamestudio.org/pskov 4 -Comprehensible source code -PSKOV is a single HTML file with less than 10000 lines of code +Available off-line +Just save the Tool page and then open it locally 5 -Decades long support (DLS) +Comprehensible source code +PSKOV is a single HTML file + + +6 +Belongs to everyone +PSKOV is released under CC0 license (public domain) + + +7 +Runs for decades You can use PSKOV on both Windows 2000 and Windows 2030* @@ -196,6 +218,11 @@ Education: 01. Why

+ diff --git a/pskov/en/education.01.why.md b/pskov/en/education.01.why.md index 540bffa..2ab2ff1 100644 --- a/pskov/en/education.01.why.md +++ b/pskov/en/education.01.why.md @@ -1,5 +1,5 @@ Title: Education: 01. Why -Date: 2019-05-14 00:00 +Date: 2019-06-18 00:00 Category: Page Slug: education.01.why Lang: en @@ -23,16 +23,16 @@ Estimated completion time: 5 minutes. ## 01. Why -You might know there already exist quite a lot of [static site generators][other-generators], why create another one? Because **they are not good enough** for [Opensource Game Studio][ogs] needs. +You might know there already exist quite a lot of [static site generators][other-generators], why create another one? Because **they were not good enough** for [Open Game Studio][ogs] needs. Here's a list of **features we don't need**: | № | Unwelcome feature | Note | |---|---|---| -| 1 | Learning anything beyond HTML, CSS, JavaScript, and Markdown | These technologies are enough to deliver information to users | +| 1 | Learning anything beyond HTML, CSS, JavaScript, and Markdown | These technologies are enough to have a clean web site | | 2 | Server side | Nobody should be able to pull the plug on you except yourself | -| 3 | Installation | We had enough updates that were never requested | -| 4 | Comprehensible source code | Single file with just enough number of lines | +| 3 | Installation | No more forced updates that were never requested | +| 4 | Comprehensible source code | No more millions of source code files | @@ -42,11 +42,13 @@ Consequently, here is a list of **PSKOV features**: | № | PSKOV feature | Note | |---|---|---| -| 1 | Bare HTML, CSS, JavaScript, and Markdown | No need for template language, web framework or anything else | +| 1 | HTML, CSS, JavaScript, and Markdown | Just what you already know | | 2 | Client side | **PSKOV** is a client side JavaScript application, it runs solely on your device | -| 3 | Optional installation | **PSKOV** is available at [http://opengamestudio.org/pskov][pskov]. However, if you want to keep **PSKOV** locally, you can get **PSKOV** single HTML file [here][pskov-src] and open it locally | -| 4 | Comprehensible source code | **PSKOV** is a [single HTML file][pskov-src] with less than 10000 lines of code | -| 5 | Decades long support (DLS) | You can use **PSKOV** on both Windows 2000 and Windows 2030\* | +| 3 | Available on-line | [http://opengamestudio.org/pskov][pskov] | +| 4 | Available off-line | Just save the [Tool][pskov] page and then open it locally | +| 5 | Comprehensible source code | **PSKOV** is a single HTML file | +| 6 | Belongs to everyone | **PSKOV** is released under [CC0][cc0] license (public domain)| +| 7 | Runs for decades | You can use **PSKOV** on both Windows 2000 and Windows 2030\* | \* Windows 2030 does not (yet) exist, we simply refer to the fact that **PSKOV** is designed to work for operating systems released in the range of years 2000-2030 @@ -62,4 +64,4 @@ Consequently, here is a list of **PSKOV features**: [other-generators]: https://medium.com/codingthesmartway-com-blog/top-static-site-generators-for-2019-26a4c8afcc05 [ogs]: http://opengamestudio.org [pskov]: http://opengamestudio.org/pskov -[pskov-src]: http://opengamestudio.org/pskov-201905.html +[cc0]: https://creativecommons.org/share-your-work/public-domain/cc0/ diff --git a/pskov/en/education.02.deps.html b/pskov/en/education.02.deps.html index 5906cdb..b89a3da 100644 --- a/pskov/en/education.02.deps.html +++ b/pskov/en/education.02.deps.html @@ -64,9 +64,17 @@ text-align: left; color: #444; } + #footer + { + text-align: center; + } + #lang + { + float: right; + } - pskov_1.0.0 + PSKOV @@ -74,6 +82,10 @@ PSKOV Tool Education +
+ EN + RU +

Education: 02. Dependencies @@ -141,7 +153,7 @@ Education: 02. Dependencies

@@ -161,6 +173,11 @@ Education: 02. Dependencies

+ diff --git a/pskov/en/education.02.deps.md b/pskov/en/education.02.deps.md index 9b1ab41..083dff8 100644 --- a/pskov/en/education.02.deps.md +++ b/pskov/en/education.02.deps.md @@ -1,5 +1,5 @@ Title: Education: 02. Dependencies -Date: 2019-05-14 00:00 +Date: 2019-06-18 00:00 Category: Page Slug: education.02.deps Lang: en @@ -60,5 +60,5 @@ We designed **PSKOV** to run inside web browsers. Here is what you need to run * [next]: education.03.site.html [lfsa]: http://opengamestudio.org/lfsa -[lfsa-src]: https://bitbucket.org/ogstudio/lfsa/src/default/lfsa-201905.py +[lfsa-src]: https://bitbucket.org/ogstudio/lfsa/src/default/lfsa_1.0.0.py [showdown]: https://github.com/showdownjs/showdown diff --git a/pskov/en/education.03.site.html b/pskov/en/education.03.site.html index 785181d..11b78bc 100644 --- a/pskov/en/education.03.site.html +++ b/pskov/en/education.03.site.html @@ -64,9 +64,17 @@ text-align: left; color: #444; } + #footer + { + text-align: center; + } + #lang + { + float: right; + } - pskov_1.0.0 + PSKOV @@ -74,6 +82,10 @@ PSKOV Tool Education +
+ EN + RU +

Education: 03. Site @@ -101,7 +113,7 @@ Education: 03. Site

Table of contents

Some time later you have the following files in your site directory:

Let's look at their contents closer.

-

02. Investigate cfg file

-

cfg file has the following contents:

+

02. Investigate pskov.cfg file

+

pskov.cfg file has the following contents:

input = .
 item = item.template
 
-

cfg is an INI file with the following keys specified:

+

pskov.cfg is an INI file with the following keys specified:

@@ -149,7 +161,7 @@ item = item.template
-

In our case, item.template file is located alongside cfg, so we use . to denote current directory.

+

In our case, item.template file is located alongside pskov.cfg, so we use . to denote current directory.

03. Investigate item.template file

item.template file has the following contents:

@@ -192,7 +204,7 @@ PSKOV_ITEM_CONTENTS PSKOV_ITEM_TITLE -Provides title from Title: part of page's header section +Value of Title key of the page's Markdown file PSKOV_ITEM_CONTENTS @@ -203,7 +215,7 @@ PSKOV_ITEM_CONTENTS

Notes:

  • other PSKOV constants are described later
  • -
  • page's header section is described below
  • +
  • page's Markdown file is described below

04. Investigate about.md and cv.md files

@@ -231,17 +243,17 @@ PSKOV_ITEM_CONTENTS - + - + - + @@ -267,7 +279,7 @@ PSKOV_ITEM_CONTENTS

05. Launch LFSA

Launch LFSA so that it points to directory with the files we just observed:

-
$ /path/to/lfsa-201905.py /path/to/dir/01.TwoPages
+
$ /path/to/lfsa_1.0.0.py /path/to/dir/01.TwoPages
 

You should see output similar to this:

DIR: '/Users/kornerr/p/site-pskov-sample/01.TwoPages'
@@ -279,8 +291,8 @@ PORT: '8000'
 
  • Go to Tool page
  • Make sure
      -
    • Path: points to the same directory you specified before
    • -
    • Input directory: and Item template: have values from cfg
  • +
  • Path points to the same directory you specified before
  • +
  • Input directory and Item template have values from pskov.cfg
  • Press Generate button to generate HTML files right where Markdown ones reside
  • Open generated about.html from the site's directory
  • You should see your web site running locally
  • @@ -288,7 +300,7 @@ PORT: '8000'

    07. Summary

    You have successfully generated a web site with two pages. Check out the result.

    -

    Introduced PSKOV constants include:

    +

    Introduced PSKOV constants include:

    Header constantHeader key Description
    Title:Title Provides value for PSKOV_ITEM_TITLE constant when generating HTML out of Markdown
    Slug:Slug Tells PSKOV that particular Markdown file should be saved under <slug>.html filename
    @@ -299,7 +311,7 @@ PORT: '8000' - + @@ -326,21 +338,21 @@ PORT: '8000'
    PSKOV_ITEM_TITLEProvides title from Title: part of page's header sectionValue of Title key of the page's Markdown file
    PSKOV_ITEM_CONTENTS
    -

    Introduced header constants include:

    +

    Introduced header keys include:

    - + - + - + @@ -363,6 +375,11 @@ PORT: '8000'
    Header constantHeader key Description
    Title:Title Provides value for PSKOV_ITEM_TITLE constant when generating HTML out of Markdown
    Slug:Slug Tells PSKOV that particular Markdown file should be saved under <slug>.html filename

    + diff --git a/pskov/en/education.03.site.md b/pskov/en/education.03.site.md index 069d708..3b0e22e 100644 --- a/pskov/en/education.03.site.md +++ b/pskov/en/education.03.site.md @@ -1,5 +1,5 @@ Title: Education: 03. Site -Date: 2019-05-14 00:00 +Date: 2019-06-18 00:00 Category: Page Slug: education.03.site Lang: en @@ -17,7 +17,7 @@ Estimated completion time: 10 minutes. **Table of contents** * [01. Inspiration](#inspiration) -* [02. Investigate `cfg` file](#cfg) +* [02. Investigate `pskov.cfg` file](#cfg) * [03. Investigate `item.template` file](#item) * [04. Investigate `about.md` and `cv.md` files](#md) * [05. Launch LFSA](#lfsa) @@ -37,7 +37,7 @@ You set on to create the following pages: Some time later you have the following files in your [site directory][01-files]: -* cfg +* pskov.cfg * item.template * about.md * cv.md @@ -46,23 +46,23 @@ Let's look at their contents closer. -## 02. Investigate `cfg` file +## 02. Investigate `pskov.cfg` file -`cfg` file has the following contents: +`pskov.cfg` file has the following contents: ``` input = . item = item.template ``` -`cfg` is an [INI file][ini-file] with the following keys specified: +`pskov.cfg` is an [INI file][ini-file] with the following keys specified: | Key | Description | |---|---| | `input` | Points to a directory where `item`'s file is located | | `item` | Points to an HTML template file that is used to generate HTML files out of Markdown ones | -In our case, `item.template` file is located alongside `cfg`, so we use `.` to denote current directory. +In our case, `item.template` file is located alongside `pskov.cfg`, so we use `.` to denote current directory. @@ -105,13 +105,13 @@ As you can see, `item.template` is an average HTML file with two **PSKOV** const | PSKOV constant | Description | |---|---| -| `PSKOV_ITEM_TITLE` | Provides title from `Title:` part of page's header section | +| `PSKOV_ITEM_TITLE` | Value of `Title` key of the page's Markdown file | | `PSKOV_ITEM_CONTENTS` | Provides HTML contents generated out of Markdown contents | **Notes**: * other **PSKOV** constants are described later -* page's header section is described below +* page's Markdown file is described below @@ -142,10 +142,10 @@ As you can see, `item.template` is an average HTML file with two **PSKOV** const `about.md` starts with a so-called header section: -| Header constant | Description | +| Header key | Description | |---|---| -| `Title:` | Provides value for `PSKOV_ITEM_TITLE` constant when generating HTML out of Markdown | -| `Slug:` | Tells **PSKOV** that particular Markdown file should be saved under `.html` filename | +| `Title` | Provides value for `PSKOV_ITEM_TITLE` constant when generating HTML out of Markdown | +| `Slug` | Tells **PSKOV** that particular Markdown file should be saved under `.html` filename | The rest of `about.md` contents is what any Markdown file looks like. @@ -178,7 +178,7 @@ As you can see, there's nothing new in `cv.md` except for a Markdown table. Launch [LFSA][lfsa] so that it points to directory with the files we just observed: ``` -$ /path/to/lfsa-201905.py /path/to/dir/01.TwoPages +$ /path/to/lfsa_1.0.0.py /path/to/dir/01.TwoPages ``` You should see output similar to this: @@ -196,8 +196,8 @@ Now it's finally time to generate your personal web site: * Go to [Tool][tool] page * Make sure - * `Path:` points to the same directory you specified before - * `Input directory:` and `Item template:` have values from `cfg` + * `Path` points to the same directory you specified before + * `Input directory` and `Item template` have values from `pskov.cfg` * Press `Generate` button to generate HTML files right where Markdown ones reside * Open generated `about.html` from the site's directory * You should see your web site running locally @@ -208,11 +208,11 @@ Now it's finally time to generate your personal web site: You have successfully generated a web site with two pages. [Check out the result][01-sample]. -Introduced PSKOV constants include: +Introduced **PSKOV** constants include: | PSKOV constant | Description | |---|---| -| `PSKOV_ITEM_TITLE` | Provides title from `Title:` part of page's header section | +| `PSKOV_ITEM_TITLE` | Value of `Title` key of the page's Markdown file | | `PSKOV_ITEM_CONTENTS` | Provides HTML contents generated out of Markdown contents | Introduced configuration keys include: @@ -222,12 +222,12 @@ Introduced configuration keys include: | `input` | Points to a directory where `item`'s file is located | | `item` | Points to an HTML template file that is used to generate HTML files out of Markdown ones | -Introduced header constants include: +Introduced header keys include: -| Header constant | Description | +| Header key | Description | |---|---| -| `Title:` | Provides value for `PSKOV_ITEM_TITLE` constant when generating HTML out of Markdown | -| `Slug:` | Tells **PSKOV** that particular Markdown file should be saved under `.html` filename | +| `Title` | Provides value for `PSKOV_ITEM_TITLE` constant when generating HTML out of Markdown | +| `Slug` | Tells **PSKOV** that particular Markdown file should be saved under `.html` filename |

    Education: 04. Language @@ -101,7 +113,7 @@ Education: 04. Language

    Table of contents

    + diff --git a/pskov/en/education.04.lang.md b/pskov/en/education.04.lang.md index fd2f344..aeb975c 100644 --- a/pskov/en/education.04.lang.md +++ b/pskov/en/education.04.lang.md @@ -1,5 +1,5 @@ Title: Education: 04. Language -Date: 2019-05-21 00:00 +Date: 2019-06-18 00:00 Category: Page Slug: education.04.lang Lang: en @@ -17,7 +17,7 @@ Estimated completion time: 10 minutes. **Table of contents** * [01. Localization](#localization) -* [02. Investigate `cfg` file](#cfg) +* [02. Investigate `pskov.cfg` file](#cfg) * [03. Investigate template files](#item) * [04. Investigate Markdown files](#md) * [05. Launch LFSA and generate the site](#gen) @@ -31,7 +31,7 @@ Now that you have your web site in English you start to wonder why there's no Ru You set on to create the following [directory structure][02-files]: -* `cfg` +* `pskov.cfg` * `en/item.template` * `en/about.md` * `en/cv.md` @@ -43,9 +43,9 @@ Let's look at the contents of these files closer. -## 02. Investigate `cfg` file +## 02. Investigate `pskov.cfg` file -`cfg` file has the following contents: +`pskov.cfg` file has the following contents: ``` input = en;ru @@ -112,7 +112,7 @@ Language selection uses new **PSKOV** constant: | PSKOV constant | Description | |---|---| -| `PSKOV_ITEM_URL` | Provides generated page's file name: `.html` | +| `PSKOV_ITEM_URL` | Provides generated page's file name | As you see, `PSKOV_ITEM_URL` is all you need to have your page in as many languages as you please. @@ -120,7 +120,7 @@ As you see, `PSKOV_ITEM_URL` is all you need to have your page in as many langua ## 04. Investigate Markdown files -`en/about.md` and `en/cv.md` files look almost exactly as [before][prev]. `ru/about.md` and `ru/cv.md` are simply Russian variants of the same pages. +`en/about.md` and `en/cv.md` files look almost exactly as [before][prev]. `ru/about.md` and `ru/cv.md` are simply Russian variants of corresponding pages. For example, `ru/cv.md` has the following contents: @@ -140,7 +140,7 @@ For example, `ru/cv.md` has the following contents: | Звания | * академик ИАХ (1898)
    * действительный член ИАХ (1903) | ``` -**Note**: Russian page has exactly the same `Slug:` value as English one. +**Note**: Russian page has exactly the same `Slug` value as English one.
    @@ -149,7 +149,7 @@ For example, `ru/cv.md` has the following contents: Launch [LFSA][lfsa] so that it points to directory with the files we just observed: ``` -$ /path/to/lfsa-201905.py /path/to/dir/02.Language +$ /path/to/lfsa_1.0.0.py /path/to/dir/02.Language ``` Generate the site: @@ -169,7 +169,7 @@ Introduced PSKOV constants include: | PSKOV constant | Description | |---|---| -| `PSKOV_ITEM_URL` | Provides generated page's file name: `.html` | +| `PSKOV_ITEM_URL` | Provides generated page's file name |

    Education: 05. Blog @@ -96,15 +108,15 @@ Education: 05. Blog

    -

    In this document we create "dynamic" pages like blog posts.

    +

    In this document we create "dynamic" pages for a blog.

    Estimated completion time: 20 minutes.

    Table of contents

    01. Blog

    -

    So, you have your web site in both English and Russian. You start to feel the need to constantly share your thoughts with the world as blog posts.

    +

    So, you have your web site in both English and Russian. You start to feel the need to regularly share your thoughts with the world as blog posts.

    You set on to create the following directory structure:

    -

    Previews have no <head>, <body>, and similar full page HTML tags. Previews represent sections inserted into index (summary) files.

    +

    Previews have no <head>, <body>, and similar full page HTML tags. Previews represent sections inserted into preview pages.

    Preview itself is referenced by PSKOV_PREVIEW constant:

    @@ -350,12 +362,12 @@ PSKOV_PREVIEW - +
    PSKOV_PREVIEWProvides contents from a Markdown file limited by previewSize characters (approximately)Provides contents of a Markdown file limited by previewSize characters (approximately)

    -

    05. Investigate index (summary) templates

    +

    05. Investigate templates of preview pages

    • en/blog/index.template contents:

      - - - - Collapsed for brevity - - - -
      @@ -411,7 +423,6 @@ PSKOV_PAGINATION
       
    • beginning and ending were collapsed for brevity
    • PSKOV_INDEX_URL constant is used to provide language selection
    -

    Index (summary) files are used to host previews.

    Here are new PSKOV constants explained:

    @@ -423,21 +434,21 @@ PSKOV_PAGINATION - + - + - +
    PSKOV_INDEX_URLProvides generated page's file name: <previewsPageBaseName><id>.htmlProvides generated preview page file name: <previewsPageBaseName><id>.html
    PSKOV_PREVIEWSProvides a combination of PSKOV_PREVIEW sectionsProvides a set of previews
    PSKOV_PAGINATIONProvides pagination section to navigate index (summary) pagesProvides pagination section to navigate preview pages

    06. Investigate pagination templates

    -

    Pagination templates represent sections used to navigate index (summary) pages.

    +

    Pagination templates represent HTML sections to navigate preview pages.

    There are free pagination templates:

    @@ -448,16 +459,16 @@ PSKOV_PAGINATION - - + + - - + + - - + +
    prevIs used for the last index (summary) page because we can only go backwardsPreviousA visitor can only go backwards
    nextIs used for the first index (summary) page because we can only go forwardNextA visitor can only go forward
    bothIs used for intermediate index (summary) pages because we can either go backwards, or forwardBothA visitor can either go backwards, or forward
    @@ -501,19 +512,19 @@ PSKOV_PAGINATION PSKOV_PAGE_ID -Provides index (summary) page id starting from 1 +Provides preview page id starting from 1 PSKOV_PAGES_COUNT -Provides total number of index (summary) pages generated +Provides total number of generated preview pages PSKOV_PREV_PAGE_URL -Provides previous index (summary) page file name +Provides previous preview page file name PSKOV_NEXT_PAGE_URL -Provides next index (summary) page file name +Provides next preview page file name @@ -530,17 +541,17 @@ PSKOV_PAGINATION [bullocks]: https://upload.wikimedia.org/wikipedia/commons/c/cb/Walentin_Aleksandrovich_Serov_Bullocks.jpg
    -

    Date is used to sort blog posts by date in ascending order:

    +

    Date is used to sort blog posts by date in descending order:

    - + - + @@ -548,18 +559,18 @@ PSKOV_PAGINATION

    08. Launch LFSA and generate the site

    Launch LFSA so that it points to directory with the files we just observed:

    -
    $ /path/to/lfsa-201905.py /path/to/dir/03.Blog
    +
    $ /path/to/lfsa_1.0.0.py /path/to/dir/03.Blog
     

    Generate the site:

    • Go to Tool page
    • Press Generate button
    • Open generated en/blog/index.html or ru/blog/index.html from the site's directory locally
    • -
    • Navigate index (summary) pages to make sure everything works fine
    • +
    • Navigate preview pages to make sure everything works fine

    09. Summary

    -

    You have successfully generated a web site with "constant" and "dynamic" pages. Check out the result.

    +

    You have successfully generated a web site with "dynamic" blog posts. Check out the result.

    Introduced PSKOV constants include:

    Header constantHeader key Description
    Date:Date Provides value for PSKOV_ITEM_DATE constant when generating HTML out of Markdown
    @@ -571,39 +582,39 @@ PSKOV_PAGINATION - + - + - + - + - + - + - + - + - +
    PSKOV_ITEM_DATEProvides date from Date: part of page's header sectionValue of Date key of the page's Markdown file
    PSKOV_PREVIEWProvides contents from a Markdown file limited by previewSize characters (approximately)Provides contents of a Markdown file limited by previewSize characters (approximately)
    PSKOV_INDEX_URLProvides generated page's file name: <previewsPageBaseName><id>.htmlProvides generated preview page file name: <previewsPageBaseName><id>.html
    PSKOV_PREVIEWSProvides a combination of PSKOV_PREVIEW sectionsProvides a set of previews
    PSKOV_PAGINATIONProvides pagination section to navigate index (summary) pagesProvides pagination section to navigate preview pages
    PSKOV_PAGE_IDProvides index (summary) page id starting from 1Provides preview page id starting from 1
    PSKOV_PAGES_COUNTProvides total number of index (summary) pages generatedProvides total number of generated preview pages
    PSKOV_PREV_PAGE_URLProvides previous index (summary) page file nameProvides previous preview page file name
    PSKOV_NEXT_PAGE_URLProvides next index (summary) page file nameProvides next preview page file name
    @@ -618,58 +629,58 @@ PSKOV_PAGINATION preview -Points to an HTML template file that is used to generate HTML previews out of the first previewSize (approximately) characters of Markdown files +Points to an HTML template that is used to generate HTML preview out of the first previewSize (approximately) characters for each Markdown file index -Points to an HTML template file that is used to generate HTML index (summary) files to host previews +Points to an HTML template that is used to generate preview page to host previews paginationPrev -Points to an HTML template file that is used to generate pagination section used by the last index (summary) file +Points to an HTML template that is used to generate pagination section to navigate backwards paginationNext -Points to an HTML template file that is used to generate pagination section used by the first index (summary) file +Points to an HTML template that is used to generate pagination section to navigate forward paginationPrevNext -Points to an HTML template file that is used to generate pagination section used by index (summary) files except the ones at the beginning and at the end +Points to an HTML template that is used to generate pagination section previewSize -How many characters (approximately) to take out of a Markdown file to generate an HTML preview +How many characters (approximately) to take out of a Markdown file to generate a preview previewEnding -String to use at the end of HTML previews +String to use at the end of each preview previewsPerPage -Number of HTML previews hosted by single index (summary) file +Maximum number of previews hosted by a preview page previewsPageBaseName -Index (summary) file base name +Base file name for preview pages -

    Introduced header constants include:

    +

    Introduced header keys include:

    - + - +
    Header constantHeader key Description
    Date:Date Provides value for PSKOV_ITEM_DATE constant when generating HTML out of Markdown
    -

    This was the final document to make you proficient in generating static sites with PSKOV. If you like what we do, support us by joining our group at Twitter, Facebook, or VK.

    +

    This was the final document to make you proficient in generating static sites with PSKOV. If you like what we do, join us at VK, Twitter, or Facebook.

    Now use PSKOV to generate your very own web site!

    @@ -689,6 +700,11 @@ PSKOV_PAGINATION

    + diff --git a/pskov/en/education.05.blog.md b/pskov/en/education.05.blog.md index 53c0227..ce8fde8 100644 --- a/pskov/en/education.05.blog.md +++ b/pskov/en/education.05.blog.md @@ -10,17 +10,17 @@ Lang: en
    -In this document we create "dynamic" pages like blog posts. +In this document we create "dynamic" pages for a blog. Estimated completion time: 20 minutes. **Table of contents** * [01. Blog](#blog) -* [02. Investigate `cfg` file](#cfg) +* [02. Investigate `pskov.cfg` file](#cfg) * [03. Investigate item templates of the blog](#item) * [04. Investigate preview templates](#preview) -* [05. Investigate index (summary) templates](#index) +* [05. Investigate templates of preview pages](#index) * [06. Investigate pagination templates](#pagination) * [07. Investigate Markdown files](#md) * [08. Launch LFSA and generate the site](#gen) @@ -30,11 +30,11 @@ Estimated completion time: 20 minutes. ## 01. Blog -So, you have your web site in both English and Russian. You start to feel the need to constantly share your thoughts with the world as blog posts. +So, you have your web site in both English and Russian. You start to feel the need to regularly share your thoughts with the world as blog posts. You set on to create the following [directory structure][03-files]: -* `cfg` +* `pskov.cfg` * `en/blog/` * `item.template` * `index.template` @@ -78,9 +78,9 @@ Let's look at the contents of these files closer. -## 02. Investigate `cfg` file +## 02. Investigate `pskov.cfg` file -`cfg` file has the following contents: +`pskov.cfg` file has the following contents: ``` input = en/page;ru/page;en/blog;ru/blog @@ -96,26 +96,26 @@ previewsPerPage = 3 previewPageBaseName = index ``` -Apart from already used `input` and `item` keys, we have quite a lot of new ones. Let's break them down: +You already met `input` and `item` keys. Let's see into new ones: | Key | Description | |---|---| -| `preview` | Points to an HTML template file that is used to generate HTML previews out of the first `previewSize` (approximately) characters of Markdown files | -| `index` | Points to an HTML template file that is used to generate HTML index (summary) files to host previews | -| `paginationPrev` | Points to an HTML template file that is used to generate pagination section used by the *last* index (summary) file | -| `paginationNext` | Points to an HTML template file that is used to generate pagination section used by the *first* index (summary) file | -| `paginationPrevNext` | Points to an HTML template file that is used to generate pagination section used by index (summary) files *except the ones at the beginning and at the end* | -| `previewSize` | How many characters (approximately) to take out of a Markdown file to generate an HTML preview | -| `previewEnding` | String to use at the end of HTML previews | -| `previewsPerPage` | Number of HTML previews hosted by single index (summary) file | -| `previewsPageBaseName` | Index (summary) file base name | +| `preview` | Points to an HTML template that is used to generate HTML preview out of the first `previewSize` (approximately) characters for each Markdown file | +| `index` | Points to an HTML template that is used to generate preview page to host previews | +| `paginationPrev` | Points to an HTML template that is used to generate pagination section to navigate backwards | +| `paginationNext` | Points to an HTML template that is used to generate pagination section to navigate forward | +| `paginationPrevNext` | Points to an HTML template that is used to generate pagination section | +| `previewSize` | How many characters (approximately) to take out of a Markdown file to generate a preview | +| `previewEnding` | String to use at the end of each preview | +| `previewsPerPage` | Maximum number of previews hosted by a preview page | +| `previewsPageBaseName` | Base file name for preview pages | In our case: * we restrict previews to `200` characters in size (approximately) * we use `. . .` string at the end of each preview -* index (summary) files host `3` previews maximum -* index (summary) files are saved as `index.html`, `index2.html`, `index3.html`, etc. +* preview pages host `3` previews maximum +* preview pages are saved as `index.html`, `index2.html`, `index3.html`, etc. @@ -190,15 +190,15 @@ As you can see, both files look similar to `item.template` files we saw [before] The changes include: -* new URLs to reference pages in `page` directory and first index (summary) file in `blog` directory -* title is now referenced inside `contents` section as a link to complete page +* new URLs to reference pages in `page` directory and the first preview page in `blog` directory +* title is referenced inside `contents` section as a link pointing to a complete blog post * date is referenced to highlight relationship among different blog posts in time Date reference uses new `PSKOV_ITEM_DATE` constant: | PSKOV constant | Description | |---|---| -| `PSKOV_ITEM_DATE` | Provides date from `Date:` part of page's header section | +| `PSKOV_ITEM_DATE` | Value of `Date` key of the page's Markdown file | @@ -234,17 +234,17 @@ Date reference uses new `PSKOV_ITEM_DATE` constant:
    ``` -Previews have no ``, ``, and similar full page HTML tags. Previews represent sections inserted into index (summary) files. +Previews have no ``, ``, and similar full page HTML tags. Previews represent sections inserted into preview pages. Preview itself is referenced by `PSKOV_PREVIEW` constant: | PSKOV constant | Description | |---|---| -| `PSKOV_PREVIEW` | Provides contents from a Markdown file limited by `previewSize` characters (approximately) | +| `PSKOV_PREVIEW` | Provides contents of a Markdown file limited by `previewSize` characters (approximately) | -## 05. Investigate index (summary) templates +## 05. Investigate templates of preview pages * `en/blog/index.template` contents: @@ -305,29 +305,27 @@ Preview itself is referenced by `PSKOV_PREVIEW` constant: * beginning and ending were collapsed for brevity * `PSKOV_INDEX_URL` constant is used to provide language selection -Index (summary) files are used to host previews. - Here are new **PSKOV** constants explained: | PSKOV constant | Description | |---|---| -| `PSKOV_INDEX_URL` | Provides generated page's file name: `.html` | -| `PSKOV_PREVIEWS` | Provides a combination of `PSKOV_PREVIEW` sections | -| `PSKOV_PAGINATION` | Provides pagination section to navigate index (summary) pages | +| `PSKOV_INDEX_URL` | Provides generated preview page file name: `.html` | +| `PSKOV_PREVIEWS` | Provides a set of previews | +| `PSKOV_PAGINATION` | Provides pagination section to navigate preview pages | ## 06. Investigate pagination templates -Pagination templates represent sections used to navigate index (summary) pages. +Pagination templates represent HTML sections to navigate preview pages. There are free pagination templates: | Pagination template | Description | |---|---| -| prev | Is used for the last index (summary) page because we can only go backwards | -| next | Is used for the first index (summary) page because we can only go forward | -| both | Is used for intermediate index (summary) pages because we can either go backwards, or forward | +| Previous | A visitor can only go backwards | +| Next | A visitor can only go forward | +| Both | A visitor can either go backwards, or forward | Let's look at English pagination templates: @@ -373,10 +371,10 @@ Here are new **PSKOV** constants we used: | PSKOV constant | Description | |---|---| -| `PSKOV_PAGE_ID` | Provides index (summary) page id starting from `1` | -| `PSKOV_PAGES_COUNT` | Provides total number of index (summary) pages generated | -| `PSKOV_PREV_PAGE_URL` | Provides previous index (summary) page file name | -| `PSKOV_NEXT_PAGE_URL` | Provides next index (summary) page file name | +| `PSKOV_PAGE_ID` | Provides preview page id starting from `1` | +| `PSKOV_PAGES_COUNT` | Provides total number of generated preview pages | +| `PSKOV_PREV_PAGE_URL` | Provides previous preview page file name | +| `PSKOV_NEXT_PAGE_URL` | Provides next preview page file name | @@ -396,11 +394,11 @@ Markdown files represent blog posts and they look almost like Markdown files for [bullocks]: https://upload.wikimedia.org/wikipedia/commons/c/cb/Walentin_Aleksandrovich_Serov_Bullocks.jpg ``` -Date is used to sort blog posts by date in ascending order: +Date is used to sort blog posts by date in descending order: -| Header constant | Description | +| Header key | Description | |---|---| -| `Date:` | Provides value for `PSKOV_ITEM_DATE` constant when generating HTML out of Markdown | +| `Date` | Provides value for `PSKOV_ITEM_DATE` constant when generating HTML out of Markdown | @@ -409,7 +407,7 @@ Date is used to sort blog posts by date in ascending order: Launch [LFSA][lfsa] so that it points to directory with the files we just observed: ``` -$ /path/to/lfsa-201905.py /path/to/dir/03.Blog +$ /path/to/lfsa_1.0.0.py /path/to/dir/03.Blog ``` Generate the site: @@ -417,49 +415,49 @@ Generate the site: * Go to [Tool][tool] page * Press `Generate` button * Open generated `en/blog/index.html` or `ru/blog/index.html` from the site's directory locally -* Navigate index (summary) pages to make sure everything works fine +* Navigate preview pages to make sure everything works fine ## 09. Summary -You have successfully generated a web site with "constant" and "dynamic" pages. [Check out the result][03-sample]. +You have successfully generated a web site with "dynamic" blog posts. [Check out the result][03-sample]. Introduced PSKOV constants include: | PSKOV constant | Description | |---|---| -| `PSKOV_ITEM_DATE` | Provides date from `Date:` part of page's header section | -| `PSKOV_PREVIEW` | Provides contents from a Markdown file limited by `previewSize` characters (approximately) | -| `PSKOV_INDEX_URL` | Provides generated page's file name: `.html` | -| `PSKOV_PREVIEWS` | Provides a combination of `PSKOV_PREVIEW` sections | -| `PSKOV_PAGINATION` | Provides pagination section to navigate index (summary) pages | -| `PSKOV_PAGE_ID` | Provides index (summary) page id starting from `1` | -| `PSKOV_PAGES_COUNT` | Provides total number of index (summary) pages generated | -| `PSKOV_PREV_PAGE_URL` | Provides previous index (summary) page file name | -| `PSKOV_NEXT_PAGE_URL` | Provides next index (summary) page file name | +| `PSKOV_ITEM_DATE` | Value of `Date` key of the page's Markdown file | +| `PSKOV_PREVIEW` | Provides contents of a Markdown file limited by `previewSize` characters (approximately) | +| `PSKOV_INDEX_URL` | Provides generated preview page file name: `.html` | +| `PSKOV_PREVIEWS` | Provides a set of previews | +| `PSKOV_PAGINATION` | Provides pagination section to navigate preview pages | +| `PSKOV_PAGE_ID` | Provides preview page id starting from `1` | +| `PSKOV_PAGES_COUNT` | Provides total number of generated preview pages | +| `PSKOV_PREV_PAGE_URL` | Provides previous preview page file name | +| `PSKOV_NEXT_PAGE_URL` | Provides next preview page file name | Introduced configuration keys include: | Key | Description | |---|---| -| `preview` | Points to an HTML template file that is used to generate HTML previews out of the first `previewSize` (approximately) characters of Markdown files | -| `index` | Points to an HTML template file that is used to generate HTML index (summary) files to host previews | -| `paginationPrev` | Points to an HTML template file that is used to generate pagination section used by the *last* index (summary) file | -| `paginationNext` | Points to an HTML template file that is used to generate pagination section used by the *first* index (summary) file | -| `paginationPrevNext` | Points to an HTML template file that is used to generate pagination section used by index (summary) files *except the ones at the beginning and at the end* | -| `previewSize` | How many characters (approximately) to take out of a Markdown file to generate an HTML preview | -| `previewEnding` | String to use at the end of HTML previews | -| `previewsPerPage` | Number of HTML previews hosted by single index (summary) file | -| `previewsPageBaseName` | Index (summary) file base name | - -Introduced header constants include: - -| Header constant | Description | +| `preview` | Points to an HTML template that is used to generate HTML preview out of the first `previewSize` (approximately) characters for each Markdown file | +| `index` | Points to an HTML template that is used to generate preview page to host previews | +| `paginationPrev` | Points to an HTML template that is used to generate pagination section to navigate backwards | +| `paginationNext` | Points to an HTML template that is used to generate pagination section to navigate forward | +| `paginationPrevNext` | Points to an HTML template that is used to generate pagination section | +| `previewSize` | How many characters (approximately) to take out of a Markdown file to generate a preview | +| `previewEnding` | String to use at the end of each preview | +| `previewsPerPage` | Maximum number of previews hosted by a preview page | +| `previewsPageBaseName` | Base file name for preview pages | + +Introduced header keys include: + +| Header key | Description | |---|---| -| `Date:` | Provides value for `PSKOV_ITEM_DATE` constant when generating HTML out of Markdown | +| `Date` | Provides value for `PSKOV_ITEM_DATE` constant when generating HTML out of Markdown | -This was the final document to make you proficient in generating static sites with **PSKOV**. If you like what we do, support us by joining our group at [Twitter][tw], [Facebook][fb], or [VK][vk]. +This was the final document to make you proficient in generating static sites with **PSKOV**. If you like what we do, join us at [VK][vk], [Twitter][tw], or [Facebook][fb]. Now use **PSKOV** to generate your very own web site! @@ -477,6 +475,6 @@ Now use **PSKOV** to generate your very own web site! [lfsa]: http://opengamestudio.org/lfsa [tool]: http://opengamestudio.org/pskov +[vk]: https://vk.com/opengamestudo [tw]: https://twitter.com/OpenGameStudio [fb]: https://www.facebook.com/groups/162611230470183 -[vk]: https://vk.com/opengamestudo diff --git a/pskov/en/education.html b/pskov/en/education.html index 453e29c..280151d 100644 --- a/pskov/en/education.html +++ b/pskov/en/education.html @@ -64,9 +64,17 @@ text-align: left; color: #444; } + #footer + { + text-align: center; + } + #lang + { + float: right; + } - pskov_1.0.0 + PSKOV @@ -74,6 +82,10 @@ PSKOV Tool Education +
    + EN + RU +

    Education @@ -84,7 +96,7 @@ Education - + @@ -103,7 +115,7 @@ Education
    ItemProperty Details
    - + @@ -122,7 +134,7 @@ Education
    ItemProperty Details
    - + @@ -148,8 +160,8 @@ Education - - + +
    ItemProperty Details
    1. input
    2. item
    Introduced header constants
    1. Title:
    2. Slug:
    Introduced header keys
    1. Title
    2. Slug
    @@ -157,7 +169,7 @@ Education - + @@ -184,14 +196,14 @@ Education
    ItemProperty Details
    - + - + @@ -210,13 +222,18 @@ Education - - + +
    ItemProperty Details
    DescriptionLearn how to create "dynamic" pages like blog postsLearn how to create "dynamic" pages for a blog
    Estimated completion time
    1. preview
    2. index
    3. paginationPrev
    4. paginationNext
    5. paginationPrevNext
    6. previewSize
    7. previewEnding
    8. previewsPerPage
    9. previewsPageBaseName
    Introduced header constants
    1. Date:
    Introduced header keys
    1. Date
    -

    If you like what we do, support us by joining our group at Twitter, Facebook, or VK.

    +

    If you like what we do, join us at VK, Twitter, or Facebook.

    + diff --git a/pskov/en/education.md b/pskov/en/education.md index 62d092f..846ea15 100644 --- a/pskov/en/education.md +++ b/pskov/en/education.md @@ -1,5 +1,5 @@ Title: Education -Date: 2019-05-20 00:00 +Date: 2019-06-18 00:00 Category: Page Slug: education Lang: en @@ -8,32 +8,32 @@ Here is a set of documents to make you proficient in generating static sites wit ## [01. Why][why] -| Item | Details | +| Property | Details | |---|---| | Description | Find out why **PSKOV** was created | | Estimated completion time | 5 minutes | ## [02. Dependencies][deps] -| Item | Details | +| Property | Details | |---|---| | Description | Install dependencies to start using **PSKOV** | | Estimated completion time | 5 minutes | ## [03. Site][site] -| Item | Details | +| Property | Details | |---|---| | Description | Learn how to create a simple static web site with two pages | | Estimated completion time | 10 minutes | | Demonstration | [TwoPages][01-sample] | | Introduced PSKOV constants |
    1. `PSKOV_ITEM_TITLE`
    2. `PSKOV_ITEM_CONTENTS`
    | | Introduced configuration keys |
    1. `input`
    2. `item`
    | -| Introduced header constants |
    1. `Title:`
    2. `Slug:`
    | +| Introduced header keys |
    1. `Title`
    2. `Slug`
    | ## [04. Language][lang] -| Item | Details | +| Property | Details | |---|---| | Description | Learn how to add language selection | | Estimated completion time | 10 minutes | @@ -42,16 +42,16 @@ Here is a set of documents to make you proficient in generating static sites wit ## [05. Blog][blog] -| Item | Details | +| Property | Details | |---|---| -| Description | Learn how to create "dynamic" pages like blog posts | +| Description | Learn how to create "dynamic" pages for a blog | | Estimated completion time | 20 minutes | | Demonstration | [Blog][03-sample] | | Introduced PSKOV constants |
    1. `PSKOV_ITEM_DATE`
    2. `PSKOV_PREVIEW`
    3. `PSKOV_INDEX_URL`
    4. `PSKOV_PREVIEWS`
    5. `PSKOV_PAGINATION`
    6. `PSKOV_PAGE_ID`
    7. `PSKOV_PAGES_COUNT`
    8. `PSKOV_PREV_PAGE_URL`
    9. `PSKOV_NEXT_PAGE_URL`
    | | Introduced configuration keys |
    1. `preview`
    2. `index`
    3. `paginationPrev`
    4. `paginationNext`
    5. `paginationPrevNext`
    6. `previewSize`
    7. `previewEnding`
    8. `previewsPerPage`
    9. `previewsPageBaseName`
    | -| Introduced header constants |
    1. `Date:`
    | +| Introduced header keys |
    1. `Date`
    | -If you like what we do, support us by joining our group at [Twitter][tw], [Facebook][fb], or [VK][vk]. +If you like what we do, join us at [VK][vk], [Twitter][tw], or [Facebook][fb]. [why]: education.01.why.html [deps]: education.02.deps.html @@ -63,6 +63,6 @@ If you like what we do, support us by joining our group at [Twitter][tw], [Faceb [02-sample]: http://opengamestudio.org/pskov/sample/02.Language/en/about.html [03-sample]: http://opengamestudio.org/pskov/sample/03.Blog/en/blog/index.html +[vk]: https://vk.com/opengamestudo [tw]: https://twitter.com/OpenGameStudio [fb]: https://www.facebook.com/groups/162611230470183 -[vk]: https://vk.com/opengamestudo diff --git a/pskov/en/item.template b/pskov/en/item.template index c570cf5..721c755 100644 --- a/pskov/en/item.template +++ b/pskov/en/item.template @@ -64,9 +64,17 @@ text-align: left; color: #444; } + #footer + { + text-align: center; + } + #lang + { + float: right; + } - pskov_1.0.0 + PSKOV @@ -74,6 +82,10 @@ PSKOV Tool Education +
    + EN + RU +

    PSKOV_ITEM_TITLE @@ -81,6 +93,11 @@ PSKOV_ITEM_TITLE
    PSKOV_ITEM_CONTENTS
    + diff --git a/pskov/en/pskov_1.0.0.html b/pskov/en/pskov_1.0.0.html index 4caeeeb..8521bf9 100644 --- a/pskov/en/pskov_1.0.0.html +++ b/pskov/en/pskov_1.0.0.html @@ -64,6 +64,14 @@ text-align: left; color: #444; } + #footer + { + text-align: center; + } + #lang + { + float: right; + } table { border-collapse: collapse; @@ -98,6 +106,10 @@ PSKOV Tool Education +
    + EN + RU +

    PSKOV 1.0.0 (2019-06) @@ -182,6 +194,11 @@

    + + + + diff --git a/pskov/ru/education.01.why.md b/pskov/ru/education.01.why.md new file mode 100644 index 0000000..a2b7dfa --- /dev/null +++ b/pskov/ru/education.01.why.md @@ -0,0 +1,67 @@ +Title: Обучение: 01. Почему +Date: 2019-06-18 00:00 +Category: Page +Slug: education.01.why +Lang: ru + +| < Назад | Начало | Далее > | +|---|---|---| +| Отсутствует | [Обучение][index] | [02. Зависимости][next] | + +
    + +В этом документе мы кратко объясним причины создания **ПСКОВА**. + +Ожидаемое время завершения: 5 минут. + +**Содержание** + +* [01. Почему](#why) +* [02. Возможности](#features) + + + +## 01. Почему + +Возможно, вы знаете о существовании множества [генераторов статических сайтов][other-generators], зачем же создавать ещё один? Потому что **они не были достаточно хороши** для нужд [Студии Открытых Игр][ogs]. + +Таков список **избыточных для нас функциональностей**: + +| № | Избыточная функциональность | Детали | +|---|---|---| +| 1 | Изучение чего-либо, кроме HTML, CSS, JavaScript и Markdown | Этих технологий достаточно для создания чистого веб-сайта | +| 2 | На стороне сервера | Никто не должен иметь возможность выключить ваш сайт кроме вас | +| 3 | Установка | Отсутствие принудительных обновлений, о которых никто не просил | +| 4 | Осязаемый исходный код | Отсутствие миллионов файлов исходного кода | + + + +## 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 годов. + +
    + +| < Назад | Начало | Далее > | +|---|---|---| +| Отсутствует | [Обучение][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/ diff --git a/pskov/ru/education.02.deps.html b/pskov/ru/education.02.deps.html new file mode 100644 index 0000000..47141cb --- /dev/null +++ b/pskov/ru/education.02.deps.html @@ -0,0 +1,185 @@ + + + + + + + PSKOV + + + + +

    +Обучение: 02. Зависимости +

    +
    + + + + + + + + + + + + + + + +
    < НазадНачалоДалее >
    01. ПочемуОбучение03. Сайт
    +

    +

    В этом документы мы коснёмся зависимостей ПСКОВА и их установку.

    +

    Ожидаемое время завершения: 5 минут.

    +

    Содержание

    + +

    +

    01. Зависимости

    +

    Мы спроектировали ПСКОВ таким образом, чтобы он исполнялся в веб-браузере. Для запуска ПСКОВА вам понадобятся:

    + + + + + + + + + + + + + + + + + + + + +
    Зависимость ПСКОВАПодробности
    1Веб-браузер 2010-го года или новееПСКОВ использует ECMAScript 5 (2009), любой современный веб-браузер должен подойти
    2К локальной файловой системе доступЛФСД предоставляет ПСКОВУ доступ к вашей локальной файловой системе. Установите ЛФСД, чтобы использовать ПСКОВ.
    +

    Внимание: установите ЛФСД, чтобы использовать ПСКОВ.

    +

    +

    02. Подробности

    +

    ПСКОВ:

    +
    +

    ЛФСД:

    +
      +
    • является крошечным веб-сервером, предоставляющим доступ к локальной файловой системе
    • +
    • использует порт 8000
    • +
    • занимает менее 200 строк кода, удостоверьтесь в этом сами
    • +
    +

    + + + + + + + + + + + + + + + +
    < НазадНачалоДалее >
    01. ПочемуОбучение03. Сайт
    +
    + + + + + diff --git a/pskov/ru/education.02.deps.md b/pskov/ru/education.02.deps.md new file mode 100644 index 0000000..9b16765 --- /dev/null +++ b/pskov/ru/education.02.deps.md @@ -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] | + +
    + +В этом документы мы коснёмся зависимостей **ПСКОВА** и их установку. + +Ожидаемое время завершения: 5 минут. + +**Содержание** + +* [01. Зависимости](#deps) +* [02. Подробности](#details) + + + +## 01. Зависимости + +Мы спроектировали **ПСКОВ** таким образом, чтобы он исполнялся в веб-браузере. Для запуска **ПСКОВА** вам понадобятся: + +| № | Зависимость ПСКОВА | Подробности | +|---|---|---| +| 1 | Веб-браузер 2010-го года или новее | **ПСКОВ** использует ECMAScript 5 (2009), любой современный веб-браузер должен подойти | +| 2 | К локальной файловой системе доступ | [ЛФСД][lfsa] предоставляет **ПСКОВУ** доступ к вашей локальной файловой системе. Установите ЛФСД, чтобы использовать **ПСКОВ**. | + +**Внимание**: [установите ЛФСД][lfsa], чтобы использовать **ПСКОВ**. + + + +## 02. Подробности + +**ПСКОВ**: + +* является приложением JavaScript на стороне клиента +* не имеет прямого доступа к локальной файловой системе +* использует [ЛФСД][lfsa] для доступа к локальной файловой системе +* использует [Showdown][showdown] для перевода Markdown в HTML + +**ЛФСД**: + +* является крошечным веб-сервером, предоставляющим доступ к локальной файловой системе +* использует порт 8000 +* занимает менее 200 строк кода, [удостоверьтесь в этом][lfsa-src] сами + +
    + +| < Назад | Начало | Далее > | +|---|---|---| +| [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 diff --git a/pskov/ru/education.03.site.html b/pskov/ru/education.03.site.html new file mode 100644 index 0000000..7cd812c --- /dev/null +++ b/pskov/ru/education.03.site.html @@ -0,0 +1,387 @@ + + + + + + + PSKOV + + + + +

    +Обучение: 03. Сайт +

    +
    + + + + + + + + + + + + + + + +
    < НазадНачалоДалее >
    02. ЗависимостиОбучение04. Язык
    +

    +

    В этом документы мы создадим простой статический сайт с двумя страницами.

    +

    Ожидаемое время завершения: 10 минут.

    +

    Содержание

    + +

    +

    01. Вдохновление

    +

    Представьте, что вы являетесь выдающимся русским живописцем Валентином Серовым. Каждый раз, когда кто-либо хочет узнать о вас, он идёт на Википедию. Сегодня утром вы просыпаетесь раньше обычного с отчётливым желанием создать свой собственный веб-сайт.

    +

    Вы приступаете к созданию следующих страницы:

    +
      +
    • About me
    • +
    • Curriculum vitae (CV)
    • +
    +

    Несколько позже в директории вашего сайта у вас оказываются следующие файлы:

    +
      +
    • pskov.cfg
    • +
    • item.template
    • +
    • about.md
    • +
    • cv.md
    • +
    +

    Давайте взглянем на их содержимое.

    +

    +

    02. Изучите файл pskov.cfg

    +

    Файл pskov.cfg содержит следующее:

    +
    input = .
    +item = item.template
    +
    +

    pskov.cfg является файлом настроек со следующими ключами:

    + + + + + + + + + + + + + + + + + +
    КлючОписание
    inputУказывает на директорию с файлом, на который ссылается ключ item
    itemУказывает на файл с шаблоном HTML, который используется для генерации файлов HTML из Markdown
    +

    В нашем случае файл item.template расположен рядом с pskov.cfg, поэтому мы используем . для обозначения текущей директории.

    +

    +

    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 страницы описан ниже
    • +
    +

    +

    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.

    +

    +

    05. Запустите ЛФСД

    +

    Запустите ЛФСД с указанием директории, содержащей только что рассмотренные файлы:

    +
    $ /путь/до/lfsa_1.0.0.py /путь/до/директории/01.TwoPages
    +
    +

    Вы должны увидеть примерно такой вывод:

    +
    DIR: '/Users/kornerr/p/site-pskov-sample/01.TwoPages'
    +PORT: '8000'
    +
    +

    +

    06. Сгенерируйте сайт

    +

    Настало время сгенерировать свой собственный веб-сайт:

    +
      +
    • Перейдите на страницу Инструмент
    • +
    • Убедитесь в том, что:
        +
      • Путь указывает на нужную директорию
      • +
      • Входящая директория и Шаблон элемента содержат значения из pskov.cfg
    • +
    • Нажмите кнопку Генерировать для генерации файлов HTML рядом с файлами Markdown
    • +
    • Откройте сгенерированный файл about.html из директории сайта
    • +
    • Перед вами ваш собственный веб-сайт, запущенный локально
    • +
    +

    +

    07. Итог

    +

    Вы успешно сгенерировали веб-сайт с двумя страницами. Проверьте результат.

    +

    Представлены константы ПСКОВА:

    + + + + + + + + + + + + + + + + + +
    Константа ПСКОВАОписание
    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
    +

    + + + + + + + + + + + + + + + +
    < НазадНачалоДалее >
    02. ЗависимостиОбучение04. Язык
    +
    + + + + + diff --git a/pskov/ru/education.03.site.md b/pskov/ru/education.03.site.md new file mode 100644 index 0000000..f4e9921 --- /dev/null +++ b/pskov/ru/education.03.site.md @@ -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] | + +
    + +В этом документы мы создадим простой статический сайт с двумя страницами. + +Ожидаемое время завершения: 10 минут. + +**Содержание** + +* [01. Вдохновление](#inspiration) +* [02. Изучите файл `pskov.cfg`](#cfg) +* [03. Изучите файл `item.template`](#item) +* [04. Изучите файлы `about.md` и `cv.md`](#md) +* [05. Запустите ЛФСД](#lfsa) +* [06. Сгенерируйте сайт](#gen) +* [07. Итог](#summary) + + + +## 01. Вдохновление + +Представьте, что вы являетесь выдающимся русским живописцем Валентином Серовым. Каждый раз, когда кто-либо хочет узнать о вас, он идёт на [Википедию][serov]. Сегодня утром вы просыпаетесь раньше обычного с отчётливым желанием создать свой собственный веб-сайт. + +Вы приступаете к созданию следующих страницы: + +* About me +* Curriculum vitae (CV) + +Несколько позже в [директории вашего сайта][01-files] у вас оказываются следующие файлы: + +* pskov.cfg +* item.template +* about.md +* cv.md + +Давайте взглянем на их содержимое. + + + +## 02. Изучите файл `pskov.cfg` + +Файл `pskov.cfg` содержит следующее: + +``` +input = . +item = item.template +``` + +`pskov.cfg` является [файлом настроек][ini-file] со следующими ключами: + +| Ключ | Описание | +|---|---| +| `input` | Указывает на директорию с файлом, на который ссылается ключ `item` | +| `item` | Указывает на файл с шаблоном HTML, который используется для генерации файлов HTML из Markdown | + +В нашем случае файл `item.template` расположен рядом с `pskov.cfg`, поэтому мы используем `.` для обозначения текущей директории. + + + +## 03. Изучите файл `item.template` + +Файл `item.template` содержит следующее: + +``` + + + + + + Serov + + + +
    +

    PSKOV_ITEM_TITLE

    +
    +PSKOV_ITEM_CONTENTS +
    + +
    + + +``` + +**Внимание**: стиль схлопнут для краткости. + +Как видите, `item.template` представляет из себя обычный файл HTML с двумя константами **ПСКОВА**: + +| Константа ПСКОВА | Описание | +|---|---| +| `PSKOV_ITEM_TITLE` | Значение ключа `Title` из файла Markdown страницы | +| `PSKOV_ITEM_CONTENTS` | Предоставляет содержимое HTML, сгенерированное из Markdown | + +**Замечания**: + +* другие константы **ПСКОВА** описаны позже +* файл Markdown страницы описан ниже + + + +## 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` | Сообщает **ПСКОВУ** о том, что этот файл должен быть сохранён как `.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)
    * Full Member Academy of Arts (1903) | +``` + +Как видите, в `cv.md` нет ничего нового за исключением таблицы Markdown. + +
    + +## 05. Запустите ЛФСД + +Запустите [ЛФСД][lfsa] с указанием директории, содержащей только что рассмотренные файлы: + +``` +$ /путь/до/lfsa_1.0.0.py /путь/до/директории/01.TwoPages +``` + +Вы должны увидеть примерно такой вывод: + +``` +DIR: '/Users/kornerr/p/site-pskov-sample/01.TwoPages' +PORT: '8000' +``` + + + +## 06. Сгенерируйте сайт + +Настало время сгенерировать свой собственный веб-сайт: + +* Перейдите на страницу [Инструмент][tool] +* Убедитесь в том, что: + * `Путь` указывает на нужную директорию + * `Входящая директория` и `Шаблон элемента` содержат значения из `pskov.cfg` +* Нажмите кнопку `Генерировать` для генерации файлов HTML рядом с файлами Markdown +* Откройте сгенерированный файл `about.html` из директории сайта +* Перед вами ваш собственный веб-сайт, запущенный локально + + + +## 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` | Сообщает **ПСКОВУ** о том, что этот файл должен быть сохранён как `.html` | + +
    + +| < Назад | Начало | Далее > | +|---|---|---| +| [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 diff --git a/pskov/ru/education.04.lang.html b/pskov/ru/education.04.lang.html new file mode 100644 index 0000000..84f0122 --- /dev/null +++ b/pskov/ru/education.04.lang.html @@ -0,0 +1,281 @@ + + + + + + + PSKOV + + + + +

    +Обучение: 04. Язык +

    +
    + + + + + + + + + + + + + + + +
    < НазадНачалоДалее >
    03. СайтОбучение05. Блог
    +

    +

    В этом документе мы добавим выбор языка.

    +

    Ожидаемое время завершения: 10 минут.

    +

    Содержание

    + +

    +

    01. Локализация

    +

    Теперь, когда у вас есть собственный веб-сайт на английском, вы задумываетесь о русской версии, ведь вы же всё-таки русский!

    +

    Вы создаёте директорию со следующей структурой файлов:

    +
      +
    • pskov.cfg
    • +
    • en/item.template
    • +
    • en/about.md
    • +
    • en/cv.md
    • +
    • ru/item.template
    • +
    • ru/about.md
    • +
    • ru/cv.md
    • +
    +

    Давайте взглянем на содержимое этих файлов.

    +

    +

    02. Изучите файл pskov.cfg

    +

    Файл pskov.cfg содержит следующее:

    +
    input = en;ru
    +item = item.template
    +
    +

    Как видите, input может принимать несколько директорий, разделённых символом ;. ПСКОВ обработает каждую указанную директорию так же, как и ранее.

    +

    В нашем случае каждая из директорий - en/ и ru/ - содержит собственный шаблон item.template.

    +

    +

    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 очень похожи на виденный ранее item.template.

    +

    Изменения следующие:

    +
      +
    • использование секции <div id="lang">...</div> для отображения выбора языка
    • +
    • локализация заголовков на Английском и Русском языках
    • +
    +

    Выбор языка использует следующую новую константу ПСКОВА:

    + + + + + + + + + + + + + +
    Константа ПСКОВАОписание
    PSKOV_ITEM_URLПредоставляет имя файла генерируемой страницы
    +

    Использование PSKOV_ITEM_URL даёт вам поддержку стольких языков, сколько пожелаете.

    +

    +

    04. Изучите файлы Markdown

    +

    Файлы en/about.md и en/cv.md выглядят почти идентично виденным ранее. ru/about.md и ru/cv.md представляют собой русские версии соответствующих английских страниц.

    +

    Например, ru/cv.md содержит:

    +
     Title: Резюме
    + Slug: cv
    +
    + Здесь вы можете увидеть моё резюме в том случае, если мои произведения всё ещё вас интересуют. Я использовал современный подход ИТ для структурирования своего резюме в виде пар ключ-значение словаря (карты). Наслаждайтесь!
    +
    + | Ключ | Значение |
    + |---|---|
    + | Имя | Валентин Серов |
    + | Возраст | 46 |
    + | Семейное положение | Женат |
    + | Страна | Российская Империя |
    + | Учёба | Императорская Академия художеств |
    + | Звания | * академик ИАХ (1898) <br> * действительный член ИАХ (1903) |
    +
    +

    Внимание: русская страница использует точно такое же значение Slug, как и английская страница.

    +

    +

    05. Запустите ЛФСД и сгенерируйте сайт

    +

    Запустите ЛФСД с указанием директории, содержащей только что рассмотренные файлы:

    +
    $ /путь/до/lfsa_1.0.0.py /путь/до/директории/02.Language
    +
    +

    Сгенерируйте сайт:

    +
      +
    • Перейдите на страницу Инструмент
    • +
    • Нажмите кнопку Генерировать
    • +
    • Откройте сгенерированный файл en/about.html или ru/about.html из директории сайта
    • +
    • Переключите язык, чтобы убедиться в корректной работе
    • +
    +

    +

    06. Итог

    +

    Вы успешно добавили выбор языка. Проверьте результат.

    +

    Представлены константы ПСКОВА:

    + + + + + + + + + + + + + +
    Константа ПСКОВАОписание
    PSKOV_ITEM_URLПредоставляет имя файла генерируемой страницы
    +

    + + + + + + + + + + + + + + + +
    < НазадНачалоДалее >
    03. СайтОбучение05. Блог
    +
    + + + + + diff --git a/pskov/ru/education.04.lang.md b/pskov/ru/education.04.lang.md new file mode 100644 index 0000000..9cc8bda --- /dev/null +++ b/pskov/ru/education.04.lang.md @@ -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] | + +
    + +В этом документе мы добавим выбор языка. + +Ожидаемое время завершения: 10 минут. + +**Содержание** + +* [01. Локализация](#localization) +* [02. Изучите файл `pskov.cfg`](#cfg) +* [03. Изучите файлы шаблонов](#item) +* [04. Изучите файлы Markdown](#md) +* [05. Запустите ЛФСД и сгенерируйте сайт](#gen) +* [06. Итог](#summary) + + + +## 01. Локализация + +Теперь, когда у вас есть собственный веб-сайт на английском, вы задумываетесь о русской версии, ведь вы же всё-таки русский! + +Вы создаёте директорию со [следующей структурой файлов][02-files]: + +* `pskov.cfg` +* `en/item.template` +* `en/about.md` +* `en/cv.md` +* `ru/item.template` +* `ru/about.md` +* `ru/cv.md` + +Давайте взглянем на содержимое этих файлов. + + + +## 02. Изучите файл `pskov.cfg` + +Файл `pskov.cfg` содержит следующее: + +``` +input = en;ru +item = item.template +``` + +Как видите, `input` может принимать несколько директорий, разделённых символом `;`. **ПСКОВ** обработает каждую указанную директорию так же, как и ранее. + +В нашем случае каждая из директорий - `en/` и `ru/` - содержит собственный шаблон `item.template`. + + + +## 03. Изучите файлы шаблонов + +* Содержимое `en/item.template`: + + ``` + - - - - Схлопнуто для краткости - - - - + Serov + + + +
    + - - - - Схлопнуто для краткости - - - - + ``` +* Содержимое `ru/item.template`: + + ``` + - - - - Схлопнуто для краткости - - - - + Серов + + + +
    + - - - - Схлопнуто для краткости - - - - + ``` + +**Внимание**: начало и конец схлопнуты для краткости. + +Как видите, `en/item.template` и `ru/item.template` очень похожи на [виденный ранее][prev] `item.template`. + +Изменения следующие: + +* использование секции `
    ...
    ` для отображения выбора языка +* локализация заголовков на Английском и Русском языках + +Выбор языка использует следующую новую константу **ПСКОВА**: + +| Константа ПСКОВА | Описание | +|---|---| +| `PSKOV_ITEM_URL` | Предоставляет имя файла генерируемой страницы | + +Использование `PSKOV_ITEM_URL` даёт вам поддержку стольких языков, сколько пожелаете. + + + +## 04. Изучите файлы Markdown + +Файлы `en/about.md` и `en/cv.md` выглядят почти идентично [виденным ранее][prev]. `ru/about.md` и `ru/cv.md` представляют собой русские версии соответствующих английских страниц. + +Например, `ru/cv.md` содержит: + +``` + Title: Резюме + Slug: cv + + Здесь вы можете увидеть моё резюме в том случае, если мои произведения всё ещё вас интересуют. Я использовал современный подход ИТ для структурирования своего резюме в виде пар ключ-значение словаря (карты). Наслаждайтесь! + + | Ключ | Значение | + |---|---| + | Имя | Валентин Серов | + | Возраст | 46 | + | Семейное положение | Женат | + | Страна | Российская Империя | + | Учёба | Императорская Академия художеств | + | Звания | * академик ИАХ (1898)
    * действительный член ИАХ (1903) | +``` + +**Внимание**: русская страница использует точно такое же значение `Slug`, как и английская страница. + +
    + +## 05. Запустите ЛФСД и сгенерируйте сайт + +Запустите [ЛФСД][lfsa] с указанием директории, содержащей только что рассмотренные файлы: + +``` +$ /путь/до/lfsa_1.0.0.py /путь/до/директории/02.Language +``` + +Сгенерируйте сайт: + +* Перейдите на страницу [Инструмент][tool] +* Нажмите кнопку `Генерировать` +* Откройте сгенерированный файл `en/about.html` или `ru/about.html` из директории сайта +* Переключите язык, чтобы убедиться в корректной работе + + + +## 06. Итог + +Вы успешно добавили выбор языка. [Проверьте результат][02-sample]. + +Представлены константы **ПСКОВА**: + +| Константа ПСКОВА | Описание | +|---|---| +| `PSKOV_ITEM_URL` | Предоставляет имя файла генерируемой страницы | + +
    + +| < Назад | Начало | Далее > | +|---|---|---| +| [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 diff --git a/pskov/ru/education.05.blog.html b/pskov/ru/education.05.blog.html new file mode 100644 index 0000000..7ef631f --- /dev/null +++ b/pskov/ru/education.05.blog.html @@ -0,0 +1,712 @@ + + + + + + + PSKOV + + + + +

    +Обучение: 05. Блог +

    +
    + + + + + + + + + + + + + + + +
    < НазадНачалоДалее >
    04. ЯзыкОбучениеОтсутствует
    +

    +

    В этом документе мы создадим "динамические" страницы блога.

    +

    Ожидаемое время завершения: 20 минут.

    +

    Содержание

    + +

    +

    01. Блог

    +

    Итак, у вас есть веб-сайт на Английском и Русском языках. Вы начинаете ощущать желание регулярно делиться своими мыслями с миром в виде заметок блога.

    +

    Вы создаёте директорию со следующей структурой файлов:

    +
      +
    • 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
    • +
    +

    Давайте взглянем на содержимое этих файлов.

    +

    +

    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 и т.д.
    • +
    +

    +

    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, рассмотренные ранее.

    +

    Изменения следующие:

    +
      +
    • новые URL страниц в директории page и первой страницы с предпросмотрами в директории blog
    • +
    • заголовок используется внутри секции contents в качестве ссылки на полную заметку блога
    • +
    • дата используется для подчёркивания временной зависимости между заметками блога
    • +
    +

    Дату мы получаем из константы PSKOV_ITEM_DATE:

    + + + + + + + + + + + + + +
    Константа ПСКОВАОписание
    PSKOV_ITEM_DATEЗначение ключа Date файла Markdown
    +

    +

    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 символами (приблизительно)
    +

    +

    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Предоставляет секцию для перехода между страницами с предпросмотрами
    +

    +

    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Предоставляет имя файла следующей страницы с предпросмотрами
    +

    +

    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
    +

    +

    08. Запустите ЛФСД и сгенерируйте сайт

    +

    Запустите ЛФСД с указанием директории, содержащей только что рассмотренные файлы:

    +
    $ /путь/до/lfsa_1.0.0.py /путь/до/директории/03.Blog
    +
    +

    Сгенерируйте сайт:

    +
      +
    • Перейдите на страницу Инструмент
    • +
    • Нажмите кнопку Генерировать
    • +
    • Откройте сгенерированный файл en/blog/index.html или ru/blog/index.html из директории сайта
    • +
    • Осуществите переход между страницами предпросмотра
    • +
    +

    +

    09. Итог

    +

    Вы успешно сгенерировали веб-сайт с "динамическими" страницами блога. Проверьте результат.

    +

    Представлены константы ПСКОВА:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Константа ПСКОВАОписание
    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, Twitter или Facebook.

    +

    А теперь используйте ПСКОВ для генерация своего собственного веб-сайта!

    +

    + + + + + + + + + + + + + + + +
    < НазадНачалоДалее >
    04. ЯзыкОбучениеОтсутствует
    +
    + + + + + diff --git a/pskov/ru/education.05.blog.md b/pskov/ru/education.05.blog.md new file mode 100644 index 0000000..d159550 --- /dev/null +++ b/pskov/ru/education.05.blog.md @@ -0,0 +1,480 @@ +Title: Обучение: 05. Блог +Date: 2019-06-19 00:00 +Category: Page +Slug: education.05.blog +Lang: ru + +| < Назад | Начало | Далее > | +|---|---|---| +| [04. Язык][prev] | [Обучение][index] | Отсутствует | + +
    + +В этом документе мы создадим "динамические" страницы блога. + +Ожидаемое время завершения: 20 минут. + +**Содержание** + +* [01. Блог](#blog) +* [02. Изучите файл `pskov.cfg`](#cfg) +* [03. Изучите шаблоны элементов](#item) +* [04. Изучите шаблоны предпросмотров](#preview) +* [05. Изучите шаблоны страниц с предпросмотрами](#index) +* [06. Изучите постраничные шаблоны](#pagination) +* [07. Изучите файлы Markdown](#md) +* [08. Запустите ЛФСД и сгенерируйте сайт](#gen) +* [09. Итог](#summary) + + + +## 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` + +Давайте взглянем на содержимое этих файлов. + + + +## 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` и т.д. + + + +## 03. Изучите шаблоны элементов + +* Содержимое `en/blog/item.template`: + + ``` + - - - - Схлопнуто для краткости - - - - + + +
    +

    In the blog...

    +
    +

    + PSKOV_ITEM_TITLE +

    +

    PSKOV_ITEM_DATE

    +PSKOV_ITEM_CONTENTS +
    + +
    + + - - - - Схлопнуто для краткости - - - - + ``` +* Содержимое `ru/blog/item.template`: + + ``` + - - - - Схлопнуто для краткости - - - - + + +
    +

    В блоге...

    +
    +

    + PSKOV_ITEM_TITLE +

    +

    PSKOV_ITEM_DATE

    +PSKOV_ITEM_CONTENTS +
    + +
    + + - - - - Схлопнуто для краткости - - - - + ``` + +**Внимание**: начало и конец схлопнуты для краткости. + +Как видите, оба файла выглядят практически так же, как и файлы `item.template`, рассмотренные [ранее][prev]. + +Изменения следующие: + +* новые URL страниц в директории `page` и первой страницы с предпросмотрами в директории `blog` +* заголовок используется внутри секции `contents` в качестве ссылки на полную заметку блога +* дата используется для подчёркивания временной зависимости между заметками блога + +Дату мы получаем из константы `PSKOV_ITEM_DATE`: + +| Константа ПСКОВА | Описание | +|---|---| +| `PSKOV_ITEM_DATE` | Значение ключа `Date` файла Markdown | + + + +## 04. Изучите шаблоны предпросмотров + +* Содержимое `en/blog/preview.template`: + + ``` +
    +

    + PSKOV_ITEM_TITLE +

    +

    PSKOV_ITEM_DATE

    + PSKOV_PREVIEW + +
    + ``` + +* Содержимое `ru/blog/preview.template`: + + ``` +
    +

    + PSKOV_ITEM_TITLE +

    +

    PSKOV_ITEM_DATE

    + PSKOV_PREVIEW + +
    + ``` + +У предпросмотров нет ``, `` и прочих полностраничных тэгов HTML. Предпросмотры являются секциями, вставляемыми в страницы с предпросмотрами. + +Сам предпросмотр мы получаем из константы `PSKOV_PREVIEW`: + +| Константа ПСКОВА | Описание | +|---|---| +| `PSKOV_PREVIEW` | Предоставляет содержимое файла Markdown, ограниченное `previewSize` символами (приблизительно) | + + + +## 05. Изучите шаблоны страниц с предпросмотрами + +* Содержимое `en/blog/index.template`: + + ``` + - - - - Схлопнуто для краткости - - - - + + +
    +

    Blog

    + PSKOV_PREVIEWS + PSKOV_PAGINATION + +
    + + - - - - Схлопнуто для краткости - - - - + ``` + +* Содержимое `ru/blog/index.template`: + + ``` + - - - - Схлопнуто для краткости - - - - + + +
    +

    Блог

    + PSKOV_PREVIEWS + PSKOV_PAGINATION + +
    + + - - - - Схлопнуто для краткости - - - - + ``` + +**Замечания**: + +* начало и конец схлопнуты для краткости +* константа `PSKOV_INDEX_URL` используется для выбора языка + +Новые константы **ПСКОВА**: + +| Константа ПСКОВА | Описание | +|---|---| +| `PSKOV_INDEX_URL` | Предоставляет генерируемое имя файла страницы с предпросмотрами: `.html` | +| `PSKOV_PREVIEWS` | Предоставляет набор предпросмотров | +| `PSKOV_PAGINATION` | Предоставляет секцию для перехода между страницами с предпросмотрами | + + + +## 06. Изучите постраничные шаблоны + +Постраничные шаблоны являются секциями HTML для перехода между страницами с предпросмотрами. + +Существует три постраничных шаблона: + +| Постраничный шаблон | Описание | +|---|---| +| Предыдущий | Посетитель может перейти лишь назад | +| Следующий | Посетитель может перейти лишь вперёд | +| Оба | Посетитель может перейти либо вперёд, либо назад | + +Рассмотрим английские постраничные шаблоны: + +* Содержимое `en/blog/pagination.prev.template`: + + ``` +

    Page PSKOV_PAGE_ID of PSKOV_PAGES_COUNT

    +

    + « Newer +

    + ``` + +* Содержимое `en/blog/pagination.next.template`: + + ``` +

    Page PSKOV_PAGE_ID of PSKOV_PAGES_COUNT

    +

    + Older » +

    + ``` + +* Содержимое `en/blog/pagination.template`: + + ``` +

    Page PSKOV_PAGE_ID of PSKOV_PAGES_COUNT

    +

    + « Newer + Older » +

    + ``` + +Русские версии выглядят схожим образом. Например, содержимое `ru/blog/pagination.template`: + +``` +

    Страница PSKOV_PAGE_ID из PSKOV_PAGES_COUNT

    +

    + « Новее + Старее » +

    +``` + +Новые константы **ПСКОВА**: + +| Константа ПСКОВА | Описание | +|---|---| +| `PSKOV_PAGE_ID` | Предоставляет порядковый номер страницы с предпросмотрами, начиная с `1` | +| `PSKOV_PAGES_COUNT` | Предоставляет количество сгенерированных страниц с предпросмотрами | +| `PSKOV_PREV_PAGE_URL` | Предоставляет имя файла предыдущей страницы с предпросмотрами | +| `PSKOV_NEXT_PAGE_URL` | Предоставляет имя файла следующей страницы с предпросмотрами | + + + +## 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 | + + + +## 08. Запустите ЛФСД и сгенерируйте сайт + +Запустите [ЛФСД][lfsa] с указанием директории, содержащей только что рассмотренные файлы: + +``` +$ /путь/до/lfsa_1.0.0.py /путь/до/директории/03.Blog +``` + +Сгенерируйте сайт: + +* Перейдите на страницу [Инструмент][tool] +* Нажмите кнопку `Генерировать` +* Откройте сгенерированный файл `en/blog/index.html` или `ru/blog/index.html` из директории сайта +* Осуществите переход между страницами предпросмотра + + + +## 09. Итог + +Вы успешно сгенерировали веб-сайт с "динамическими" страницами блога. [Проверьте результат][03-sample]. + +Представлены константы **ПСКОВА**: + +| Константа ПСКОВА | Описание | +|---|---| +| `PSKOV_ITEM_DATE` | Значение ключа `Date` файла Markdown | +| `PSKOV_PREVIEW` | Предоставляет содержимое файла Markdown, ограниченное `previewSize` символами (приблизительно) | +| `PSKOV_INDEX_URL` | Предоставляет генерируемое имя файла страницы с предпросмотрами: `.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]. + +А теперь используйте **ПСКОВ** для генерация своего собственного веб-сайта! + +
    + +| < Назад | Начало | Далее > | +|---|---|---| +| [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 diff --git a/pskov/ru/education.html b/pskov/ru/education.html new file mode 100644 index 0000000..8d496f4 --- /dev/null +++ b/pskov/ru/education.html @@ -0,0 +1,241 @@ + + + + + + + PSKOV + + + + +

    +Обучение +

    +
    +

    Представленные здесь документы научат вас уверенно владеть генератором статических сайтов ПСКОВ. Советуем читать документы по порядку.

    +

    01. Почему

    + + + + + + + + + + + + + + + + + +
    СвойствоПодробности
    ОписаниеУзнайте причины создания ПСКОВА
    Ожидаемое время завершения5 минут
    +

    02. Зависимости

    + + + + + + + + + + + + + + + + + +
    СвойствоПодробности
    ОписаниеУстановите зависимости, чтобы начать использовать ПСКОВ
    Ожидаемое время завершения5 минут
    +

    03. Сайт

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    СвойствоПодробности
    ОписаниеНаучитесь создавать простой статический сайт с двумя страницами
    Ожидаемое время завершения10 минут
    ДемонстрацияДвеСтраницы
    Представленные константы ПСКОВА
    1. PSKOV_ITEM_TITLE
    2. PSKOV_ITEM_CONTENTS
    Представленные ключи настроек
    1. input
    2. item
    Представленные ключи заголовка
    1. Title
    2. Slug
    +

    04. Язык

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    СвойствоПодробности
    ОписаниеНаучитесь добавлять выбор языка
    Ожидаемое время завершения10 минут
    ДемонстрацияЯзык
    Представленные константы ПСКОВА
    1. PSKOV_ITEM_URL
    +

    05. Блог

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    СвойствоПодробности
    ОписаниеНаучитесь создавать "динамические" страницы для блога
    Ожидаемое время завершения20 минут
    ДемонстрацияБлог
    Представленные константы ПСКОВА
    1. PSKOV_ITEM_DATE
    2. PSKOV_PREVIEW
    3. PSKOV_INDEX_URL
    4. PSKOV_PREVIEWS
    5. PSKOV_PAGINATION
    6. PSKOV_PAGE_ID
    7. PSKOV_PAGES_COUNT
    8. PSKOV_PREV_PAGE_URL
    9. PSKOV_NEXT_PAGE_URL
    Представленные ключи настроек
    1. preview
    2. index
    3. paginationPrev
    4. paginationNext
    5. paginationPrevNext
    6. previewSize
    7. previewEnding
    8. previewsPerPage
    9. previewsPageBaseName
    Представленные ключи заголовка
    1. Date
    +

    Если вам нравится наш труд, присоединяйтесь к нам в VK, Twitter или Facebook.

    +
    + + + + + diff --git a/pskov/ru/education.md b/pskov/ru/education.md new file mode 100644 index 0000000..ec5a9e6 --- /dev/null +++ b/pskov/ru/education.md @@ -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] | +| Представленные константы ПСКОВА |
    1. `PSKOV_ITEM_TITLE`
    2. `PSKOV_ITEM_CONTENTS`
    | +| Представленные ключи настроек |
    1. `input`
    2. `item`
    | +| Представленные ключи заголовка |
    1. `Title`
    2. `Slug`
    | + +## [04. Язык][lang] + +| Свойство | Подробности | +|---|---| +| Описание | Научитесь добавлять выбор языка | +| Ожидаемое время завершения | 10 минут | +| Демонстрация | [Язык][02-sample] | +| Представленные константы ПСКОВА |
    1. `PSKOV_ITEM_URL`
    | + +## [05. Блог][blog] + +| Свойство | Подробности | +|---|---| +| Описание | Научитесь создавать "динамические" страницы для блога | +| Ожидаемое время завершения | 20 минут | +| Демонстрация | [Блог][03-sample] | +| Представленные константы ПСКОВА |
    1. `PSKOV_ITEM_DATE`
    2. `PSKOV_PREVIEW`
    3. `PSKOV_INDEX_URL`
    4. `PSKOV_PREVIEWS`
    5. `PSKOV_PAGINATION`
    6. `PSKOV_PAGE_ID`
    7. `PSKOV_PAGES_COUNT`
    8. `PSKOV_PREV_PAGE_URL`
    9. `PSKOV_NEXT_PAGE_URL`
    | +| Представленные ключи настроек |
    1. `preview`
    2. `index`
    3. `paginationPrev`
    4. `paginationNext`
    5. `paginationPrevNext`
    6. `previewSize`
    7. `previewEnding`
    8. `previewsPerPage`
    9. `previewsPageBaseName`
    | +| Представленные ключи заголовка |
    1. `Date`
    | + +Если вам нравится наш труд, присоединяйтесь к нам в [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 diff --git a/pskov/ru/item.template b/pskov/ru/item.template new file mode 100644 index 0000000..62e6057 --- /dev/null +++ b/pskov/ru/item.template @@ -0,0 +1,105 @@ + + + + + + + PSKOV + + + + +

    +PSKOV_ITEM_TITLE +

    +
    +PSKOV_ITEM_CONTENTS +
    + + + + + diff --git a/pskov/ru/pskov_1.0.0+ru.html b/pskov/ru/pskov_1.0.0+ru.html new file mode 100644 index 0000000..e8eed3f --- /dev/null +++ b/pskov/ru/pskov_1.0.0+ru.html @@ -0,0 +1,6931 @@ + + + + + + + pskov_1.0.0+ru + + + + +

    + ПСКОВ 1.0.0 (2019-06) +

    +
    +

    + ПСКОВ является генератором статических сайтов, работающим прямо в веб-браузере. + Этот сайт тоже сгенерирован ПСКОВОМ. Познакомьтесь с ним на странице обучения. +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + К Локальной Файловой Системе Доступ +
    Путь:Обновление...
    + Настройки + +
    Входящая директория:
    Шаблон элемента ('item'):
    Шаблон предпросмотра ('preview'):
    Шаблон страницы с предпросмотрами ('index'):
    Постраничный шаблон 'Предыдущий' ('paginationPrev'):
    Постраничный шаблон 'Следующий' ('paginationNext'):
    Постраничный шаблон 'Предыдущий/Следующий' ('paginationPrevNext'):
    Количество символов в предпросмотре:
    Строка завершения предпросмотра:
    Предпросмотров на странице:
    Базовое название страницы с предпросмотрами:
    + Новости + +
    Журнал
    +
    + + + +