0

Gravatar の php 実装については、次のページに説明があります。

https://en.gravatar.com/site/implement/images/php/

このコードを使用して、Drupal のユーザー プロファイルとユーザーの写真に実装しようとしています。

user-profile.tpl.php で電子メール アドレスを印刷できるようにする前処理関数を作成しました。

function THEMENAME_preprocess_user_profile(&$variables) {
    $account = $variables['elements']['#account'];
    foreach (element_children($variables['elements']) as $key) {
        $variables['user_profile'][$key] = $variables['elements'][$key];
    }
    $variables['user_profile']['mail'] = $account->mail;
    field_attach_preprocess('user', $account, $variables['elements'], $variables);
}

コードをuser-profile.tpl.phpに追加しました

print render($user_profile['mail']);

このコードは本来の機能を果たします。つまり、ユーザー プロファイルにメール アドレスが表示されます。次に、そのアドレスを使用して、後でプロファイルとユーザーの写真に gravatar を作成する必要があります。

Gravatar のサイトのチュートリアルとこのコードを接続しようとしましたが、成功しませんでした。コードは次のとおりです(少なくとも20の異なる組み合わせを試しました):

$email = "['user_profile']['mail']";
$default = "http://www.somewhere.com/homestar.jpg";
$size = 40;
function get_gravatar( $email, $s = 80, $d = 'mm', $r = 'g', $img = false, $atts = array() ) {
        $url = 'http://www.gravatar.com/avatar/';
        $url .= md5( strtolower( trim( $email ) ) );
        $url .= "?s=$s&d=$d&r=$r";
        if ( $img ) {
            $url = '<img src="' . $url . '"';
            foreach ( $atts as $key => $val )
                $url .= ' ' . $key . '="' . $val . '"';
            $url .= ' />';
        }
        return $url;
    }

私が理解している限り、問題は次の行にあります。

$email = "['user_profile']['mail']";

この行の引用符の間に入れる正しい表現は何ですか?

4

1 に答える 1

2

質問は基本的な PHP 構文に関するもので、$variables['user_profile']['mail']ネストされた配列 (つまり、配列内の配列) への単純なアクセスが使用されます。さらにprint render($user_profile['mail']);、ユーザーの電子メール アドレスを表示する場合は、$user_profile['mail']明らかにカスタムget_gravatar()関数に渡す電子メール アドレスです。

$variables['user_profile']['gravater_url'] = get_gravatar($user_profile['mail']); 

独自の実装を作成する代わりに、 Gravatar 統合モジュールを使用することをお勧めします。

于 2012-10-14T20:36:47.440 に答える