aboutsummaryrefslogtreecommitdiffstats
path: root/docs/creating-a-site.txt
diff options
context:
space:
mode:
Diffstat (limited to 'docs/creating-a-site.txt')
-rw-r--r--docs/creating-a-site.txt181
1 files changed, 181 insertions, 0 deletions
diff --git a/docs/creating-a-site.txt b/docs/creating-a-site.txt
new file mode 100644
index 0000000..41985c9
--- /dev/null
+++ b/docs/creating-a-site.txt
@@ -0,0 +1,181 @@
+.. slug: creating-a-site-not-a-blog-with-nikola
+.. date: 2013/03/01 12:49:41
+.. tags: nikola, python
+.. link:
+.. description:
+
+Creating a Site (Not a Blog) with Nikola
+========================================
+
+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 <http://nikola.ralsina.com.ar>`_ 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 semi-configured site::
+
+ $ nikola init mysite
+ 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-block:: python
+
+
+ ##############################################
+ # Configuration, please edit
+ ##############################################
+
+
+ # 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 = "http://notablog.ralsina.com.ar"
+ BLOG_EMAIL = "ralsina@kde.org"
+ BLOG_DESCRIPTION = "This is a demo site (not a blog) for Nikola."
+
+ #
+ # Some things in the middle you don't really need to change...
+ #
+
+ post_pages = (
+ ("pages/*.txt", "", "story.tmpl", False),
+ )
+
+And now we are ready to create our first page::
+
+ $ nikola new_post -p
+ Creating New Post
+ -----------------
+
+ Enter title: index
+ Your post's text is at: pages/index.txt
+
+.. note:: The ``-p`` option in the ``nikola new_post`` command means we are creating a page and not a blog post.
+
+We can now build and preview our site::
+
+ $ nikola build
+ Scanning posts.done!
+ . render_site:output/categories/index.html
+ . render_sources:output/index.txt
+ . render_rss:output/rss.xml
+ :
+ :
+ : [Much more of the same]
+
+ $ nikola serve
+ Serving HTTP on 127.0.0.1 port 8000 ...
+
+And you can see your (very empty) site in http://localhost:8000
+
+So, what's in that ``pages/index.txt`` file?
+
+.. code-block:: rest
+
+ .. title: index
+ .. slug: index
+ .. date: 2013/03/01 10:26:17
+ .. 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``) the date doesn't matter much in
+not-blogs, same for tags and link. Description is useful for SEO purposes
+if you care for that.
+
+And below, the content. By default you are expected to use
+`reStructured text <http://nikola.ralsina.com.ar/quickstart.html>`_ but
+Nikola supports a ton of formats, including Markdown, plain HTML, BBCode,
+Wiki, and Textile.
+
+So, let's give the page a nicer title, and some fake content. Since the default
+Nikola theme (called "site") is based on `bootstrap <http://twitter.github.com/bootstrap/>`_
+you can use anything you like from it:
+
+.. code-block:: rest
+
+ .. title: Welcome To The Fake Site
+ .. slug: index
+ .. date: 2013/03/01 10:26:17
+ .. tags:
+ .. link:
+ .. description: Fake Site version 1, welcome page!
+
+
+ .. class:: hero-unit span6
+
+ .. admonition:: This is a Fake Site
+
+ It pretends to be about things, but is really just an example.
+ So, don't click this button, it leads nowhere.
+
+ .. class:: btn
+
+ Click Me!
+
+
+ .. class:: span5
+
+ 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.
+
+ [And more in the same vein]
+
+.. 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. Example::
+
+ nikola new_post -p pages/foo/index.txt
+
+ which will create a page you could access as "http://yoursite.com/foo"
+
+And that's it. You will want to change the SIDEBAR_LINKS option to create a reasonable
+"menu" for your site, you will want to hack 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 ``post_pages`` option like this:
+
+ .. code-block:: python
+
+ post_pages = (
+ ("pages/*.txt", "", "story.tmpl", False),
+ ("posts/*.txt", "blog", "post.tmpl", True),
+ )
+
+ And to avoid a conflict (because blogs try to generate ``/index.html``:
+
+ .. code-block:: python
+
+ INDEX_PATH = "blog"
+
+ Create a post with ``nikola new_post`` and that's it, you now have a blog
+ in http://yoursite.com/blog (you may want to add links to it in SIDEBAR_LINKS of course).
+
+You can see the finished site in http://notablog.ralsina.com.ar and its full configuration in
+http://ralsina.com.ar/listings/notablog/conf.py.html
+
+I hope this was helpful!