Skip to content

Instantly share code, notes, and snippets.

@willtonkin
Last active December 22, 2015 21:48
Show Gist options
  • Save willtonkin/6535333 to your computer and use it in GitHub Desktop.
Save willtonkin/6535333 to your computer and use it in GitHub Desktop.
Expression Engine redirect page template for use with Structure. Supports campaign tracking URLs.
{exp:channel:entries
limit="1"
channel="redirect_pages"
disable="{global:disable_default}"
require_entry="yes"
status="Open|Hidden"
entry_id="{structure:freebie:entry_id}"
}
{exp:ifelse}
{if (no_results OR !cf_redirect_url) AND (no_results OR !cf_redirect_external_url)}
{redirect="404"}
{/if}
{/exp:ifelse}
<?php
$redirect_url = <<<EOD
{exp:ifelse}{if cf_redirect_url}{cf_redirect_url}{if:else}{cf_redirect_external_url}{/if}{/exp:ifelse}
EOD;
$redirect_query_str = <<<EOD
{exp:ifelse}{if cf_redirect_source AND cf_redirect_name}utm_source={cf_redirect_source}{if cf_redirect_medium}&utm_medium={cf_redirect_medium}{/if}{if cf_redirect_term}&utm_term={cf_redirect_term}{/if}{if cf_redirect_content}&utm_content={cf_redirect_content}{/if}&utm_campaign={cf_redirect_name}{/if}{/exp:ifelse}
EOD;
if (strlen($redirect_query_str) == 0)
$redirect_final = $redirect_url;
else if (strpos($redirect_url, "?") !== false)
$redirect_final = $redirect_url . "&" . $redirect_query_str;
else
$redirect_final = $redirect_url . "?" . $redirect_query_str;
header("Location: " . $redirect_final);
exit(0);
?>
{/exp:channel:entries}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment