或者通过合作网站直接登录猪跑啦
用新浪微博登陆
用QQ账号登陆
我安装了og和og extra模块,并按相关文章完成了设置过程。
现在可以看到
我现在想请教: 点击“第一组”进去,如何列出该组下的所有组内容呢?下面的图片是没有的,只有像普通文章的介绍而已。
如果不好说明,告诉我思路也可以的,谢谢了。
还有按UI设计图的修改样式等问题,也可以告诉一下思路,谢谢!
你想象微博一样列出所有组的内容吧?我给你一个方法,就是用db_select 实现。
这里我定义了guild为组的内容类型。
$output = ''; $query = db_select('node','n')->extend('PagerDefault'); $query->leftJoin('field_data_field_guild_logo', 'i', 'n.nid = i.entity_id'); $query->leftJoin('field_data_body', 'b', 'n.nid = b.entity_id'); $query->fields('n')->fields('i')->fields('b'); $query->condition('n.status', 1) ->condition('n.type', 'guild') ->limit(20); $query->orderBy('created', 'DESC'); $objects = $query->execute()->fetchAll(); $rows = array(); foreach ($objects as $key=>$object) { $row = array(); $row['nid'] = $object -> nid; $row['title'] = l($object -> title, 'node/'.$object ->nid); $row['member_count'] = group_members_count($object ->nid); $row['image'] = l('<img src="'.image_style_url('142x121', yisi_file_uri($object -> field_guild_logo_fid)).'" title="'.$object -> title.'"/>', 'node/'.$object ->nid, array('html' => true,'attributes' => array('class' => array('thumbnail')))); $row['description'] = drupal_substr(check_markup($object -> body_value, 'plain', FALSE), 0, 50); $row['created'] = $object -> created; $row['more'] = l('[详细]', 'node/'.$object ->nid, array('attributes' => array('class' => array('more')))); $rows[] = $row; } $output .= theme('guild', array('rows' => $rows)); $output .= theme('pager'); return $output;
你参考一下
诗人,非常感谢你的答复。 我大概看明白了逻辑部分,新问题又来了。 1,我不知道怎么获取group ID
2,我不知道如何在页面显示这个group下的所有内容并列出来,因为group和group content全是node形式的。
如无记错,如果你是用node作为group的话,那nid就是gid,不知道是否记错。
对,是这样,我先尝试弄个模块。
诗人,其实我还不清楚nid在drupal是怎么获取的,
获取到后才能加入条件查询。
$query->condition('n.status', 1) ->condition('n.type', 'guild')
是不是要在自已写的模块里重写菜单?
function og_views_menu() { $items ['node/%'] = array ( 'title' => '小组', 'description' => '小组内容', 'page callback' => 'og_list_callback_page', 'page arguments' => array (1), 'access callback' => TRUE, ); return $items; } function og_list_callback_page($arg='') { if(empty($arg)){ exit(); } return $arg; }
是像这样么?但是没效果。
通过hook menu 生成一个新的地址,不用 node/% 改用 othername/% 。
可以按照飞翔的方式做,写个菜单地址作为群组的首页,然后把函数套入,放到菜单页。这样就能显示数据。
谢谢飞翔和诗人。我已按照你们说的做好了,还有一个小问题,就是分页器怎么显示呢?
逻辑部分代码:
function og_views_list_callback_page() { $output = ''; $query = db_select('node','n')->extend('PagerDefault'); $query->leftJoin('field_data_body', 'b', 'n.nid = b.entity_id'); $query->fields('n',array('nid','title','created'))->fields('b',array('body_value','body_summary')); $query->condition('n.status', 1) ->condition('n.type', 'group') ->limit(1); $query->orderBy('n.created', 'DESC'); $objects = $query->execute()->fetchAll(); $rows = array(); foreach ($objects as $key=>$object) { $row = array(); $row['gid'] = $object -> nid; $row['title'] = l($object -> title, 'groups/'.$object ->nid); $row['description'] = $object->body_summary; $row['created'] = $object -> created; $rows[] = $row; } $output .= theme('pager'); $output .= theme('grouds', array('rows' => $rows)); $output .= theme('pager'); return $output; }
tpl代码
<ul> <?php foreach($rows as $data){?> <li class="list"> <div class="title"><?php print $data['title']?></div> <?php print $data['description']?> <div class="created"><?php print $data['created']?></div> </li> <?php }?> </ul>
还有下面的回复表单,也没有啦,怎么调出来呢?
我想了解一下,如果这样的开发方式,我要加入新增的模块,也只能手工写代码引入么?
12 个回答
如果不好说明,告诉我思路也可以的,谢谢了。
海阔天空Lv 11
还有按UI设计图的修改样式等问题,也可以告诉一下思路,谢谢!
海阔天空Lv 11
你想象微博一样列出所有组的内容吧?我给你一个方法,就是用db_select 实现。
这里我定义了guild为组的内容类型。
你参考一下
分头诗人Lv 17
诗人,非常感谢你的答复。

我大概看明白了逻辑部分,新问题又来了。
1,我不知道怎么获取group ID
2,我不知道如何在页面显示这个group下的所有内容并列出来,因为group和group content全是node形式的。
海阔天空Lv 11
如无记错,如果你是用node作为group的话,那nid就是gid,不知道是否记错。
分头诗人Lv 17
对,是这样,我先尝试弄个模块。
海阔天空Lv 11
诗人,其实我还不清楚nid在drupal是怎么获取的,
获取到后才能加入条件查询。
是不是要在自已写的模块里重写菜单?
是像这样么?但是没效果。
海阔天空Lv 11
通过hook menu 生成一个新的地址,不用 node/% 改用 othername/% 。
放弃飞翔Lv 8
可以按照飞翔的方式做,写个菜单地址作为群组的首页,然后把函数套入,放到菜单页。这样就能显示数据。
分头诗人Lv 17
谢谢飞翔和诗人。我已按照你们说的做好了,还有一个小问题,就是分页器怎么显示呢?
逻辑部分代码:
tpl代码
海阔天空Lv 11
还有下面的回复表单,也没有啦,怎么调出来呢?
海阔天空Lv 11
我想了解一下,如果这样的开发方式,我要加入新增的模块,也只能手工写代码引入么?
海阔天空Lv 11