Есть многоязычный сайт. В нем модель News (для примера) содержит контент на трёх языках, который хранится в отдельной таблице NewsContent (модель одноимённая). А данные с переводами извлекаются через связь между этими моделями. И вот вопрос. Как для данной архитектуры сделать теги для новостей. Пока есть два варианта:
- теги создаются заранее, что-то вроде рубрик, только без иерархии
- теги разные для каждого языка и тогда уже создаются стандартно.
Если кто-то сталкивался с подобной задачей или есть какие-то мысли по поводу решения, поделитесь мнением, что лучше выбрать? Может что-то третье? Спасибо заранее.
Теги на разных языках
-
- Сообщения: 957
- Зарегистрирован: 2014.05.31, 20:50
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Теги на разных языках
По сути, так же, как и с NewsContent: id | name | language. Или: id | name_ru | name_en | name_de.
Чем меньше пользователь совершает действий, тем лучше. Не думаю, что создание тегов заранее - хорошее решение.
Чем меньше пользователь совершает действий, тем лучше. Не думаю, что создание тегов заранее - хорошее решение.
Re: Теги на разных языках
Ну вот а как их вводить? В этом загвоздка. Сейчас перевод вводится просто на разных вкладках, а как сделать соответствие тегам - непонятно. Чтобы я знал, какой тег является переводом другого.
-
- Сообщения: 957
- Зарегистрирован: 2014.05.31, 20:50
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Теги на разных языках
А как у Вас реализовано подобное в новостях?
Re: Теги на разных языках
https://yadi.sk/i/Jy1arMMRa6hey вот таким образом
-
- Сообщения: 957
- Зарегистрирован: 2014.05.31, 20:50
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Теги на разных языках
Определённо, очень информативно. Здесь я уже ничем не смогу помочь.
Re: Теги на разных языках
Хм, может я вопрос неправильно понял? Модели с содержанием передаются в виде ассоциативного массива. View ашду формируется следующим образом:
Так как заголовков и содержаний на каждый язык строго по одному, соответствия выстроить не сложно. Но тегов будет неопределённое и количество и выводиться они, вероятно, будут в одно строковое поле. В этом и загвоздка, что в таком случае сопоставить переводы будет невозможно.
Код: Выделить всё
<?= $form->field($model, "[$model->lang]title")->textInput() ?>
<?= $form->field($model, "[$model->lang]content")->widget(ImperaviRedactor::className(), [
'settings' => [
'lang' => 'ru',
'minHeight' => 200,
'pastePlainText' => true,
'plugins' => [
'clips',
'fullscreen'
],
],
]) ?>