0

私は WordPress サイトで Fancyapps の FancyBox を使用しています。唯一のことは、クライアントが PDF をダウンロードまたは表示する機能を追加したいということです。

したがって、サイト上の画像をクリックすると、その画像の大きなバージョンを表示する FancyBox モーダル ウィンドウが表示されます。FancyBox モーダル ウィンドウの右下隅に、「PDF」というボタンを追加しました。

WordPress の各投稿に PDF を添付し、[PDF] ボタンをクリックすると、関連する PDF をダウンロード/表示できるようにする必要があります (ブラウザーとプラグインによって異なります)。

fancybox ソース ディレクトリ (jquery.fancybox.pack.js) に PDF ボタンを追加する場所を見つけましたが、各投稿に添付された PDF にリンクするためのグローバル変数が何であるかわかりません。

コードは次のとおりです (34 行目)。

if(c=a.current.title)c=d('<div class="fancybox-title fancybox-title-'+b.type+'-wrap">'+c+"</div><a class='pdf_dl' href='{href}' target='blank'>PDF</a>").appendTo("body"),"float"===b.type&&(c.width(c.width()),c.wrapInner('<span class="child"></span>'),a.current.margin[2]+=Math.abs(parseInt(c.css("margin-bottom"),10))),c.appendTo("over"===b.type?a.inner:"outside"===b.type?a.wrap:a.skin)}};d.fn.fancybox=function(b){var c=d(this),e=this.selector||"",f,g=function(g){var h=this,j=f,k;!g.ctrlKey&&!g.altKey&&!g.shiftKey&&!g.metaKey&&!d(h).is(".fancybox-wrap")&&

何か案は?私はこれについて間違った方法で行っているかもしれません..ありがとう!

4

1 に答える 1

0

ここには2つの関連トピックがあります

クライアント側:Fancybox

あなたが言ったように、あなたはファンシーボックスウィンドウを変更してダウンロードリンクを追加する必要があります。Fancyboxの元のソースファイルを操作するのは悪い考えだと思います(ほとんど読めない縮小版の一部を投稿したようです)。Fancyboxの新しいバージョンがリリースされたらどうしますか?変更を新しいバージョンに手動で移植する必要があります。

代わりに、Fancyboxが提供するコールバックを利用してください。たとえば、独自のJavaScriptをbeforeShowコールバックにフックし、そこでFancyboxウィンドウ要素を操作します。URL(以下を参照)を取得し、そのURLへの目的のリンクを作成する必要があります。

サーバー側:Wordpress

リンクする必要のあるPDFファイルを知るために、WordpressはURLをページに配置する必要があります。Fancyboxを開いたときにのみ表示するため、非表示にする必要があります。簡単な方法は、隠しリンクを使用することです。

<a href="/wp-content/uploads/myfile.pdf" id="pdflink" style="display: none;"></a>

実装はニーズによって異なります。Wordpressテーマでは、データベースから情報を取得するためにを使用できwp_get_attachment_url()ますget_posts()

Wordpressのサンプルコードを、投稿の最初のPDF添付ファイルのURLを返す関数に変更する方法の提案を次に示します(ただし、テストされていません)。

function getPdfUrlForPost( $postId ){
    $args = array(
        'post_type' => 'attachment',
        'numberposts' => -1,
        'post_status' => null,
        'post_parent' => $postID
    );

    $attachments = get_posts( $args );
    if ( $attachments ) {
        foreach ( $attachments as $attachment ) {
          $url = wp_get_attachment_url( $attachment->ID );   
          if( substr(strrchr($url,'.'), 1) == 'pdf' ){
              return $url
          }
        }
        return false;
     }
}
于 2012-06-25T12:16:40.653 に答える