Skip to content

Instantly share code, notes, and snippets.

@croxton
Created August 1, 2012 15:44
Show Gist options
  • Save croxton/3227974 to your computer and use it in GitHub Desktop.
Save croxton/3227974 to your computer and use it in GitHub Desktop.
Multiple languages in matrix field rows overriding default title/body/summary fields in an entry
{!-- handle language fields --}
{services_languages}
{!-- language switcher --}
{exp:stash:append name="page_languages" type="snippet"}
<option value="/{exp:cat2:url_title category_id='{language}'}{structure:page:uri}{exp:stash:get name='tab' type='snippet'}"{if "{global:lang}" == "{exp:cat2:url_title category_id='{language}'}"} selected="selected"{/if}>{exp:cat2:name category_id="{language}"} ({exp:cat2:url_title category_id="{language}"})</option>
{/exp:stash:append}
{!-- capture language fields --}
{exp:stash:set name="page_title_{exp:cat2:url_title category_id='{language}'}" type="snippet" parse="inward"}
{language_title}
{/exp:stash:set}
{exp:stash:set name="page_summary_{exp:cat2:url_title category_id='{language}'}" type="snippet" parse="inward"}
{language_summary}
{/exp:stash:set}
{exp:stash:set name="page_body_{exp:cat2:url_title category_id='{language}'}" type="snippet" parse="inward"}
{language_body}
{/exp:stash:set}
{!-- store alternative language ids - we want to exclude these when viewing the default language --}
{exp:stash:append name="alt_language_category_ids" type="snippet" parse="inward"}{language}|{/exp:stash:append}
{!-- get the language category id for the currently selected language --}
{exp:stash:set type="snippet" name="language_category_id" match="#^{global:lang}$#" against="{exp:cat2:url_title category_id='{language}'}" parse="inward"}{language}{/exp:stash:set}
{/services_languages}
{!-- swap fields for selected language field --}
{exp:switchee variable="{global:lang}" parse="inward"}
{!-- Having "not" enables us to display the English (or default lang) ones only --}
{case value="{global:lang_default}"}
{exp:stash:set type="snippet" name="page_summary" parse_vars="yes"}{services_summary}{/exp:stash:set}
{exp:stash:set type="snippet" name="page_body" parse_vars="yes"}{services_body}{/exp:stash:set}
{!--{exp:stash:set type="snippet" name="language_category_id" parse_tags="yes"}not {alt_language_category_ids}{/exp:stash:set}--}
{exp:stash:set type="snippet" name="language_category_id" parse="inward"}{services_default_language}{/exp:stash:set}
{/case}
{!-- overwrite existing snippets with language specific content --}
{case default="yes"}
{exp:stash:set type="snippet" name="page_title" parse_vars="yes"}{page_title_{global:lang}}{/exp:stash:set}
{exp:stash:set type="snippet" name="page_summary" parse_vars="yes"}{page_summary_{global:lang}}{/exp:stash:set}
{exp:stash:set type="snippet" name="page_body" parse_vars="yes"}{page_body_{global:lang}}{/exp:stash:set}
{/case}
{/exp:switchee}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment