【问题标题】:How to get drupal custom profile values?如何获取 drupal 自定义配置文件值?
【发布时间】:2010-10-29 10:51:04
【问题描述】:

在用户个人资料表单中添加了一个复选框,订阅每日通讯。我想获取已订阅的用户列表(选中复选框)并向他们发送每日通讯。我如何在 drupal-6 中做到这一点。 (1) 获取所有订阅用户的列表 (2) 向他们发送电子邮件。

如果您能在代码级别进行解释,我将不胜感激。

【问题讨论】:

    标签: drupal


    【解决方案1】:

    如果您的个人资料字段是 profile_newsletter,您的:

    <?php
      function mymodule_get_subscribers() {
        $query = 'select * from {profile_fields} where `name`="%s";';
        $result = db_query($query,'profile_newsletter');
    
        $field = db_fetch_object($result);
    
        $user_query = 'select * from {profile_values} where `fid`=%d and `value`=1;';
        $result = db_query($user_query,$field->fid);
        $subscribers = array();
    
        while($subscriber = db_fetch_object($result)) {
          $subscribers[] = $subscriber->uid;
        }
    
        return $subscribers; // Your array of subscriber user IDs
      }
    ?>
    

    这段代码很快,未经测试,可能应该包含一些健全性检查。但它应该可以工作。

    对于发送时事通讯等,我建议使用预卷模块。我没有尝试过 Drupal,但 Simplenews 似乎可以解决问题。 http://drupal.org/project/simplenews

    如果没有别的,它可能包含一个很好的发送功能。否则只需使用 PHP mail()-function。

    【讨论】:

    • 只是插话说谢谢。这为我指明了一个好的方向!
    【解决方案2】:
    function your_custom_function ($user_id, "Field you want to get") {
    
    
          $result = db_query("SELECT t2.value FROM profile_fields t1, profile_values t2 where  
    
        t1.title='Field you want to get' and t2.uid=".$user_id." and t1.fid=t2.fid");
    
                        $field = db_fetch_object($result);
    
                        $profile_type =$field->value;
    
                        return $profile_type;
                   } 
    

    【讨论】:

    • 使用这个函数可以获得单个profile字段值,这样我们就可以避免使用单独的模块来获取profile字段作为token
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-27
    • 1970-01-01
    • 2016-05-02
    • 2021-11-08
    相关资源
    最近更新 更多