0

このフォーラムの誰かが、Buddypress用に作成しようとしているカスタムアバターアップロードページを手伝ってくれることを願っています。長いメールを前もってお詫びしますが、明確で具体的な回答が得られるように、できるだけ明確にしたいと思います:)

このページは、ユーザーがWebサイトに登録した後に完了する3つのステップの「開始」プロセスの一部です(1.プロファイルフィールドへの入力2.アバターのアップロード3.友達の招待)。

私はコードの専門家ではありませんが、profile/edit.phpファイルとinvite-anyone/by-email / by-email.phpファイルからそれぞれコードをコピーして編集し、次に実行することで、ステップ1と3を並べ替えました。次のステップへのリダイレクトonsubmit。

手順1を機能させるには、bp-xprofile-template.phpファイルを編集してif is_page ... else ...を含め、ページがdisplayed_userではなくloggedin_userを使用するようにする必要もありました。

手順2では、ページが正しく表示されますが、アバターの画像を選択して[アップロード]をクリックすると、ページが更新され、切り抜きに移動しません。これは、変更アバターにアバターをアップロードした場合の動作です。プロファイル内のページ。

ログインしたユーザープロファイル内のアバター変更ページにリダイレクトするようにフォームアクションを変更すると(デフォルトではアクションはありません)、切り抜きが表示されますが、ユーザーに「ステップ」を終了させたくありません。

他のページで機能するように、bp-core-template.phpのavatar_admin関数のセットで何かを変更する必要があるかもしれないと思いましたが、これは私の能力を超えていません。これがこのプロセスを完了するための最後のハードルであるため、誰かがこれを手伝ってくれることを本当に望んでいます。

以下はchange-avatar.phpのコードです。これは私がコピーしたもので、カスタムページで機能させようとしています。「if('crop-image' == bp_get_avatar_admin_step()」でページが正常に機能しなくなります。よろしくお願いします。

    <h4><?php _e( 'Change Avatar', 'buddypress' ) ?></h4>

<?php do_action( 'bp_before_profile_avatar_upload_content' ) ?>

<?php if ( !(int)bp_get_option( 'bp-disable-avatar-uploads' ) ) : ?>

    <p><?php _e( 'Your avatar will be used on your profile and throughout the site. If there is a <a href="http://gravatar.com">Gravatar</a> associated with your account email we will use that, or you can upload an image from your computer.', 'buddypress') ?></p>

    <form action="" method="post" id="avatar-upload-form" class="standard-form" enctype="multipart/form-data">

        <?php if ( 'upload-image' == bp_get_avatar_admin_step() ) : ?>

            <?php wp_nonce_field( 'bp_avatar_upload' ) ?>
            <p><?php _e( 'Click below to select a JPG, GIF or PNG format photo from your computer and then click \'Upload Image\' to proceed.', 'buddypress' ) ?></p>

            <p id="avatar-upload">
                <input type="file" name="file" id="file" />
                <input type="submit" name="upload" id="upload" value="<?php _e( 'Upload Image', 'buddypress' ) ?>" />
                <input type="hidden" name="action" id="action" value="bp_avatar_upload" />
            </p>

            <?php if ( bp_get_user_has_avatar() ) : ?>
                <p><?php _e( "If you'd like to delete your current avatar but not upload a new one, please use the delete avatar button.", 'buddypress' ) ?></p>
                <p><a class="button edit" href="<?php bp_avatar_delete_link() ?>" title="<?php _e( 'Delete Avatar', 'buddypress' ) ?>"><?php _e( 'Delete My Avatar', 'buddypress' ) ?></a></p>
            <?php endif; ?>

        <?php endif; ?>

        <?php if ( 'crop-image' == bp_get_avatar_admin_step() ) : ?>

            <h5><?php _e( 'Crop Your New Avatar', 'buddypress' ) ?></h5>

            <img src="<?php bp_avatar_to_crop() ?>" id="avatar-to-crop" class="avatar" alt="<?php _e( 'Avatar to crop', 'buddypress' ) ?>" />

            <div id="avatar-crop-pane">
                <img src="<?php bp_avatar_to_crop() ?>" id="avatar-crop-preview" class="avatar" alt="<?php _e( 'Avatar preview', 'buddypress' ) ?>" />
            </div>

            <input type="submit" name="avatar-crop-submit" id="avatar-crop-submit" value="<?php _e( 'Crop Image', 'buddypress' ) ?>" />

            <input type="hidden" name="image_src" id="image_src" value="<?php bp_avatar_to_crop_src() ?>" />
            <input type="hidden" id="x" name="x" />
            <input type="hidden" id="y" name="y" />
            <input type="hidden" id="w" name="w" />
            <input type="hidden" id="h" name="h" />

            <?php wp_nonce_field( 'bp_avatar_cropstore' ) ?>

        <?php endif; ?>

    </form>

<?php else : ?>

    <p><?php _e( 'Your avatar will be used on your profile and throughout the site. To change your avatar, please create an account with <a href="http://gravatar.com">Gravatar</a> using the same email address as you used to register with this site.', 'buddypress' ) ?></p>

<?php endif; ?>

<?php do_action( 'bp_after_profile_avatar_upload_content' ) ?>
4

3 に答える 3

0

「if('crop-image' == bp_get_avatar_admin_step()」でページが正しく機能しなくなります

では、その時点でbp_get_avatar_admin_step()=は何ですか?エコーして見てください。

アバターは実際にアップロードされますか?もしそうなら、あなたはadmin_stepを進める方法を理解する必要があります。

bp-core-template.phpのavatar_admin関数のセットで何かを変更する必要があるかもしれないと思いましたが、これは私の能力を超えていません

変更するのではなく、それらがどのように呼ばれるかを理解します。

于 2012-05-16T14:20:47.577 に答える
0

有益な提案をありがとうございます。@Zenviedの提案は非常にうまく機能することを追加するだけです。唯一のことは、「bp_core_add_cropper_inline_js()」と「bp_core_add_cropper_inline_css()」の独自の実装を追加し、「xprofile_screen_change_avatar()」の実装内から呼び出す必要があったことです。したがって、これの代わりに:

 wp_enqueue_style( 'jcrop' );
 wp_enqueue_script( 'jcrop', array( 'jquery' ) );
 add_action( 'wp_footer', 'bp_core_add_cropper_inline_js' );
 add_action( 'wp_footer', 'bp_core_add_cropper_inline_css' );

これは私がしました:

self::bp_custom_core_add_cropper_inline_css();
self::bp_custom_core_add_cropper_inline_js();
wp_enqueue_style( 'jcrop' );
wp_enqueue_script( 'jcrop', array( 'jquery' ) );

これが誰かを助けることを願っています! :-)

于 2014-05-05T14:53:02.093 に答える