Skip to content

Instantly share code, notes, and snippets.

@lord-alfred
Last active October 13, 2020 12:17
Show Gist options
  • Save lord-alfred/e6f9fb4bebd28bd234fce684be121fa9 to your computer and use it in GitHub Desktop.
Save lord-alfred/e6f9fb4bebd28bd234fce684be121fa9 to your computer and use it in GitHub Desktop.
Передача языка браузера на преленд из Keitaro TDS v6

Передача языка браузера на преленд из Keitaro TDS v6

Чтобы передать язык браузера в "поток" - необходимо добавить макрос {accept_language}.

Для этого необходимо взять скрипт accept_language.php и положить его в директорию: application/macros/.

После этого в настройках потока появится соответствующий макрос при нажатии на ссылку "Сформировать URL".

Пример URL потока с этим макросом: /prelanding.php?q={keyword}&lang={accept_language}

Разруливание языка на преленде:

<?php
$lang = '';
if (isset($_GET['lang']) && !empty($_GET['lang'])) {
    $lang = trim(htmlspecialchars(strip_tags(urldecode($_GET['lang']))));
}

// Дефолтный текст
$text = 'Create account';

if ($lang == 'de') {
    $text = 'Konto erstellen';
}
if ($lang == 'es') {
    $text = 'Crear una cuenta';
}

А в месте, где в шаблоне нужно вывести данный текст - вставляем:

<a href="http://link.com/"><?php echo $text; ?></a>

PS: я не знаю работает ли этот метод на других версиях Keitaro, но на v6 всё ок.

PPS: документация по макросам: https://v6.help.keitaro.io/ru/macros

PPPS: в v8/v9 тоже самое должен делать максос {language}, но это не точно :)

<?php
class accept_language_macros extends AbstractMacros
{
public function process(Stream $stream, Visitor $visitor)
{
try {
if (method_exists($visitor, 'getLang')) {
return strtolower($visitor->getLang());
}
if (method_exists($visitor, 'get')) {
$lang = $visitor->get('lang');
if (!empty($lang)) {
return strtolower($lang);
}
}
} catch (\Error $e) {
} catch (\Exception $e) {
}
return '';
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment