Хорошо, я просто объясню это:
У меня есть одна база данных, в которой есть контент, но мне нужно настроить условие, если пользователь выбрал Великобританию вместо США или наоборот – какой-то контент не покажет. Это условие может быть применено через флажок в бэкэнде.
«Привет, я – параграф» в [x] британском [x] США
Я не рассматриваю фактические IP-адреса или что-то в этом роде, так как сайт будет просто перенаправляться в подпапки root / uk или root / us по выбору пользователя на индексной странице. Какой уникальный параметр я бы включил в db или php?
Спасибо!
Добавьте столбец в display_content базы данных, сделайте его EMUN и установите значения «britain», «usa», «all», затем внесите корректировки в свой код, чтобы проверить наличие Великобритании / США. вы можете выбрать для отображения всех, Великобритании или США.
Это интересная проблема. Потому что хотя он ориентирован на язык, на самом деле это не связано с I18N – вы говорите о запрете доступа к контенту на основе предпочтения языка, а не для отображения локализованного контента.
Вот одна идея: используйте модель разрешения
Тогда возникает вопрос, как вы подключаете контент к разрешениям? Существует множество способов, но один подход – это битмакс-столбец.
00 || |+--- Read enUS bit +---- Read enGB bit
Что может выглядеть так, когда оно реализовано
Articles +----+---------+-----------------+ | id | content | read_perm_level | +----+---------+-----------------+ | 1 | foo | 1 | | 2 | bar | 2 | | 3 | baz | 3 | +----+---------+-----------------+
Это означает, что «foo» доступен только для чтения enus, «bar» доступен только для чтения enGB, а «baz» доступен для всех.
Но вы также можете сделать таблицу полного разрешения и подключить к ней контент таким образом.
Самой простой моделью для этого была бы ассоциативная таблица в вашей базе данных. Таким образом, вы должны:
paragraphs (paragraph_id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, paragraph_text TEXT, ...) ENGINE=InnoDB; paragraph_countries (paragraph_id INT UNSIGNED, country_code CHAR(2)) ENGINE=Innodb;
При сохранении настроек абзаца выполните следующие действия:
BEGIN WORK
(для начала транзакции) DELETE FROM paragraph_countries WHERE paragraph_id = ...
INSERT INTO paragraph_countries (...)
COMMIT
(для совершения транзакции) Чтобы выбрать абзацы, относящиеся к текущей стране, просто присоедините к соответствующей таблице соответствующий код страны.