Drupal5でinline+imagecacheが動作しないので修正してみた

Drupal5のサイトにinline+imagecacheを入れたら、inlineの管理画面が表示されない現象が発生。

imagecacheのすでに存在しない関数を呼んでいたので、修正した。

--- inline/inline.module	2007-04-18 20:22:27.000000000 +0900
+++ inline.custom/inline.module	2009-12-04 13:27:07.000000000 +0900
@@ -83,9 +83,9 @@
   if (module_exists('imagecache')) {
     $options     = array();
     $options[''] = 'No Imagecache processing';
-    $presets     = _imagecache_get_presets();
+    $presets     = imagecache_presets();
     foreach ($presets as $id => $name) {
-      $options[$name] = $name;
+      $options[$name['presetname']] = $name['presetname'];
     }
     $form['inline']['upload']['image_scaling']['inline_teaser_preset'] = array(
       '#title' => t('Teaser preset'),

Drupalの自作モジュールにdefault viewを追加する方法

自作モジュールでviewsのデフォルトviewを使用する方法を簡単にですが、まとめてみました。

viewを作成する

viewsでviewを作成します。作成方法については省略します。

viewをエクスポートする

作成したviewを書き出すために、views_exportモジュールを利用します。views_exportモジュールを有効にしたら、Administer>>Views>>Tools>>Bulk exportにアクセスします。先ほどviewをチェックしてテキストフィールドにこのviewを利用するモジュール名を入力します。exportをクリックするとモジュールに追加する関数とデフォルトviewのコードが表示されます。

モジュールにコードを追加する

例としてmymodule用にexportすると以下の関数が得られます。


/**
* Implementation of hook_views_api().
*/
function mymodule_views_api() {
return array(
'api' => 2,
'path' => drupal_get_path('module', 'mymodule'),
//'path' => drupal_get_path('module', 'mymodule') . '/includes',
);
}

これをmymodule.moduleに追加します。

モジュールのサブディレクトリにviews関連のファイルを配置する場合は、ファンクション内のpath記述をコメントアウトされているものに変更します。

views_defaultファイルを作成する

先ほどpathで指定したディレクトリにmymodule.views_default.incファイルを作成します。PHP開始タグを入力して、さらにexportして得られたコードをそのファイルにコピペします。

Viewsのキャッシュを削除

すでにモジュールをインストールしてあれば、Viewsのキャッシュを削除しなければいけません。Administer>>Views>>Toolsにアクセスして、Clear Views’s cacheボタンをクリックしてキャッシュを削除します。

これで、このモジュールを他のDrupalにインストールすると、自動的にviewが追加されます。

Drupalでグループウェアを開発中

とあるNPOからの依頼で、Drupalでグループウェアを作ってます。

グループウェアシステムなら他にいろいろあるんですが、それらのシステムでは必要な機能がなかったり、機能拡張がしづらかったり、今回の案件はDrupalで組むのが良いということになりました。

Drupalではグループウェアに関してはモジュールを自作する必要はありません。ので、既存モジュールの翻訳とセットアップといった作業が主です。さらにカスタマイズしたり機能追加したい場合でも、強力なモジュールはすでにいろいろありますし、新しいモジュールの開発もしやすいですね。

というわけで、グループウェアが欲しい場合は作りますんでよろしくです。

DrupalでVocabularyとTermを作成するPHPコード

DrupalでTaxonomyのVocabularyとTermを作成するコード。

$vocabulary = array(
    'name'  => 'Tags',
    'description' => 'My Tags',
    'help'        => '',
    'nodes' => array('story'=>1),    // 対象ノードタイプの指定
    'multiple'  => 1,    // 複数選択ON
    'required'  => 0,    // 必須OFF
    'hierarchy' => 0,    // 階層OFF
    'relations' => 0,    // 関連TermOFF
    'tags'      => 1,    // タグON
    'module'    => 'taxonomy',
    'weight'    => -1,    // Weightを-1で指定
);

taxonomy_save_vocabulary($vocabulary);

$terms = array('tag1','tag2','tag3');
$vid = $vocabulary['vid'];
foreach($terms as $term){
    $edit = array('vid'=>$vid, 'name'=>$term);
    taxonomy_save_term($edit);
};