0

皆さんこんにちは!

これは、stackoverflow に関する私の最初の投稿です。何時間もの検索と試行錯誤の末、StackOverflow は多くの可能な修正を見つけました。私は、自分の Web デザイン作業のために、Wordpress を利用したポートフォリオ Web サイトを構築しています。これまでに大規模なカスタマイズを行ってきましたが、現在は最終段階に入っています。また、プラグインの直接サポートは期待していませんが、使用されているプラ​​グインを引用して、潜在的に役立つ可能性があることに注意してください.

序文:

  1. 私は NextGen Gallery というプラグインを使用しています。このプラグインは私のポートフォリオを強化します。私のすべてのクライアントは、ポートフォリオ サイトに表示する独自のギャラリーを持っています。
  2. Fancybox for Wordpress というプラグインもインストールしました。このプラグインにより、すべてのクライアントの見栄えの良いライトボックス表示が可能になります。
  3. NextGen Gallery のカスタム フィールドと呼ばれる 3 つ目のプラグインがあります。このプラグインを使用すると、各ギャラリーとその中の画像に固有のカスタム フィールドを追加できます。カスタム フィールド プラグインを介して追加されたリンクを介してカスタム サムネイルを作成することで、これを既に利用していることがわかります。

私の目標は、カスタム フィールド プラグインを利用して、各スライドに固有の html リッチ説明テキストと html リッチ クライアント タイトル テキストを追加することでした。スライドの上部にはクライアント名が表示され、スライドの下にはリンク付きの説明が表示されます。私はいくつかの進歩を遂げましたが、ここで立ち往生しています...

問題:

jquery.fancybox.js は、gallery-popportfolio.php (NGG のテンプレート ファイル) というファイルに記述されているため、"NextGen Custom Fields" プラグインによって生成された PHP 変数を使用しません。私はこれを広範囲にテストしましたが、同じ結果が得られました。いくつかの簡単なコードを追加:

gallery-popportfolio.php 内に、次のように配置します。

<?php $clientname = nggcf_get_gallery_field($gallery->ID, "clientnamelink"); ?>
<script type="text/javascript"> var clientname = '<?= $clientname ?>'; </script>
<script type="text/javascript" src=".../jquery.fancybox.js"></script>

jquery.fancybox.js 内にこれを挿入します: (これは抜粋です。追加するのは .append(clientname) だけです:

append('<div class="fancybox-bg" id="fancybox-bg-n">').append(clientname)

これが私にとって非常に興味深いのは、gallery-popportfolio.php 内で $clientname をテキスト行のような静的なものに割り当てた場合です。.js ファイルは変数を受け入れ、必要な場所に正確に配置します。問題は、この動的文字列を $clientname 変数に適用すると、何もレンダリングされないことです。これに加えて、PHP ファイルの複雑な変数で $clientname をエコーすると、正しい結果が得られます。

質問:

私は困惑しています、私はとても近いように見えましたが、適切な結果はありませんでした.

外部の .js ファイルがより複雑な php 変数を受け入れるようにする手順がありませんか?

私が書いたphpコードを別の場所に移動する必要がある可能性はありますか?

私の次の最善のステップは何ですか?

ノート:

私はこのスレッドに従って、現在の場所にたどり着きました: StackOverflow Thread

私のポートフォリオ サイトは次のとおりです: EoghanMcInerney.com

助けてくれてありがとう!とても有難い!

4

1 に答える 1

2

$clientname について、複雑な変数で「文字列ではない」ことを意味する場合、コードは機能しません。

このコード行では:

<script type="text/javascript"> var clientname = '<?= $clientname ?>'; </script>

$clientname文字を含まない文字列にする必要があります'。上記のコードを次のように変更することをお勧めします

<script type="text/javascript"> var clientname = <?= json_encode($clientname) ?>; </script>

追加するときは、文字列を作成して追加する必要がclientnameあります。

于 2012-05-17T23:16:48.057 に答える