Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Drupal查看非拉丁字母词汇表_Drupal_Views_Drupal 7_Drupal Views - Fatal编程技术网

Drupal查看非拉丁字母词汇表

Drupal查看非拉丁字母词汇表,drupal,views,drupal-7,drupal-views,Drupal,Views,Drupal 7,Drupal Views,嗯,我在drupal.org和stack overflow上搜索过,没有找到类似的问题,我希望我没有遗漏什么 我正在drupal 7中构建一个站点,其中的内容需要按字母分组。术语表中的视图构建似乎是最好的解决方案,而且效果很好。唯一的问题是我使用了像ĐĆŽ这样的非拉丁字母,顺序混乱。我需要像Gaj的拉丁字母表一样的顺序: A B CĆDžE F G H I J K L L M N Nj O p R SĆT U V ZŽ 正如你所看到的,也有一个问题,因为有“两个字母”的字母,但将Lj显示为L将是

嗯,我在drupal.org和stack overflow上搜索过,没有找到类似的问题,我希望我没有遗漏什么

我正在drupal 7中构建一个站点,其中的内容需要按字母分组。术语表中的视图构建似乎是最好的解决方案,而且效果很好。唯一的问题是我使用了像ĐĆŽ这样的非拉丁字母,顺序混乱。我需要像Gaj的拉丁字母表一样的顺序:

A B CĆDžE F G H I J K L L M N Nj O p R SĆT U V ZŽ

正如你所看到的,也有一个问题,因为有“两个字母”的字母,但将Lj显示为L将是一个我可以接受的解决方案。最大的问题是C和Ć显示在Ć下,但Đ与D分开,因此我得到:

例如,A(1)| |(3)|D(1)|Ž(1)|Đ(1)


这个问题有一个优雅的解决方案吗?将C和Ć从Č中分离或合并D和Đ。请帮忙。

你的网站都是俄语吗?如果是这样,请查看此页面,它位于Drupal.org的本地化子域localize.Drupal.org,该子域专用于以英语以外的语言创建Drupal站点。使用Drupal7,可以安装多种语言的本地化版本,包括俄语


虽然我还没有尝试过,但我相信安装一个本地化版本是值得的,以查看术语表是否能按照您的意愿工作。如果没有,请告诉我们后面的情况。

我参加这次聚会已经很晚了

坏消息:这完全是由于SQL排序规则,而不是视图。通常的Drupal数据库排序规则utf8_general_ci指示MySQL在GROUP和WHERE语句中将这些字符视为相等

特别是,;用于生成术语表的视图查询当前为:

SELECT SUBSTRING(node.title, 1, 1) AS title_truncated, COUNT(node.nid)
AS num_records
FROM 
{node} node
WHERE (( (node.status = '1') AND (node.type IN  ('my_nodetype')) ))
GROUP BY title_truncated
ORDER BY title_truncated ASC
LIMIT 10 OFFSET 0
此处的GROUP BY将删除列为相等unicode字符的排序规则之间的任何差异,因为它将它们分组并视为相等

好消息:通过实现hook\u views\u query\u alter()来指示MySQL对视图进行分组以及在何处使用排序规则utf8\u bin,可以快速解决这一问题

/**
*hook\u views\u query\u alter()的实现。
*/
函数mymodule_view_query_alter(&$view,&$query){
如果($view->name=='my_view'){
//停止术语表对字符的平等处理。
如果($view->is\u附件){
foreach($query->groupby as&$condition\u group){
如果($condition\u group=='title\u truncated'){
$condition\u group=“title\u截断的校对utf8\u bin”;
}
}
}
//重写附加视图以筛选唯一字符。
否则{
foreach($query->where as&$condition\u where){
foreach($condition_,其中['conditions']as和$cur_condition){
如果($cur_条件['field']=='SUBSTRING(node.title,1,1)=:node_title'){
$cur_条件['field']='子字符串(node.title,1,1)=:node_title COLLATE utf8_bin';
}
}
}
}
}
}

希望这对遇到这种情况的其他人有所帮助。

该网站是塞尔维亚语的,Drupal的翻译尚未完成。但我仍然认为,即使有了翻译,字母顺序也将保持不变。我设法用分类法找到了一个解决方案。我用板条箱装了一个词汇表,里面有我需要的所有字母,并用重量来排序。即使是新泽西州的Lj。。。没问题。然后在视图中我创建了一个块,现在我可以把字母放在任何我想要的地方:)很高兴听到你解决了这个问题。分类法和视图可以一起做很多事情!