Изменить аргумент fixedPostVars с помощью пользовательской функции userFunc
У меня есть конфигурация realurl2, которая требует от меня изменить название данной категории на выбранный язык. Кикер в том, что есть только одна запись базы данных с заголовком категории, и перевод выполняется через файлы.xlf.
Теперь мне удалось заменить заголовок, однако отображение, очевидно, не работает. Есть ли в классах realurl метод, который может легко добавить запись в базу данных, или я застрял, расшифровывая ее самостоятельно в параметрах $_GET?
'fixedPostVars' => array(
// TODO: Implement dynamic via typoscript if possible!
'3' => array(
array(
'GETvar' => 'tx_products_products[product_categories]',
'userFunc' => function(&$params, $ref) use ($recordTranslator){
$categoryId = $params['value'];
$translation = $recordTranslator->render('Category', 'title', $categoryId, 'products');
$realUrlConf = new \DmitryDulepov\Realurl\Configuration\ConfigurationReader(0, $params);
$realUrlUtil = new \DmitryDulepov\Realurl\Utility($realUrlConf);
$translation = $realUrlUtil->convertToSafeString($translation);
return $translation;
}
),
Это то, что я кодировал до сих пор. Здесь recordTranslator просто возвращает строку, которую я хочу использовать в URL.
1 ответ
Я закончил тем, что предварительно заполнил свою таблицу "tx_realurl_uniqalias" псевдонимами, полем, uid, языком и т. Д.
Переведенный псевдоним все еще был создан через
$realUrlConf = new \DmitryDulepov\Realurl\Configuration\ConfigurationReader(0, $params);
$realUrlUtil = new \DmitryDulepov\Realurl\Utility($realUrlConf);
$translation = $realUrlUtil->convertToSafeString($translation);
Я сопоставил свои языковые теги Iso с разговорным языком до этого. Для этого я создал объект опечатки в моих настройках.
de {
ch-de = 1
de-de = 3
at-de = 5
}
en {
de-en = 4
}
fr {
ch-fr = 2
}
no {
no = 6
}
и сохранил поле языка, предоставленное realurl_conf, чтобы отфильтровать перевод. Вот так:
'GETvar' => 'L',
'valueMap' => array(
'ch-de' => '1',
'ch-fr' => '2',
'de-de' => '3',
'de-en' => '4',
'at-de' => '5',
'no' => '6',
),
'noMatch' => 'bypass',
Мне все еще нужно очищать псевдонимы SpokenUrl в бэкэнде всякий раз, когда создается новая "Запись базы данных", и перестраивать ее с обновленными данными, но это работает.
Поиск - это обычный формат поиска:
array(
'GETvar' => 'tx_products_products[product_categories]',
'lookUpTable' => array(
'table' => 'tx_products_domain_model_category',
'id_field' => 'uid',
'alias_field' => 'title',
'addWhereClause' => ' AND NOT deleted',
'useUniqueCache' => 1,
'useUniqueCache_conf' => array(
'strtolower' => 1,
'spaceCharacter' => '-',
),
),
),