aboutsummaryrefslogtreecommitdiffstats
path: root/docs/creating-a-site.rst
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2021-02-03 19:17:00 -0500
committerLibravatarUnit 193 <unit193@unit193.net>2021-02-03 19:17:00 -0500
commit3a0d66f07b112b6d2bdc2b57bbf717a89a351ce6 (patch)
treea7cf56282e54f05785243bc1e903d6594f2c06ba /docs/creating-a-site.rst
parent787b97a4cb24330b36f11297c6d3a7a473a907d0 (diff)
New upstream version 8.1.2.upstream/8.1.2
Diffstat (limited to 'docs/creating-a-site.rst')
-rw-r--r--docs/creating-a-site.rst186
1 files changed, 186 insertions, 0 deletions
diff --git a/docs/creating-a-site.rst b/docs/creating-a-site.rst
new file mode 100644
index 0000000..ebe9aa6
--- /dev/null
+++ b/docs/creating-a-site.rst
@@ -0,0 +1,186 @@
+.. title: Creating a Site (Not a Blog) with Nikola
+.. slug: creating-a-site-not-a-blog-with-nikola
+.. date: 2015-01-10 10:00:00 UTC
+.. tags: nikola, python
+.. link:
+.. description:
+.. author: The Nikola Team
+
+.. class:: lead
+
+One of the most frequent questions I get about Nikola is “but how do
+I create a site that’s not a blog?”. And of course, that’s because the
+documentation is heavily blog–oriented. This document will change that ;-)
+
+Since it started, Nikola has had the capabilities to create generic sites. For example,
+Nikola’s `own site <https://getnikola.com/>`_ is a fairly generic one. Let’s go
+step by step on how you can do something like that.
+
+As usual when starting a nikola site, you start with ``nikola init`` which creates a
+empty (mostly) configured site:
+
+.. code:: console
+
+ $ nikola init mysite
+ Creating Nikola Site
+ ====================
+ ⋮
+ [1970-01-01T00:00:00Z] INFO: init: Created empty site at mysite.
+
+Then we go into the new ``mysite`` folder, and make the needed changes in the ``conf.py``
+configuration file:
+
+.. code:: python
+
+ # Data about this site
+ BLOG_AUTHOR = "Roberto Alsina"
+ BLOG_TITLE = "Not a Blog"
+ # This is the main URL for your site. It will be used
+ # in a prominent link
+ SITE_URL = "https://getnikola.com/"
+ BLOG_EMAIL = "ralsina@example.com"
+ BLOG_DESCRIPTION = "This is a demo site (not a blog) for Nikola."
+
+ #
+ # Some things in the middle you don't really need to change...
+ #
+
+ # you can also keep the current content of POSTS if you want a blog with your site
+ POSTS = ()
+ # remove destination directory to generate pages in the root directory
+ PAGES = (
+ ("pages/*.rst", "", "page.tmpl"),
+ ("pages/*.txt", "", "page.tmpl"),
+ ("pages/*.html", "", "page.tmpl"),
+ )
+
+ # And to avoid a conflict because blogs try to generate /index.html
+ INDEX_PATH = "blog"
+
+ # Or you can disable blog indexes altogether:
+ # DISABLE_INDEXES = True
+
+
+And now we are ready to create our first page:
+
+.. code:: console
+
+ $ nikola new_page
+ Creating New Page
+ -----------------
+
+ Title: index
+ Scanning posts....done!
+ [1970-01-01T00:00:00Z] INFO: new_page: Your page's text is at: pages/index.rst
+
+We can now build and preview our site:
+
+.. code:: console
+
+ $ nikola build
+ Scanning posts.done!
+ . render_site:output/categories/index.html
+ . render_sources:output/index.txt
+ . render_rss:output/rss.xml
+ ⋮
+ $ nikola serve
+ [1970-01-01T00:00:00Z] INFO: serve: Serving HTTP on 0.0.0.0 port 8000...
+
+
+And you can see your (very empty) site in http://localhost:8000/
+
+So, what’s in that ``pages/index.txt`` file?
+
+.. code:: rest
+
+ .. title: index
+ .. slug: index
+ .. date: 1970-01-01 00:00:00 UTC
+ .. tags:
+ .. link:
+ .. description:
+
+
+ Write your post here.
+
+``title`` is the page title, ``slug`` is the name of the generated HTML file
+(in this case it would be ``index.html``). ``date``, ``tags`` and ``link``
+doesn’t matter at all in pages. ``description`` is useful for SEO purposes
+if you care for that.
+
+And below, the content. By default Nikola uses
+`reStructuredText <https://getnikola.com/quickstart.html>`_ but it supports
+a ton of formats, including Markdown, plain HTML, Jupyter Notebooks, BBCode,
+Wiki, and Textile. We will use reStructuredText for this example, but some
+people might find it a bit too limiting — if that is the case, try using HTML
+for your pages (Nikola does this on the index page, for example).
+
+So, let's give the page a nicer title, and some fake content. Since the default
+Nikola theme (called ``bootblog4``) is based on `Bootstrap <http://getbootstrap.com/>`_
+you can use anything you like from it:
+
+.. code:: rest
+
+ .. title: Welcome To The Fake Site
+ .. slug: index
+ .. date: 1970-01-01 00:00:00 UTC
+ .. tags:
+ .. link:
+ .. description: Fake Site version 1, welcome page!
+
+
+ .. class:: jumbotron col-md-6
+
+ .. admonition:: This is a Fake Site
+
+ It pretends to be about things, but is really just an example.
+
+ .. raw:: html
+
+ <a href="https://getnikola.com/" class="btn btn-primary btn-lg">Click Me!</a>
+
+
+ .. class:: col-md-5
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris non nunc turpis.
+ Phasellus a ullamcorper leo. Sed fringilla dapibus orci eu ornare. Quisque
+ gravida quam a mi dignissim consequat. Morbi sed iaculis mi. Vivamus ultrices
+ mattis euismod. Mauris aliquet magna eget mauris volutpat a egestas leo rhoncus.
+ In hac habitasse platea dictumst. Ut sed mi arcu. Nullam id massa eu orci
+ convallis accumsan. Nunc faucibus sodales justo ac ornare. In eu congue eros.
+ Pellentesque iaculis risus urna. Proin est lorem, scelerisque non elementum at,
+ semper vel velit. Phasellus consectetur orci vel tortor tempus imperdiet. Class
+ aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos
+ himenaeos.
+
+.. admonition:: TIP: Nice URLs
+
+ If you like your URLs without the ``.html`` then you want to create folders and
+ put the pages in ``index.html`` inside them using the ``PRETTY_URLS`` option
+ (on by default)
+
+And that's it. You will want to change the NAVIGATION_LINKS option to create a reasonable
+menu for your site, you may want to modify the theme (check ``nikola help bootswatch_theme``
+for a quick & dirty solution), and you may want to add a blog later on, for company news
+or whatever.
+
+.. admonition:: TIP: So, how do I add a blog now?
+
+ First, change the ``POSTS`` option like this:
+
+ .. code:: python
+
+ POSTS = (
+ ("posts/*.rst", "blog", "post.tmpl"),
+ ("posts/*.txt", "blog", "post.tmpl"),
+ ("posts/*.html", "blog", "post.tmpl"),
+ )
+
+ Create a post with ``nikola new_post`` and that's it, you now have a blog
+ in the ``/blog/`` subdirectory of your site — you may want to link to
+ it in ``NAVIGATION_LINKS``.
+
+If you want to see a site implementing all of the above, check out `the Nikola
+website <https://getnikola.com/>`_.
+
+I hope this was helpful!