Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.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
Php 如何在Drupal 6中为多个节点引用创建逗号分隔的列表?_Php_Drupal 6_Drupal Views_Theming - Fatal编程技术网

Php 如何在Drupal 6中为多个节点引用创建逗号分隔的列表?

Php 如何在Drupal 6中为多个节点引用创建逗号分隔的列表?,php,drupal-6,drupal-views,theming,Php,Drupal 6,Drupal Views,Theming,我有一个作者内容类型,我在文章中切换为用户名。问题是一个故事可能有多个作者,template.php中的以下代码将只生成第一个作者。我如何将其输出为可读的“John Smith,Jane Doe和Mary Poppins | 2010年2月19日” 请记住,我也希望将其用于视图,以便节点引用也能在那里正确输出 谢谢, 史蒂夫使用插件怎么样 作者分类法允许您分配 一个或多个作者使用 作者姓名分类法中的术语。 本模块还提供了一个完整的 主题替换为您的署名 (用户名在日期提交) 文本) 以序列化格式显

我有一个作者内容类型,我在文章中切换为用户名。问题是一个故事可能有多个作者,template.php中的以下代码将只生成第一个作者。我如何将其输出为可读的“John Smith,Jane Doe和Mary Poppins | 2010年2月19日”

请记住,我也希望将其用于视图,以便节点引用也能在那里正确输出

谢谢, 史蒂夫

使用插件怎么样

作者分类法允许您分配 一个或多个作者使用 作者姓名分类法中的术语。 本模块还提供了一个完整的 主题替换为您的署名 (用户名在日期提交) 文本)

以序列化格式显示作者姓名 态度:“简和杰克”或“简, 杰克和乔。”

检查是否需要其他方法。

使用插件如何

作者分类法允许您分配 一个或多个作者使用 作者姓名分类法中的术语。 本模块还提供了一个完整的 主题替换为您的署名 (用户名在日期提交) 文本)

以序列化格式显示作者姓名 态度:“简和杰克”或“简, 杰克和乔。”


检查您是否需要不同的方法。

假设您给出的示例可以输出第一作者,将所有作者放入逗号分隔列表的最直接解决方案如下:

foreach($node->field_author as $author) {
  $authors[] = $author[view];
}
$author_list = implode(', ', $authors);
然后您将输出
$author\u列表
以代替
$node->field\u author[0][view]

一种更为“Drupal”的方法是将modules/cck/theme/content-field.tpl.php复制到您的主题目录,然后将其复制为content-field-field\u author.tpl.php。然后,您可以对新文件进行更改,这将覆盖“author”字段值的显示方式。然后,您可以在自定义节点[node\u type].tpl.php文件中的任意位置输出主题字段\u author值。(您可能需要通过管理>站点配置>性能上的按钮清除缓存数据,以便第一次加载自定义模板。)

如果视图的“行样式”设置为“节点”,则它也将使用节点和字段模板。如果将其设置为“字段”,则需要在视图中单独设置字段的主题。查看视图的“主题:信息”,了解可以在主题中覆盖的视图模板

编辑:
错过了你想要自然语言列表的事实。这需要更多的时间,但这里有一个Drupalized函数可以做到这一点:

function implode_language($array = array()) {
  $language_string = '';
  if (count($array)) {
    // get the last element    
    $last = array_pop($array);
    // create a natural language list of elements if there are more than one
    if (count($array)) {
      $language_string = implode(', ', $array) .' '. t('and') .' '. $last;
    }
    else {
      $language_string = $last;
    }
  }
  return $language_string;
}
然后,当然,使用下面的代码块代替上面最后一行我的第一个代码块:

$author\u list=内爆语言($authors)

假设您给出的示例可以输出第一个作者,将所有作者放入逗号指定列表的最直接解决方案如下:

foreach($node->field_author as $author) {
  $authors[] = $author[view];
}
$author_list = implode(', ', $authors);
然后您将输出
$author\u列表
以代替
$node->field\u author[0][view]

一种更为“Drupal”的方法是将modules/cck/theme/content-field.tpl.php复制到您的主题目录,然后将其复制为content-field-field\u author.tpl.php。然后,您可以对新文件进行更改,这将覆盖“author”字段值的显示方式。然后,您可以在自定义节点[node\u type].tpl.php文件中的任意位置输出主题字段\u author值。(您可能需要通过管理>站点配置>性能上的按钮清除缓存数据,以便第一次加载自定义模板。)

如果视图的“行样式”设置为“节点”,则它也将使用节点和字段模板。如果将其设置为“字段”,则需要在视图中单独设置字段的主题。查看视图的“主题:信息”,了解可以在主题中覆盖的视图模板

编辑:
错过了你想要自然语言列表的事实。这需要更多的时间,但这里有一个Drupalized函数可以做到这一点:

function implode_language($array = array()) {
  $language_string = '';
  if (count($array)) {
    // get the last element    
    $last = array_pop($array);
    // create a natural language list of elements if there are more than one
    if (count($array)) {
      $language_string = implode(', ', $array) .' '. t('and') .' '. $last;
    }
    else {
      $language_string = $last;
    }
  }
  return $language_string;
}
然后,当然,使用下面的代码块代替上面最后一行我的第一个代码块:

$author\u list=内爆语言($authors)

澄清问题:
字段作者
是一个CCK节点引用字段,仅限于自定义内容类型“author”,并允许多个值-正确吗?正确-字段作者和字段发布日期都是自定义内容类型澄清问题:
字段作者
是CCK节点引用字段,仅限于自定义内容类型“Author”,并允许多个值-正确吗?正确-field_Author和field_publish_date都是自定义内容类型我看到了这一点,但问题是所有数据导入、视图结构等都已经发生,我没有豪华atm。对此表示抱歉。我认为@ashtonium的答案更适合你的问题。。。祝你好运我看了这个,但问题是所有的数据导入,视图结构等都已经发生了,我没有豪华的atm机。很抱歉。我认为@ashtonium的答案更适合你的问题。。。祝你好运谢谢ashtonium,我该如何获得“John,Jane and Mary”或“John and Mary”等等?我错过了你想要自然语言列表的事实,我已经在我的答案中添加了这个。这完全回答了你的问题吗?非常感谢ashtonium。在我自己尝试之后,我有了另一个解决方案,但这有点优雅。谢谢ashtonium,我该如何获得“John,Jane and Mary”或“John and Mary”等?我错过了你想要一个自然语言列表的事实,我在我的回答中添加了这个。这完全回答了你的问题吗