1

Drupal 6 のカスタム テーマで編集可能な背景画像を作成する方法に頭を悩ませています。私のクライアントは、Web サイトの各メイン セクション (複数のコンテンツ タイプ: ページ、ブログ、画像ギャラリー) で異なる背景画像を使用したいと考えており、すべてを動的に保つために、背景画像を編集可能にしたいと考えています。

私がやりたいのは、ユーザーがコンテンツ ライブラリから画像を参照したり、新しい画像をアップロードしたり (ImageAssist と同様) したり、テンプレートの領域に適用したりできるように、さまざまなコンテンツ タイプに背景画像フィールドを追加することです。 . これに対する最善のアプローチに関する提案はありますか?

カスタム コンテンツ タイプを動的背景画像ブロックにする方法はありますか? Image、Image Cache、Views、CCK、Image Assist、Panels、Filefield、および Imagefield モジュールを使用しています。

ありがとうございました!

4

4 に答える 4

2

関数 phptemplate_preprocess を使用していますか? 見逃したかもしれませんが、drupal の API サイトにそのような機能はありません。 'function THEMENAME_preprocess_page(&$vars)'
として実装し、テーマ ディレクトリにある template.php に配置する必要がある phptemplate_preprocess_page を使用する必要があると思います。 ほとんどの場合、関数は既にそこに存在するため、その末尾に次の行を追加する必要があります: field_background は cck フィールドであることに注意してください 。


global $base_url;
if (!empty($vars['node']->type)) {
if (($vars['node']->type == 'CONTENT-TYPE-A') || ($vars['node']->type == 'CONTENT-TYPE-B') {
$vars['background'] = $base_url."/".$vars['node']->field_background[0]['filepath']; }
}

あなたの page.tpl.php に関しては、body タグに画像を入力したくありません。これを a div 内に配置すると、柔軟性が向上します (たとえば、画像をブラウザーの上部から 20 ピクセル下に配置する場合)。例:
<div id="main" >
<div id="page" style='background: url("<?php print $background ?>") no-repeat;'>

これがavnerに役立つことを願っています

于 2010-05-03T05:23:40.790 に答える
1

私は最近、そのようなサイトに取り組んでいます。私がしたことは次のとおりです。1.サイト管理者が新しい背景をアップロードできるこの画像のコンテンツフィールドを作成します2.template.phpで、画像の場所を新しい$var ['background']に追加しました3. pape.tpl.php で、すべてのページのコンテンツを含むボディ内に div を追加しました。コードの削除): [body class="[?php print $body_classes; ?]"] [div id="page" style='background: url("[?php print $background ?]") no-repeat;' ] [/div] [/body] これが Avner に役立つことを願っています

于 2010-03-16T09:59:10.547 に答える
0

よりシンプルでクリーンな方法は、phptemplate_preprocess_page() 関数内に template.php を追加することです。

if (isset($node->field_background[0]['filepath']) ){ $vars['styles'] .= ' '; $vars['styles'] .= 'div#page{background: url("'.$base_url.'/'.$node->field_background[0]['filepath'].'");}'; $vars['styles'] .= ''; }

于 2010-06-02T13:48:29.690 に答える
0

現在、URL をハードコーディングしていますが、動的にする方法を理解するまではまったく意味がありません。これが私の template.php ファイルの一部です:

function phptemplate_preprocess(&$vars, $hook) {
  $vars['background'] = base_path().'sites/default/files/wood-med.jpg';
   //...
}

そして、これが私の page.tpl.php ファイルの関連セクションです。

  </head>

    <body class="<?php print $body_classes ?>" style='background-image: url("<?php print $background ?>");background-repeat: repeat-y;'>
      <div id="pageWrapper">
      // ....

Background Image ノード タイプを作成しました。それを使用して、ページ、イメージ、またはギャラリー ノードに選択するイメージのリストを提供したいと考えています。これを接続する方法についてのアイデアはありますか?

于 2010-04-11T05:39:50.867 に答える