Php 如何在Drupal 6中为多个节点引用创建逗号分隔的列表?
我有一个作者内容类型,我在文章中切换为用户名。问题是一个故事可能有多个作者,template.php中的以下代码将只生成第一个作者。我如何将其输出为可读的“John Smith,Jane Doe和Mary Poppins | 2010年2月19日” 请记住,我也希望将其用于视图,以便节点引用也能在那里正确输出 谢谢, 史蒂夫使用插件怎么样 作者分类法允许您分配 一个或多个作者使用 作者姓名分类法中的术语。 本模块还提供了一个完整的 主题替换为您的署名 (用户名在日期提交) 文本) 以序列化格式显示作者姓名 态度:“简和杰克”或“简, 杰克和乔。” 检查是否需要其他方法。使用插件如何 作者分类法允许您分配 一个或多个作者使用 作者姓名分类法中的术语。 本模块还提供了一个完整的 主题替换为您的署名 (用户名在日期提交) 文本) 以序列化格式显示作者姓名 态度:“简和杰克”或“简, 杰克和乔。”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日” 请记住,我也希望将其用于视图,以便节点引用也能在那里正确输出 谢谢, 史蒂夫使用插件怎么样 作者分类法允许您分配 一个或多个作者使用 作者姓名分类法中的术语。 本模块还提供了一个完整的 主题替换为您的署名 (用户名在日期提交) 文本) 以序列化格式显
检查您是否需要不同的方法。假设您给出的示例可以输出第一作者,将所有作者放入逗号分隔列表的最直接解决方案如下:
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”等?我错过了你想要一个自然语言列表的事实,我在我的回答中添加了这个。这完全回答了你的问题吗