0

我想在论坛主题列表页面上显示订阅/取消订阅链接,以及列表中的每个主题。我在 mytheme_preprocess_forum_topic_list() 的 $topic 变量中有订阅链接的所有信息:

foreach ($variables['topics'] as $id => $topic) {

假设我想调用 notifications_get_link() 来获取取消订阅链接,我如何获取主题节点的任何现有订阅的订阅 ID (SID)?

我想我应该调用 notification_user_get_subscriptions(),但文档有点薄。一个例子会很棒。

4

1 回答 1

0

如果存在一个订阅,我的解决方案会为当前节点找到一个订阅,并组成一个可用于模板的订阅或取消订阅链接:

// find subscription
$subs = notifications_user_get_subscriptions(
        $user->uid,
        'node',
        $topic->nid, 
        $topic,     
        FALSE);

// compose link
$destination = "?destination=forum/idea-exchange";
if ($subs) {
   foreach ($subs as $key => $sub) {
      $link = notifications_get_link('unsubscribe', array(
              'sid' => $sub->sid, 
              'confirm' => FALSE));
      $variables['topics'][$id]->subscribe_link = 
         '<a class="unsubscribe" href="/'.$link['href'].
               $destination.'">'.t('Stop tracking this topic').'</a>';
      break;
   }
}
else {
  $link = notifications_get_link(
        'subscribe', 
        array('uid' => $user->uid, 
              'type' => 'thread', 
              'fields' => array('nid' => $topic->nid), 
              'confirm' => FALSE));
  $variables['topics'][$id]->subscribe_link = 
      '<a class="subscribe" href="/'.
       $link['href'].$destination.'">'.t('Track this topic').'</a>';
}

我最终为此使用了 CCK 计算字段,以便可以将其包含在视图中。有关更多上下文,请参阅此内容。

于 2010-10-10T17:27:49.427 回答