Региональное отображение контента для пользователей с соответствующим регионом в профиле - PullRequest
3 голосов
/ 19 июня 2011

Требуется отобразить весь публичный контент и весь контент, который был ограничен регионом зрителя.

В настоящее время это достигается созданием двух представлений в блоках на стандартной странице.Один просмотр настроен для отображения всех новостных статей, которые не имеют «N» в поле «ограничить область».Другое представление настроено для отображения всех новостных статей, которые имеют «Y» в поле «ограничить регион» И использует php-код в контекстном фильтре, чтобы добавить условие, что поле «регион» в новостной статье соответствует «региону»."поле в профиле пользователя.Размещение этих представлений в поле содержимого стандартной страницы приводит к странице, которая возвращает все новостные статьи, которые не ограничены, И все новостные статьи, которые ограничены регионом пользователя.

Нежелательные осложнения этой стратегии включают отдельную нумерацию страниц.и необходимость создания нескольких представлений для расширения функциональности до дополнительных типов контента или для расширения до городов или штатов.

Можете ли вы придумать способ применения сложного фильтра к одному представлению, чтобы избежать необходимостиза представление отдельного неограниченного представления с последующим представлением, ограниченным записями, чей регион соответствует региону зрителя?

Или применить фильтр как разрешение к полям?

Заранее спасибо,

Ответы [ 3 ]

1 голос
/ 22 сентября 2011

Довольно просто вы используете не тот инструмент для работы.

PHP не является вашим предпочтительным инструментом для этого, вы должны использовать SQL напрямую.

$q="SELECT * 
FROM 
articles 
WHERE 
limited_to_region=0

UNION

SELECT 
a.* 
FROM 
articles a 
INNER JOIN
regions r
ON
a.rid=r.id 
AND
r.id='".$_SESSION["user"]["region"]."';";

(я не знаю вашу модель данных, вы могли бы / должны иметь элемент отношения между ними и т. Д., Но эта лучшая практика далека от нормы, так что ...)

Таким образом, ваша фильтрация и все, что прозрачно для вашего интерфейса в любом случае, быстрее, без ограничений и не тратит время / пропускную способность на передачу ненужной информации.

0 голосов
/ 15 сентября 2011

Надеюсь, вы используете Местоположение для профилей и статей.

Звучит так, как будто вы хотите смешать эти два набора результатов в один список элементов.В свое время это было бы Представление Союза

Верьте, что Овидейу прав, что Просмотров ИЛИ является самым современным решением для этого.Это говорит dev, но люди используют его в производстве.

Если у вас нет , у вас есть , чтобы объединить два набора, которые вы могли бы использовать Просмотры Исключить Предыдущий , чтобы позаботиться оВаши дубликаты.

К сожалению, когда я делал это в прошлом, нам приходилось создавать собственные собственные (пока кэшированные) выходные решения, потому что мы могли контролировать запрос.Но вы все равно можете использовать запросы drupal и node_loads для использования шаблонов и т. Д.

0 голосов
/ 12 июля 2011

добавьте еще один столбец за вашей таблицей [статьи, новости] в базе данных для тегов (типа текста) [можно задать несколько тегов, разделите их запятыми], затем создайте другую таблицу, содержащую теги, присвойте идентификатор этим тегамваши статьи / новости.Вы можете отфильтровать этот контент, найдя местоположение пользователя по IP-адресу или установив файл cookie, если вы каким-то образом знаете, откуда приходит пользователь.

...