php - 区域化内容显示给具有配置文件中匹配区域的用户

标签 php drupal localization internationalization

要求是展示所有公开的内容和所有已经限制在浏览者区域的内容。

目前这是通过在标准页面上以 block 的形式生成两个 View 来实现的。一个 View 被设置为显示在“restrict to region”字段中没有“N”的所有新闻文章。另一个 View 被设置为显示在“restrict to region”字段中具有“Y”的所有新闻文章,并在上下文过滤器中使用 php 代码来添加新闻文章中的“region”字段与“region”匹配的条件"用户配置文件中的字段。在标准页面的内容字段中堆叠这些 View 会生成一个页面,该页面返回所有不受限制的新闻文章以及所有限制在用户区域的新闻文章。

此策略的不良并发症包括单独的分页和创建多个 View 以将功能扩展到其他内容类型或扩展到城市或州的必要性。

您能想出一种方法来在单个 View 上应用复杂的过滤器,以避免需要先呈现一个单独的不受限制的 View ,然后再呈现一个仅限于区域与查看者区域匹配的记录的 View 吗?

或者将过滤器作为对字段的权限应用?

提前致谢

最佳答案

很简单,您在工作中使用了错误的工具。

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"]."';";

(我不知道你的数据模型,你可以/应该在两者之间有一个关系项等等,但是这个最佳实践与规范相去甚远......)

通过这种方式,您的过滤和所有对您的前端来说无论如何都是透明的,更快、无限并且不会浪费时间/带宽来传输不需要的信息。

关于php - 区域化内容显示给具有配置文件中匹配区域的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6398751/

相关文章:

Drupal Drush : Drush command terminated abnormally due to an unrecoverable error

iphone - 如何找到本地化目录的路径?

ios - 如何在iOS中从NSLocale获取特定国家/地区的语言?

PHP 在 Windows 机器上安装 SSH2

javascript - 重新加载页面时保持页面设置

class - 是否有 drush 命令可以从自定义类调用方法?

php - 在 Drupal 7 中使用 RESTful 模块创建用户 API

ios - Xcode 9 - "Fixed Width Constraints May Cause Clipping"和其他本地化警告

php - 通过 AJAX POST 数据并设置为变量

javascript - 如何将静态古腾堡 block 转换为动态 block 并使用 PHP 注册它?