iMinor adjustments - Checked for ambiguous usage of 'should' and 'could'. - Deleted _ in :id - Corrections of minor spelling errors. - Remove bmake and CLISP references. - Correct spelling errors. - Add links to websites of sbcl, ecl, multimarkdown in section 'Requirements'. - Add :title to data/articles.lisp section. - Use *bar* for *vars* and *functions* (exception: Beginning of list-item). - Use ``bar`` for ``:keywords``, booleans, inline-examples. - Use **bar** for **foo/path/** and **foo/path/file.name**. - cl-yag - Common Lisp Yet Another website Generator Err bitreich.org 70 hgit clone git://bitreich.org/cl-yag/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/cl-yag/ URL:git://bitreich.org/cl-yag/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/cl-yag/ bitreich.org 70 1Log /scm/cl-yag/log.gph bitreich.org 70 1Files /scm/cl-yag/files.gph bitreich.org 70 1Refs /scm/cl-yag/refs.gph bitreich.org 70 1Tags /scm/cl-yag/tag bitreich.org 70 1README /scm/cl-yag/file/README.md.gph bitreich.org 70 1LICENSE /scm/cl-yag/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 1commit 0ffdf3f28a508269546f0ce394cdc3f21254199f /scm/cl-yag/commit/0ffdf3f28a508269546f0ce394cdc3f21254199f.gph bitreich.org 70 1parent e763198dd927d89f6eb08566bd88693aca39e435 /scm/cl-yag/commit/e763198dd927d89f6eb08566bd88693aca39e435.gph bitreich.org 70 hAuthor: lambda URL:mailto:lambda@fnord.one bitreich.org 70 iDate: Fri, 1 Dec 2017 14:35:38 +0000 Err bitreich.org 70 i Err bitreich.org 70 iMinor adjustments Err bitreich.org 70 i- Checked for ambiguous usage of 'should' and 'could'. Err bitreich.org 70 i- Deleted _ in :id Err bitreich.org 70 i- Corrections of minor spelling errors. Err bitreich.org 70 i- Remove bmake and CLISP references. Err bitreich.org 70 i- Correct spelling errors. Err bitreich.org 70 i- Add links to websites of sbcl, ecl, multimarkdown in section 'Requirements'. Err bitreich.org 70 i- Add :title to data/articles.lisp section. Err bitreich.org 70 i- Use *bar* for *vars* and *functions* (exception: Beginning of list-item). Err bitreich.org 70 i- Use ``bar`` for ``:keywords``, booleans, inline-examples. Err bitreich.org 70 i- Use **bar** for **foo/path/** and **foo/path/file.name**. Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M README.md | 239 +++++++++++++++---------------- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 119 insertions(+), 120 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/README.md b/README.md /scm/cl-yag/file/README.md.gph bitreich.org 70 i@@ -1,18 +1,19 @@ Err bitreich.org 70 i-# README Err bitreich.org 70 i+o# README Err bitreich.org 70 i Err bitreich.org 70 i Err bitreich.org 70 i ## Introduction Err bitreich.org 70 i Err bitreich.org 70 i-cl-yag is a very lightweight, 'static site'-generator that produces **gopher** sites as well as **html** websites. Err bitreich.org 70 i-The name 'cl-yag' stands for 'Common Lisp - Yet Another website Generator'. Err bitreich.org 70 i+cl-yag is a lightweight, static-site generator that produces **gopher** sites as well as **html** websites. Err bitreich.org 70 i+The name 'cl-yag' stands for 'Common Lisp - Yet Another website Generator'. Err bitreich.org 70 i It runs without Quicklisp. Err bitreich.org 70 i Err bitreich.org 70 i Err bitreich.org 70 i ## Showcase Err bitreich.org 70 i Err bitreich.org 70 i I am using cl-yag to create and maintain my websites in the Err bitreich.org 70 i-world-wide-web (visit: *[Solene'spercent](https://dataswamp.org/~solene/)*) Err bitreich.org 70 i-as well as [in gopher-space](gopher://dataswamp.org/1/~solene/). Err bitreich.org 70 i+world-wide-web (visit: *[Solene's Err bitreich.org 70 i+percent](https://dataswamp.org/~solene/)*) as well as [in Err bitreich.org 70 i+gopher-space](gopher://dataswamp.org/1/~solene/). Err bitreich.org 70 i Err bitreich.org 70 i Err bitreich.org 70 i ## Requirements Err bitreich.org 70 i@@ -20,21 +21,17 @@ as well as [in gopher-space](gopher://dataswamp.org/1/~solene/). Err bitreich.org 70 i To use cl-yag you'll need: Err bitreich.org 70 i Err bitreich.org 70 i 1. A Common Lisp Interpreter Err bitreich.org 70 i- - cl-yag's current default is **Steel Bank Common Lisp (SBCL)**. Err bitreich.org 70 i- - **Embeddable Common Lisp (ECL)** will do fine as well. Err bitreich.org 70 i+ - cl-yag's current default is [Steel Bank Common Lisp (SBCL)](http://www.sbcl.org/). Err bitreich.org 70 i+ - [Embeddable Common Lisp (ECL)](https://common-lisp.net/project/ecl/) will do fine as well. Err bitreich.org 70 i 2. A Markdown-to-HTML Converter Err bitreich.org 70 i- - cl-yag's current default is **multimarkdown**. Err bitreich.org 70 i-3. BSD Make Err bitreich.org 70 i- - Linux-Users, cl-yag uses a BSD Makefile syntax, that isn't compatible with GNU make's. Err bitreich.org 70 i- - You need to install a port of the NetBSD make tool, called **bmake**. Err bitreich.org 70 i+ - cl-yag's current default is [multimarkdown](http://fletcherpenney.net/multimarkdown/). Err bitreich.org 70 i Err bitreich.org 70 i Err bitreich.org 70 i ## Usage Err bitreich.org 70 i Err bitreich.org 70 i-Go into your project's directory and type ``make``. You'll find your new website/gopher page in 'output/'. Err bitreich.org 70 i-If you want to get rid of everything in your 'output/' subdirectories, Err bitreich.org 70 i-type ``make clean``. Err bitreich.org 70 i-For further commands: read the Makefile. Err bitreich.org 70 i+Go into your project's directory and type ``make``. You'll find your new website/gopher page in **output/**. Err bitreich.org 70 i+If you want to get rid of everything in your **output/** subdirectories, type ``make clean``. Err bitreich.org 70 i+For further commands: read the Makefile. Err bitreich.org 70 i Read in the follwing section where to find it. Err bitreich.org 70 i Err bitreich.org 70 i Err bitreich.org 70 i@@ -43,28 +40,28 @@ Read in the follwing section where to find it. Err bitreich.org 70 i After cloning the repository, your project's directory should contain at Err bitreich.org 70 i least the following files and folders: Err bitreich.org 70 i Err bitreich.org 70 i-. Err bitreich.org 70 i- |-- LICENSE Err bitreich.org 70 i- |-- Makefile Err bitreich.org 70 i- |-- README.md Err bitreich.org 70 i- |-- data/ Err bitreich.org 70 i- | |-- 1.md Err bitreich.org 70 i- | |-- README.md Err bitreich.org 70 i- | `-- articles.lisp Err bitreich.org 70 i- |-- generator.lisp Err bitreich.org 70 i- |-- output/ Err bitreich.org 70 i- | |-- gopher/ Err bitreich.org 70 i- | `-- html/ Err bitreich.org 70 i- |-- static/ Err bitreich.org 70 i- | |-- css/style.css Err bitreich.org 70 i- | `-- img/ Err bitreich.org 70 i- `-- templates/ Err bitreich.org 70 i- |-- article.tpl Err bitreich.org 70 i- |-- gopher_head.tpl Err bitreich.org 70 i- |-- layout.tpl Err bitreich.org 70 i- |-- one-tag.tpl Err bitreich.org 70 i- |-- rss-item.tpl Err bitreich.org 70 i- `-- rss.tpl Err bitreich.org 70 i+ . Err bitreich.org 70 i+ |-- LICENSE Err bitreich.org 70 i+ |-- Makefile Err bitreich.org 70 i+ |-- README.md Err bitreich.org 70 i+ |-- data/ Err bitreich.org 70 i+ | |-- 1.md Err bitreich.org 70 i+ | |-- README.md Err bitreich.org 70 i+ | `-- articles.lisp Err bitreich.org 70 i+ |-- generator.lisp Err bitreich.org 70 i+ |-- output/ Err bitreich.org 70 i+ | |-- gopher/ Err bitreich.org 70 i+ | `-- html/ Err bitreich.org 70 i+ |-- static/ Err bitreich.org 70 i+ | |-- css/style.css Err bitreich.org 70 i+ | `-- img/ Err bitreich.org 70 i+ `-- templates/ Err bitreich.org 70 i+ |-- article.tpl Err bitreich.org 70 i+ |-- gopher_head.tpl Err bitreich.org 70 i+ |-- layout.tpl Err bitreich.org 70 i+ |-- one-tag.tpl Err bitreich.org 70 i+ |-- rss-item.tpl Err bitreich.org 70 i+ `-- rss.tpl Err bitreich.org 70 i Err bitreich.org 70 i - **Makefile** Err bitreich.org 70 i - This file exists to simplifiy the recurring execution of frequently used commands. Err bitreich.org 70 i@@ -72,25 +69,25 @@ least the following files and folders: Err bitreich.org 70 i - This is cl-yag's core library. Err bitreich.org 70 i - **static/** Err bitreich.org 70 i - This directory holds content, that needs to be published without being changed (e.g. stylesheets, js-scripts). Err bitreich.org 70 i- - If you come from 'non-static CMS'-Country: 'static/' holds, what you would put in your 'assets/' directory. Err bitreich.org 70 i+ - If you come from 'non-static CMS'-Country: **static/** holds, what you would put in your **assets/** directory. Err bitreich.org 70 i - **templates/** Err bitreich.org 70 i - The templates in this directory provide the structural skeleton(s) of the webpages and feeds you want to create. Err bitreich.org 70 i - **output/** Err bitreich.org 70 i - cl-yag puts in this directory everything ready to get deployed. Err bitreich.org 70 i- - Because cl-yag generates not only HTML, but gopher-compliant pages as well, output/ **holds two subdirectories**. Err bitreich.org 70 i- - **gopher/** : contains the website for gopher, Err bitreich.org 70 i- - **html/** : contains the website in HTML. Err bitreich.org 70 i+ - Because cl-yag generates not only HTML, but gopher-compliant pages as well, **output/** **holds two subdirectories**. Err bitreich.org 70 i+ - **gopher/** contains the website for gopher, Err bitreich.org 70 i+ - **html/** contains the website in HTML. Err bitreich.org 70 i Err bitreich.org 70 i And there is the **data/** directory, which is important enough to get a subsubsection of its own. Err bitreich.org 70 i Err bitreich.org 70 i-### The 'data/' Directory Err bitreich.org 70 i+### The data/ Directory Err bitreich.org 70 i Err bitreich.org 70 i This directory is crucial for the usage of cl-yag. Err bitreich.org 70 i Err bitreich.org 70 i **data/** contains Err bitreich.org 70 i Err bitreich.org 70 i-- the **articles.lisp configuration file**, which defines important metadata for posts and pages. Err bitreich.org 70 i-- It also holds **${id}.md**-files, which are holding your posts' and pages' content. You can use markdown to write them. Err bitreich.org 70 i+- the **articles.lisp** configuration file, which defines important metadata for posts and pages. Err bitreich.org 70 i+- It also holds **${id}.md** files, which are holding your posts' (or pages') content. You can use markdown to write them. Err bitreich.org 70 i Err bitreich.org 70 i For more information: Read section 'Configuration'. Err bitreich.org 70 i Err bitreich.org 70 i@@ -98,112 +95,116 @@ For more information: Read section 'Configuration'. Err bitreich.org 70 i ## Configuration Err bitreich.org 70 i Err bitreich.org 70 i cl-yag's main configuration file is **data/articles.lisp**. Err bitreich.org 70 i-In order to have a reliably running implementation of cl-yag, you have Err bitreich.org 70 i+In order to have a running implementation of cl-yag, you have Err bitreich.org 70 i to set most of the values in this file. Err bitreich.org 70 i Err bitreich.org 70 i **data/articles.lisp** has two parts: Err bitreich.org 70 i Err bitreich.org 70 i-1. A variable called **config**. It defines global values, that define your webpage. Err bitreich.org 70 i-2. A variable called **articles**. It defines local values, that - in turn - define individual pages/posts. Err bitreich.org 70 i+1. A variable called *config*. Its values define your webpage. Err bitreich.org 70 i+2. A variable called *articles*. Its values define your posts. Err bitreich.org 70 i Err bitreich.org 70 i-Values are assigned by placing a string (e.g. "foo") or a boolean Err bitreich.org 70 i-(i.e. 't' or 'nil') behind a keyword (e.g. ':title'). Err bitreich.org 70 i+Values are assigned by placing a string (e.g. ``"foo"``) or a boolean Err bitreich.org 70 i+(i.e. ``t`` or ``nil``) behind a keyword (e.g. ``:title``). Err bitreich.org 70 i Err bitreich.org 70 i Err bitreich.org 70 i-### The **config** Variable Err bitreich.org 70 i+### The *config* Variable Err bitreich.org 70 i Err bitreich.org 70 i-The **config** variable is used to assign the following values: Err bitreich.org 70 i+The *config* variable is used to assign the following values: Err bitreich.org 70 i Err bitreich.org 70 i - **:webmaster** Err bitreich.org 70 i - The name of the default(!) author. Err bitreich.org 70 i- - :webmaster gets used, if **:author** is omitted. (see below: 'The **articles** variable'.) Err bitreich.org 70 i+ - ``:webmaster`` gets used, if ``:author`` is omitted. (See below: 'The **articles** variable'.) Err bitreich.org 70 i - **:title** Err bitreich.org 70 i - The title of the webpage Err bitreich.org 70 i - **:description** Err bitreich.org 70 i - This text is used in the *description* field of the Atom RSS Err bitreich.org 70 i - **:url** Err bitreich.org 70 i - This needs to be the full(!) URL of your website, including(!) a final slash. Err bitreich.org 70 i- - MIND: If the url contains a tilde (~), it needs to get duplicated Err bitreich.org 70 i- - Example: https://mydomain/~~user/ is a valid url. Err bitreich.org 70 i+ - MIND: If the url contains a tilde (~), it needs to get duplicated Err bitreich.org 70 i+ - Example: ``https://mydomain/~~user/`` Err bitreich.org 70 i - **:rss-item-number** Err bitreich.org 70 i - This holds the number of latest(!) RSS items you want to get published when you generate the files. Err bitreich.org 70 i - **html** Err bitreich.org 70 i- - *t* to export html website. Set *nil* to disable. Err bitreich.org 70 i+ - ``t`` to export html website. Set ``nil`` to disable. Err bitreich.org 70 i - **gopher** Err bitreich.org 70 i- - *t* to export gopher website. Set *nil* to disable. Err bitreich.org 70 i+ - ``t`` to export gopher website. Set ``nil`` to disable. Err bitreich.org 70 i - **gopher-path** Err bitreich.org 70 i - This is the full path of the directory to access your gopher hole. Err bitreich.org 70 i - **gopher-server** Err bitreich.org 70 i- - Hostname of the gopher server. Because gopher doesn't allow relative links (like html), you need to know where you put your files. Err bitreich.org 70 i+ - Hostname of the gopher server. It needs to be included in every link. Err bitreich.org 70 i - **gopher-port** Err bitreich.org 70 i- - tcp port of the gopher server. 70 is the default port. It need to be included in every link (see: **gopher-server**). Err bitreich.org 70 i+ - tcp port of the gopher server. 70 is the default port. It needs to be included in every link. Err bitreich.org 70 i Err bitreich.org 70 i Err bitreich.org 70 i-### The **articles** Variable Err bitreich.org 70 i+### The *articles* Variable Err bitreich.org 70 i Err bitreich.org 70 i-The **articles** variable holds per page/post-metadata. Err bitreich.org 70 i-Of the following fields, only the *:author* and *:short* description could be omitted. Err bitreich.org 70 i+The *articles* variable holds post metadata. Err bitreich.org 70 i+So you need to create an entry in the *articles* variable for each of your posts. Err bitreich.org 70 i+ Err bitreich.org 70 i+Of the following keywords, only ``:author`` and ``:short`` can be omitted. Err bitreich.org 70 i Err bitreich.org 70 i-- **:short** Err bitreich.org 70 i- - The _:short_ field's value is used for displaying a really short description of the posts content on your homepage. Err bitreich.org 70 i- - If _:short_ doesn't get a value, the full article gets displayed. Err bitreich.org 70 i- - Hint: Use ``:short "view the article for the full text"``, if you don't want to display the full text of an article on your index site. Err bitreich.org 70 i-- **:id_** Err bitreich.org 70 i- - The _:id_ field holds the filename of your post/page. Err bitreich.org 70 i- - Example: ``:id "2"`` will load file ``data/2.md``. Use text instead of numbers, if you want to. Err bitreich.org 70 i- - (See section: 'The **data/** Directory'.) Err bitreich.org 70 i - **:author** Err bitreich.org 70 i- - The _:author_ field is used to display the article' author. Err bitreich.org 70 i- - If you omit it, the generator will take the name from the **:webmaster** field of the *config* variable. Err bitreich.org 70 i+ - The ``:author`` field is used to display the article's author. Err bitreich.org 70 i+ - If you omit it, the generator will take the name from the ``:webmaster`` field of the *config* variable. Err bitreich.org 70 i+- **:id** Err bitreich.org 70 i+ - The ``:id`` field holds the filename of your post/page. Err bitreich.org 70 i+ - Example: ``:id "2"`` will load file **data/2.md**. Use text instead of numbers, if you want to. Err bitreich.org 70 i+ - (See section: 'The **data/** Directory'.) Err bitreich.org 70 i+- **:short** Err bitreich.org 70 i+ - The ``:short`` field's value is used for displaying a really short description of the posts content on your homepage. Err bitreich.org 70 i+ - If ``:short`` doesn't get a value, the full article gets displayed. Err bitreich.org 70 i+ - Hint: Use ``:short "view the article for the full text"``, if you don't want to display the full text of an article on your index site. Err bitreich.org 70 i - **:tag** Err bitreich.org 70 i- - _:tag_ field is used to create a "view" containing all articles of the same tag. Err bitreich.org 70 i- - MIND: Whitespaces are not allowed in(!) tags. Err bitreich.org 70 i+ - ``:tag`` field is used to create a "view" containing all articles of the same tag. Err bitreich.org 70 i+ - MIND: Whitespaces are used to separate tags and are not allowed in(!) tags. Err bitreich.org 70 i+- **:title** Err bitreich.org 70 i+ - The ``:title`` field's value sets your post's title, its first headline, as well as its entry on the index.html. Err bitreich.org 70 i Err bitreich.org 70 i Err bitreich.org 70 i ## Howto Create A New Post Err bitreich.org 70 i+ Err bitreich.org 70 i+Edit **data/articles.lisp** and add a new list to the *articles* variable: Err bitreich.org 70 i Err bitreich.org 70 i-Edit data/articles.lisp and add a new list to the *articles* variable: Err bitreich.org 70 i+ (list :title "How do I use cl-yag" Err bitreich.org 70 i+ :id "2" Err bitreich.org 70 i+ :date "29 April 2016" Err bitreich.org 70 i+ :author "Solène" Err bitreich.org 70 i+ :short "I will explain how to use the generator" Err bitreich.org 70 i+ :tag "example help code") Err bitreich.org 70 i Err bitreich.org 70 i- (list :title "How do I use cl-yag" Err bitreich.org 70 i- :id "2" Err bitreich.org 70 i- :date "29 April 2016" Err bitreich.org 70 i- :author "Solène" Err bitreich.org 70 i- :short "I will explain how to use the generator" Err bitreich.org 70 i- :tag "example help code") Err bitreich.org 70 i+Then write a corresponding **data/2.md** file, using markdown. Err bitreich.org 70 i Err bitreich.org 70 i-Then write a corresponding ``2.md`` file, using markdown. Err bitreich.org 70 i Err bitreich.org 70 i ## Howto Publish A Post Err bitreich.org 70 i Err bitreich.org 70 i I prepared a Makefile to facilitate the process of generating and Err bitreich.org 70 i-publishing your static sites. Err bitreich.org 70 i- Err bitreich.org 70 i+publishing your static sites. Err bitreich.org 70 i All you need to do in order to publish is to go into your cl-yag Err bitreich.org 70 i-directory and type "make". Err bitreich.org 70 i+directory and type ``make``. Err bitreich.org 70 i Err bitreich.org 70 i-The 'make' command does create html and gopher files in the defined Err bitreich.org 70 i-**output/** location (which can be a symbolic link pointing to some Err bitreich.org 70 i-other directory, somewhere else on your machine). Err bitreich.org 70 i+The make command creates html and gopher files in the defined location. Err bitreich.org 70 i+The default is the **output/** directory, but you can use a symbolic link Err bitreich.org 70 i+pointing to some other directory as well. Err bitreich.org 70 i Err bitreich.org 70 i Err bitreich.org 70 i ## Howto Add A New Page Err bitreich.org 70 i Err bitreich.org 70 i-You may want to have some dedicated pages besides the index or a post. Err bitreich.org 70 i-To create one, edit the **generate-site** function in cl-yag's Err bitreich.org 70 i-generator.lisp and add a function call, like this: Err bitreich.org 70 i+You may want to have some dedicated pages besides the index or a post. Err bitreich.org 70 i+To create one, edit the *generate-site* function in cl-yag's Err bitreich.org 70 i+**generator.lisp** and add a function call, like this: Err bitreich.org 70 i Err bitreich.org 70 i (generate "somepage.html" (load-file "data/mypage.html")) Err bitreich.org 70 i- Err bitreich.org 70 i-This will produce the file **somepage.html** in the output folder. Err bitreich.org 70 i+ Err bitreich.org 70 i+This will produce **output/html/somepage.html**. Err bitreich.org 70 i Err bitreich.org 70 i Err bitreich.org 70 i ## Further Customization Err bitreich.org 70 i Err bitreich.org 70 i ### Howto Use Another Common Lisp Interpreter Err bitreich.org 70 i Err bitreich.org 70 i-cl-yags default Lisp interpreter is **sbcl**. Err bitreich.org 70 i+cl-yags default Lisp interpreter is **sbcl**. Err bitreich.org 70 i If you want to use a different lisp interpreter you need to set the Err bitreich.org 70 i-variable 'LISP' to the name of your binary, when calling ``make``. Err bitreich.org 70 i+variable *LISP* to the name of your binary, when calling ``make``: Err bitreich.org 70 i Err bitreich.org 70 i make LISP=ecl Err bitreich.org 70 i Err bitreich.org 70 i@@ -211,67 +212,65 @@ variable 'LISP' to the name of your binary, when calling ``make``. Err bitreich.org 70 i ### Using git Hooks For Publishing Err bitreich.org 70 i Err bitreich.org 70 i You may customize your publishing-process further, e.g. by using a git Err bitreich.org 70 i-hook to call 'make' after each change in the repo so your website gets Err bitreich.org 70 i-updated automatically. Err bitreich.org 70 i+hook to call the make program after each change in the repo so your Err bitreich.org 70 i+website gets updated automatically. Err bitreich.org 70 i Err bitreich.org 70 i Err bitreich.org 70 i ## Page-Includes Err bitreich.org 70 i Err bitreich.org 70 i Here is an example code, if you want to include another page in the template: Err bitreich.org 70 i Err bitreich.org 70 i-1. Create **template/panel.tpl** with the html you want to include. Err bitreich.org 70 i-2. Add a string in the target file, where the replacement should occur. Err bitreich.org 70 i- In this case, we choose **%%Panel%%** for a string, and, because we want the panel to be displayed on each page, we add this string to **template/layout.tpl**. Err bitreich.org 70 i+1. Create **templates/panel.tpl** containing the html you want to include. Err bitreich.org 70 i+2. Add a replacement-string in the target file, where the replacement should occur. Err bitreich.org 70 i+ In this case, we choose **%%Panel%%** for a string, and, because we want the panel to be displayed on each page, we add this string to **templates/layout.tpl**. Err bitreich.org 70 i Err bitreich.org 70 i-3. Modify the function *generate-layout* in cl-yag's **generator.lisp** accordingly. Err bitreich.org 70 i+3. Modify the function *generate-layout* in cl-yag's **generator.lisp** accordingly. Err bitreich.org 70 i This is done by adding the following template function call: Err bitreich.org 70 i Err bitreich.org 70 i- (template "%%Panel%%" (load-file "template/panel.tpl")) Err bitreich.org 70 i- Err bitreich.org 70 i-(Note: You can insert your text directly into the layout template file Err bitreich.org 70 i-as well.) Err bitreich.org 70 i+ (template "%%Panel%%" (load-file "templates/panel.tpl")) Err bitreich.org 70 i Err bitreich.org 70 i+Another valid approach is to writer your html directly into **templates/layout.tpl**. Err bitreich.org 70 i Err bitreich.org 70 i ## Known Limitations Err bitreich.org 70 i Err bitreich.org 70 i ### Use ~~ To Create ~ Err bitreich.org 70 i Err bitreich.org 70 i-cl-yag crashes if you use a single "**~**" caracter inside one data Err bitreich.org 70 i-structure in **articles.lisp** files, because Common Lisp employs the Err bitreich.org 70 i-tilde as a prefix to indicate format specifiers in format strings. Err bitreich.org 70 i+cl-yag crashes if you use a single "~" character inside Err bitreich.org 70 i+**templates/articles.lisp**, because Common Lisp employs the tilde as a Err bitreich.org 70 i+prefix to indicate format specifiers in format strings. Err bitreich.org 70 i Err bitreich.org 70 i-In order to use a literal `~` - e.g. for creating a :title or :url Err bitreich.org 70 i-reference - you have to **escape** the tilde **by duplicating** it: Err bitreich.org 70 i-``~~``. Err bitreich.org 70 i-(See _:url_ in section 'Configuration'). Err bitreich.org 70 i+In order to use a literal `~` -- e.g. for creating a ``:title`` or Err bitreich.org 70 i+``:url`` reference -- you have to *escape* the tilde *by Err bitreich.org 70 i+duplicating* it: ``~~``. (See ``:url`` in section 'Configuration'). Err bitreich.org 70 i Err bitreich.org 70 i Err bitreich.org 70 i ### Posting Without Tagging Err bitreich.org 70 i Err bitreich.org 70 i-cl-yag allows posts to be 'untagged'- but with the default template Err bitreich.org 70 i-you'll get a line below your title that displays: "Tags: ". Err bitreich.org 70 i+cl-yag allows posts without tags, but, using the default Err bitreich.org 70 i+**templates/layout.tpl**, you'll get a line below your title that Err bitreich.org 70 i+displays: "Tags: ". Err bitreich.org 70 i Err bitreich.org 70 i (Note: If you are looking for a way to contribute this may be a task for you.) Err bitreich.org 70 i Err bitreich.org 70 i Err bitreich.org 70 i ### A Note On Themes Err bitreich.org 70 i Err bitreich.org 70 i-Although cl-yag **may** ship with a **minimalistic** template, cl-yag Err bitreich.org 70 i-focuses only on generating html- and gopher-compliant structural Err bitreich.org 70 i-markup - not themed layouts. Err bitreich.org 70 i+Although cl-yag may ship with a minimalistic template, cl-yag focuses Err bitreich.org 70 i+on generating html- and gopher-compliant structural markup - not Err bitreich.org 70 i+themed layouts. Err bitreich.org 70 i Err bitreich.org 70 i If you want some deeply refined, cross-browser compatible, responsive, Err bitreich.org 70 i-webscale style-sheet, you need to create it yourself. Err bitreich.org 70 i-However, cl-yag will work nicely with it and if you want to make your Err bitreich.org 70 i+webscale style sheets, you need to create them yourself. However, Err bitreich.org 70 i+cl-yag will work nicely with them and if you want to make your Err bitreich.org 70 i stylesheets a part of cl-yag you're very welcome to contact me. Err bitreich.org 70 i Err bitreich.org 70 i Err bitreich.org 70 i # Hacking cl-yag Err bitreich.org 70 i Err bitreich.org 70 i-I tried to make cl-yag easy to extend. Err bitreich.org 70 i+I tried to make cl-yag easy to extend. Err bitreich.org 70 i If you want to contribute, feel free to contact me and/or to send in a patch. Err bitreich.org 70 i Err bitreich.org 70 i - If you are looking for a way to contribute: Err bitreich.org 70 i - You could find a way to "sanitize" cl-yag's behaviour regarding the tilde (see: above); Err bitreich.org 70 i - Also see: 'Note' in 'Posting Without Tagging'; Err bitreich.org 70 i- - Also see: 'A Note On Themes. Err bitreich.org 70 i+ - Also see: 'A Note On Themes'. Err bitreich.org 70 .