Drupalのテーマで、古いIE向けに条件コメント付きのJavaScriptの読み込み方法です。
テーマディレクトリ内の「template.php」ファイルにプリプロセスとして次のように記述します。
|
<?php function THEMENAME_preprocess_html(&$variables) { drupal_add_html_head(array( '#tag' => 'script', '#attributes' => array('src' => drupal_get_path('theme', 'THEMENAME').'/js/ie9.js'), '#prefix' => '<!--[if lt IE 9]>', '#suffix' => '</script><![endif]-->' ), 'ie9' ); } ?> |
実際のレンダリングでは次のようになります。
|
<!--[if lt IE 9]> <script src="sites/all/themes/THEMENAME/js/ie9.js" /></script> <![endif]--> |
CakePHPで作成したサイトのサーバ引っ越しは比較的簡単に行えます。
基本的にはファイル一式とデータベースを新サーバにコピーして、データベース情報を「app/Config/database.php」にて、新しい情報に書き換えます。
上記の作業のみでおおむね引っ越しは完了ですが、注意点としては「app/tmp/~」内のキャッシュファイルなどが影響して表示がおかしくなる場合があるので、このディレクトリ内の不要ファイルを削除しておいた方が安心です。
Drupal7の「page.tpl.php」内に、追加で作成したアカウントのフィールドを表示する際のメモです。
|
<?php global $user; if (user_is_logged_in()) { $user = user_load($user->uid); if ($user->field_name) {//「field_name」というフィールドの場合 print $user->field_name['und'][0]['safe_value']; } } ?> |
上記では管理画面の「アカウントの設定 > フィールドの管理」ページにて、本名として「field_name」というフィールドを作成した場合です。
「node.tpl.php」などのテンプレートに直接ブロックを表示する方法はいくつかあります。
「サイト構築 > ブロック」で追加したカスタムブロックでは主に下記の3つの方法があります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
<?php //ブロックID = 1 $block = block_custom_block_get(1); $content = $block['body']; print $content; //または $block = block_load('block', 1); $block_render = _block_render_blocks(array($block)); $block_array = _block_get_renderable_array($block_render); $block_content = drupal_render($block_array); print $block_content; //または $block = module_invoke('block', 'block_view', 1); print render($block['content']); ?> |
最初の「block_custom_block_get()」はブロックIDを引数に渡して、ブロックの情報を取得します。
2番目の「block_load()」はDrupal 7から導入された機能で、やや冗長になってしまい、あまり使いやすくはありません。
3番目の「module_invoke()」はモジュールとしてのblockとして情報を取得します。
2番目と3番目に関してはカスタムブロックのほかに、下記に記述するViewsなどのモジュールでも利用できます。
|
<?php //モジュール = views //viewsの名前 = test //ブロックid = block $block = block_load('views', 'test-block'); $block_render = _block_render_blocks(array($block)); $block_array = _block_get_renderable_array($block_render); $output = drupal_render($block_array); print $output; //または $block = module_invoke('views', 'block_view', 'test-block'); print render($block['content']); ?> |
上記はViewsの場合ですが、モジュール名とブロックのデルタ名(test-block)を引数にとります。
デルタ名は「サイト構築 > ブロック」にアクセスして、該当するブロックの設定ページのアドレスから確認できます。
|
/admin/structure/block/manage/views/test-block/configure |
Viewsの場合「CONTEXTUAL FILTERS」で引数を与えたい場合には、次の「views_embed_view()」で可能です。
|
<?php //viewsの名前 = test //ブロックid = block //引数 = 1 (nidなど) $block = views_embed_view('test', 'block', 1); print render($block); ?> |
Viewsの場合であれば、この方法が最もシンプルで利便性が高いです。
Drupal 7では標準でjQuery UIが搭載されていて、一部のモジュールやオリジナルのテーマに利用することができます。
ただjQuery UIのテーマが基本デザインのものなので、サイトのデザインとマッチしないこともあります。
そのような場合には、オリジナルテーマ内の「template.php」に次のように記述することで、自由に変更することができます。
|
function THEMENAME_css_alter(&$css) { if (isset($css['misc/ui/jquery.ui.theme.css'])) { $alter = drupal_get_path('theme', 'THEMENAME').'/ui/jquery.ui.theme.css'; $css['misc/ui/jquery.ui.theme.css']['data'] = $alter; } } |
上記ではオリジナルテーマのディレクトリ内に、「ui」というディレクトリを作成して、ここにjQuery UIのテーマ一式を格納しています。
オリジナルのjQuery UIのテーマの作成には「ThemeRoller」の利用がベターです。