Skip to content

Skeleton XML

Sergey Yushkeev aka CordiS edited this page Jun 5, 2019 · 11 revisions

Skeleton XML

Logging

By adding ?skeleton_logging=urdirtywishes to any page URL it is possible to investigate the flow of Skeleton execution.

Elements

<blocks>
    <block name="Some name">
        ...
    </block>
    <block name="Some other name">
        ...
    </block>
</blocks>
<call_block name="Some name" />
<abtests>
    <abtest
        name="Some name"
        query-param="anything"
        query-value="here">
            ...
    </abtest>
    <abtest
        name="Some name"
        query-param="socialux"
        query-value="true"
        use-cookie="true">
            ...
    </abtest>
</abtests>
<if test="{{skeleton expression}}">
    ...
</if>
<choose>
    <when test="{{skeleton expression}}">
        ...
    </when>
    <when test="{{skeleton expression}}">
        ...
    </when>
    <otherwise>
        ...
    </otherwise>
</choose>
<posts
    source="filtered"
    from_sections_of_current_post="true"
    limit="10"
>
    <filters>
        <add_buckets
            from_sections="politics,health-care"
            as="section:{section_id}"
        />
        <add_buckets><![CDATA[ ... jinja template ... ]]></add_buckets>
        <add_text
            as="extra_post_field"
        ><![CDATA[ ... jinja template ... ]]></add_text>
        <insert_into_body
            template="path/to/wrapper/template.html"
            position="below"
            paragraph="0"
        ><![CDATA[ ... jinja template ... ]]></insert_into_body>
        <insert_ads_into_body />
        <load_page_views
           bucket="~all~"
           period="lifetime"
           as="page_views"
        />
        <load_talk
            type="comments"
            order="newest"
            limit="10"
            as="comments"
        />
        <set_image_size
            url="200x200,400x400"
            mobile_url="120x200,240x400"
        />
        <datetime_ago
            field_name="created_ts"
            new_field_name="created_ago"
        />
        <string_formatter
            max_limit="100"
            field_name="description"
            new_field_name="new_description"
        />
        <listicle
            ...
        />
        <comunity_site
            from="roar_specific_data.community_id"
            as="community"
        />
        <copy_attribute
            from="roar_specific_data.community_id"
            as="community_id"
        />
        <section />
        <original_user_subsite />
        <pretty_date
            full_format="true"
            enable_future="true"
            date_format="%d %B %Y"
            strip_year_if_current="true"
            field_name="created_ts"
            new_field_name="new_created_ts"
        />
        <read_full_article />
        <content_split_testing_filter />
        <teaser_split_testing_filter />
        <page_view_maker
            strategy="only_once_at_beggining_of_the_text"
        />
        <replace_image_with_teaser_image
            only-for-amp="false"
        />
        <is_old_post
            limit_date="01-27-2018"
        />
        <post_body_pager />
    </filters>
</posts>
<post_content />
<authors
    group="readers"
    order="rating"
    limit="10" />
<authors_search
    type="community"
    limit="10"
    cache_ttl_in_seconds="60"
/><!-- works on Search Page only -->
<talk
    talk_id="post:{{post.id}}:comments"
    order="best"
    limit="10"
    cache_ttl_in_seconds="60"
    load_for_logged_in_users="false"
/>
<canonical_url>{{skeleton expression}}</canonical_url>
<canonical_url /><!-- On Post Page, uses the URL from the post -->
<canonical_url safe_params="page,utm_campaign" /><!--
    On page other than Post Page, uses current URL filtering out unsafe parameters
-->
<meta_keywords>some keywords</meta_keywords><!--
    For Post Page, uses `post.public_tags`;
    For Section Page, uses `section.meta_tags`;
    For any other page, uses `some keywords` text from the element
-->
<meta_description>some keywords</meta_keywords><!--
    For Post Page, uses `post.meta_description` or `Facebook description`;
    For Section Page, uses `section.about_html`;
    For any other page, uses `some keywords` text from the element
-->
<title_skeleton>some keywords</meta_keywords><!--
    For Section Page, uses `section.meta_title`;
    For any other page, uses `some keywords` text from the element
-->
<raw_sections />
<post_sections />
<chartbeat />
<comsore />
<next_post />
<next_article />
<next_page>
    <posts
        source="filtered"
        from_sections_of_current_post="true"
        limit="10" />
</next_page>

Expressions