diff --git a/_basics/handles.md b/_basics/handles.md index e348450..c91e45a 100644 --- a/_basics/handles.md +++ b/_basics/handles.md @@ -13,7 +13,7 @@ For example, a page with the title "About Us" can be accessed in Liquid via its {% endraw %} {% endhighlight %} -## Creating handles +### Creating handles An object with the title "Shirt" will automatically be given the handle `shirt`. If there is already an object with the handle `shirt`, the handle will auto-increment. In other words, "Shirt" objects created after the first one will receive the handle `shirt-1`, `shirt-2`, and so on. @@ -23,46 +23,28 @@ Handles also determine the URL of their corresponding objects. For example, a pa Websites often rely on static handles for pages, posts, or objects. To preserve design elements and avoid broken links, if you modify the title of an object, **its handle is not automatically updated**. For example, if you were to change a page title from "About Us" to "About This Website", its handle would still be `about-us`. -You can change an object's handle manually (how?) +You can change an object's handle manually (TK how to change a handle manually) -## Accessing attributes via the handle", "attributes-handle +### Accessing handle attributes In many cases you may know the handle of a object whose attributes you want to access. You can access its attributes by pluralizing the name of the object, then using either the square bracket ( [ ] ) or dot ( . ) notation.
Input
Output
Input
-Output
->
>
>=
>=
<=
or
and
contains checks for the presence of a substring inside a string.
-
-
-{% highlight html %}{% raw %}
+{% highlight liquid %}{% raw %}
{% if product.title contains 'Pack' %}
This product's title contains the word Pack.
{% endif %}
{% endraw %}{% endhighlight %}
+`contains` can also check for the presence of a string in an array of strings.
-contains can also check for the presence of a string in an array of strings.
-
-{% highlight html %}{% raw %}
+{% highlight liquid %}{% raw %}
{% if product.tags contains 'Hello' %}
This product has been tagged with 'Hello'.
{% endif %}
{% endraw %}{% endhighlight %}
-
-You **cannot** check for the presence of an object in an array of objects using contains. This will not work:
-
-{% highlight html %}{% raw %}
-{% if product.collections contains 'Sale' %}
- One of the collections this product belongs to is the Sale collection.
-{% endif %}
-{% endraw %}{% endhighlight %}
-
-This will work:
-
-{% highlight html %}{% raw %}
-{% assign in_sale_collection = false %}
-{% for collection in product.collections %}
- {% if in_sale_collection == false and collection.title == 'Sale' %}
- {% assign in_sale_collection = true %}
- {% endif %}
-{% endfor %}
-{% if in_sale_collection %}
- One of the collections this product belongs to is the Sale collection.
-{% endif %}
-{% endraw %}{% endhighlight %}
-
-
\ No newline at end of file
+`contains` is can only search strings. You cannot use it to check for an object in an array of objects.
diff --git a/_basics/truthy-and-falsy.md b/_basics/truthy-and-falsy.md
index e4f3bd5..dddee83 100644
--- a/_basics/truthy-and-falsy.md
+++ b/_basics/truthy-and-falsy.md
@@ -2,116 +2,69 @@
title: Truthy and Falsy
---
-In programming, we describe “truthy” and “falsy” as anything that returns true or false, respectively, when used inside an if statement.
+In programming, anything that returns `true` in a conditional is called **truthy**. Anything that returns `false` in a conditional is called **falsy**. All object types can be described as either truthy or falsy.
-## What is truthy?
+## Truthy
-All values in Liquid are truthy, with the exception of nil and false.
+All values in Liquid are truthy except `nil` and `false`.
-In the example below, the text “Tobi” is not a boolean, but it is truthy in a conditional:
+In the example below, the text "Tobi" is not a boolean, but it is truthy in a conditional:
-{% highlight html %}{% raw %}
+{% highlight liquid %}{% raw %}
{% assign tobi = 'Tobi' %}
-{% if tobi %}
-This will always be true.
+
+{% if tobi == true %}
+ This condition will always be true.
{% endif %}
{% endraw %}{% endhighlight %}
-[Strings](/themes/liquid-documentation/basics/types/#strings), even when empty, are truthy. The example below will result in empty HTML tags if settings.fp_heading is empty:
+[Strings](/basics/types/#string), even when empty, are truthy. The example below will result in empty HTML tags if `settings.fp_heading` is empty:
Input
-{% highlight html %}{% raw %} +{% highlight liquid %}{% raw %} {% if settings.fp_heading %} -Output
{% highlight html %}{% raw %} {% endraw %}{% endhighlight %} -To avoid this, you can check to see if the string isblank, as follows:
-
-settings.page is an empty string or set to a hidden or deleted object, you will end up with an EmptyDrop. The result is an undesirable empty <div>:
+[EmptyDrops](/basics/types/#emptydrop) are also truthy. In the example below, if `settings.page` is an empty string or set to a hidden or deleted object, you will end up with an EmptyDrop. The result is an empty `Input
{% highlight html %}{% raw %} {% if pages[settings.page] %} -Output
{% highlight html %}{% raw %} {% endraw %}{% endhighlight %} +## Falsy -## What is falsy? - -The only values that are falsy in Liquid are nil and false. - -[nil](/themes/liquid-documentation/basics/types/#nil) is returned when a Liquid object doesn't have anything to return. For example, if a collection doesn't have a collection image, collection.image will be set to nil. Since that is “falsy”, you can do this: - -{% highlight html %}{% raw %} -{% if collection.image %} - -{% endif %} -{% endraw %}{% endhighlight %} - -The value false is returned through many Liquid object properties such as product.available. +The falsy values in Liquid are [nil](/basics/types/#nil) and [false](/basics/types/#boolean). ## Summary -The table below summarizes what is truthy or falsy in Liquid. +The table below summarizes what is truthy or falsy in Liquid. | | truthy | falsy | | ------------- |:-------------:|:-------------:| -| true | × | | -| false | | × | -| nil | | × | -| string | × | | -| empty string | × | | -| 0 | × | | -| 1 or 2 or 3.14 | × | | -| array | × | | -| empty array | × | | -| collection | × | | -| collection with no products | × | | -| page | × | | -| EmptyDrop | × | | - - - - - - - - - - - - - - - - - - - - - - +| true | • | | +| false | | • | +| nil | | • | +| string | • | | +| empty string | • | | +| 0 | • | | +| integer | • | | +| float | • | | +| array | • | | +| empty array | • | | +| page | • | | +| EmptyDrop | • | | diff --git a/_basics/types.md b/_basics/types.md index b4e1925..711b8a8 100644 --- a/_basics/types.md +++ b/_basics/types.md @@ -2,198 +2,156 @@ title: Types --- -Liquid objects can return one of six types: String, Number, Boolean, Nil, Array, or EmptyDrop. Liquid variables can be initialized by using the assign or capture tags. +Liquid objects can have one of six types: +- [string](#string) +- [number](#number) +- [boolean](#boolean) +- [nil](#nil) +- [array](#array) +- [EmptyDrop](#emptydrop) +Liquid variables can be initialized by using the [assign](/tags/#assign) or [capture](/tags/#capture) tags. -### Strings +### String -Strings are declared by wrapping the variable's value in single or double quotes. +Strings are declared by wrapping a variable's value in single or double quotes. -Input
-{% highlight html %}{% raw %} -Tracking number: {{ fulfillment.tracking_numbers }} +{% highlight liquid %}{% raw %} +The current user is {{ user.name }} {% endraw %}{% endhighlight %}Output
-Input
-Output
-Input
-Output
-split filter to break a single string into an array of substrings. See here for examples.
-
-
-
+#### Initializing arrays
+You cannot initialize arrays using pure Liquid.
+You can, however, use the [split](/filters/#split) filter to break a single string into an array of substrings.
## EmptyDrop
-An EmptyDrop object is returned whenever you try to access a non-existent object (for example, a collection, page or blog that was deleted or hidden) by [handle](/themes/liquid-documentation/basics/handle). In the example below, page_1, page_2 and page_3 are all EmptyDrop objects.
+An EmptyDrop object is returned if you try to access a deleted object (such as a page or post) by its [handle](/basics/#Handles). In the example below, `page_1`, `page_2` and `page_3` are all EmptyDrop objects.
-{% highlight html %}{% raw %}
+{% highlight liquid %}{% raw %}
{% assign variable = "hello" %}
{% assign page_1 = pages[variable] %}
-{% assign page_2 = pages["i-do-not-exist-in-your-store"] %}
-{% assign page_3 = pages.this-handle-does-not-belong-to-any-page %}
+{% assign page_2 = pages["does-not-exist"] %}
+{% assign page_3 = pages.this-handle-does-not-exist %}
{% endraw %}{% endhighlight %}
-EmptyDrop objects only have one attribute, empty?, which is always true.
+EmptyDrop objects only have one attribute, `empty?`, which is always *true*.
-Collections and pages that _do_ exist do not have an empty? attribute. Their empty? is “falsy”, which means that calling it inside an if statement will return false. When using an unless statement on existing collections and pages, empty? will return true.
+Collections and pages that *do* exist do not have an `empty?` attribute. Their `empty?` is “falsy”, which means that calling it inside an if statement will return *false*. When using an unless statement on existing collections and pages, `empty?` will return `true`.
-#### Applications in themes
+#### Checking for emptiness
-Using the empty? attribute, you can check to see if a page exists or not _before_ accessing any of its other attributes.
+Using the `empty?` attribute, you can check to see if an object exists or not before you access any of its attributes.
-{% highlight html %}{% raw %}
-{% unless pages.frontpage.empty? %}
-
+{% highlight liquid %}{% raw %}
+{% unless pages.about.empty? %}
+
We do have a 'frontpage' collection but it's empty.
- {% endfor %} -{% endunless %} -{% endraw %}{% endhighlight %} - - - - - - - diff --git a/_config.yml b/_config.yml index 870f8e1..2c44043 100644 --- a/_config.yml +++ b/_config.yml @@ -2,6 +2,7 @@ baseurl: "" # the subpath of your site, e.g. /blog/ url: "http://liquidmarkup.org" # the base hostname & protocol for your site markdown: kramdown +highlighter: rouge permalink: /:year/:month/:day/:basename:output_ext collections: basics: diff --git a/_sass/modules/_base.scss b/_sass/modules/_base.scss index ddd20ac..81fcdee 100644 --- a/_sass/modules/_base.scss +++ b/_sass/modules/_base.scss @@ -173,6 +173,10 @@ table { border: 1px solid #ddd; padding: 6px 13px; } + /* Don't use a margin on code samples within tables */ + pre { + margin-bottom: 0; + } } td {