Drupalの更新でエラーが出た時 cache bin specified

放置気味だったDrupalのアップデートにdrush upを行った所
WD php: Exception: Invalid or missing cache bin specified: datasources in DrupalDatabaseCache->clear() (line 520 of [error]
このようなメッセージが出たどうもdatasourceモジュールのキャッシュが削除出来ないとかそういう状態のようだ。
不要なモジュールの場合は管理画面からモジュールを無効にしてアップデートを行うといいでしょう

データの移行時に入れていたモジュールだったのでこちらを無効にして再度実行してみたところ
今度は
WD php: PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table ‘domaintools.cache_feeds_http’ doesn’t exist: [error]

今度はfeedsでキャッシュテーブルが無いと怒られた、SQLでテーブルを作ってしまおうとも思ったがまずは手動でモジュールのアップデートを試す。

$drush dl feeds
$drush updb

feeds module :
7209 – Reschedules feeds jobs.
7211 – Fix importer mappings for file and image fields to use :uri convention.
7212 – Create {cache_feeds_http} table.

実行するとメッセージにcache_feeds_httpの文字が
というかdrush updbしたときのメッセージが見やすい!

この後、drush upで無事アップデートできました。

drush up でエラーが出た時は
引っかかったモジュールを個別にアップデートするのが良さそうです。

Base table or view not found

Drupalのモジュールを開発していて
モジュール内でアクセス制御を行おうと思い。
drupal_access_denied();や
drupal_not_found();を実行してみると
Base table or view not foundのエラーが

Drupalとは別データベースにアクセスしていたのが原因なようで
db_set_active(‘external_database’);を実行すると
エラーメッセージ的に言うとベースデータベース?が切り替わるようで
not found等の処理を行う前にdb_set_active(‘default’);で
デフォルトのデータベースに戻してあげると
drupal_not_found();とした場合の制御が戻ります。

Multilingual front page

多言語化させた場合にTOPページの一覧に不達の言語の同一記事が出てしまいます。その場合の対応です。

色々と設定していたのですがdrupalgardensに答えはありました。

http://www.drupalgardens.com/documentation/language/multiple/interface/front-page

サイト構築>VIewsを選択します。
グレーダウンしていますが、右側のセレクタから編集を選んでください。

 

現在の設定では翻訳言語も出てしまいますのでFILTER CRITERIAを設定します。フィルターはコンテンツ: 言語(Content: Language)を選択します

次の画面では図のようにis One of Current user’s languageを選択し

Apply(all displays)を押下してください。

このままだとドキュメントルートでアクセスした場合に言語が指定されないので

表示する言語を指定したい場合は

環境設定>システム>フロントページより対象の言語を指定するURLを設定してください。

(URLのハンドリングによっては設定が違う場合もあるかもしれません)

これでフロントページにアクセスすると、言語でフィルターのかかったページが表示されます。

 

 

 

他のノードの参照

タクソノミータームでも同様な事はできますが、すでに存在するコンテンツやアクセス権の関係でどうしても、

コンテンツの内容を入力するときに他のコンテンツタイプの内容を参照したい時があります

そのような場合はReferences を使用すると可能です。モジュールをダウンロードしたらnode_referenceを有効にしてください。

フィールドに追加するときは、サイト構築>コンテンツタイプ>フィールドの管理から

Node referenceを選択し、保存を押下すると次画面で使用するコンテンツタイプを選択することが出来ます。

Referencesは他に一緒にダウンロードされているuser_referenceを有効にすれば、ここでユーザも参照することが可能になります。

にしてもDrupal日本語の情報少ないっすね

参考:http://www.almondlab.jp/notes/789

Drupalのモジュール等でよく出るnotice warningの表示を消す。

Drupalのモジュールをインストールすると

Warning: Invalid argument supplied for foreach() in …

的なエラーが管理画面に赤く一杯表示されたりします。

最初はいちいちモジュールのphpファイルに


if (!is_array($element['#contextual_links'])){
return;
 }

などと書いて修正していたんだが、あまりの数の多さに面倒になってきたので

.htaccessでerror_reportingを修正して逃げる事にしました。

(Drupalしか動かしていないのであればphp.iniを修正でもいいかと思いますが)

Drupalインストールディレクトリに.htaccessがあるので

そのPHPセクションの部分(<IfModule mod_php5.c>で始まる箇所)の最後に

php_value error_reporting 6135

を追加して完了。

これはphp.ini等で記載する時のerror_reporting = E_ALL & ~E_NOTICEと同義

Tb Sirateの横にあるソーシャルリンクのカスタマイズの仕方

Tb Sirateのソーシャルリンクの設定はどこにあるのかと管理画面を見てみたが見つからなかった

themebrainのQAページを見てみるとテンプレートを直接直すようだ

page.tpl.phpの317行目あたりからのhrefのリンクを該当するソーシャルのページに変更する。

icon-social-1〜9までがそれぞれソーシャルネットワークに対応している

twitte,facebook,RSSの利用であれば6,8,9以外は削除しても良い


<div id="social-share-wrapper">
 <?php global $base_root;?>
 <div>
 <div class="social-share-inner">
 <!--a href="#" class="icon-social-1">&nbsp;</a>
 <a href="#" class="icon-social-2">&nbsp;</a>
 <a href="#" class="icon-social-3">&nbsp;</a>
 <a href="#" class="icon-social-4">&nbsp;</a>
 <a href="#" class="icon-social-5">&nbsp;</a-->
 <a href="ここにfacebookページのURL" class="icon-social-6">&nbsp;</a>
 <!--a href="#" class="icon-social-7">&nbsp;</a-->
 <a href="ここにtwitterページのURL" class="icon-social-8">&nbsp;</a>
 <a href="sitemap.xml等のRSSのURL" class="icon-social-9">&nbsp;</a>
 </div>
 </div>
 </div>

Tb Sirate設定時のNotice: Undefined variable: grid in include()

DrupalのテーマのTb Sirateのレイアウトが良さそうだったので

テーマに設定したところ管理画面で

Notice: Undefined variable: grid in include()

なエラーがずらずらっと表示された、フロントはと見てみると意図した表示にはなっていない。

このテーマはTB Nucleusの子テーマでした。TB Sirateのページを確認してみるとちゃんと

Requirements

Nucleus base theme

って書いてあります。

こちらをインストールしていったん有効にしてから、再度1Tb Sirateを有効にすると管理画面のエラーが消え

フロントの表示も正しくなります。

当然といえば当然ですが、子テーマの導入時は親テーマを忘れずに

TB Methysでも同様のようです(ここが参考になりました。)

http://drupal.org/node/1853986

Drupal adminユーザパスワード

Backup and Migrate を使用して別サイトからデータを移行すると

adminのログインができなくなってしまった。

そのような場合データベースのusersテーブルuid=1のレコードを編集することにより

パスワードのリセットが可能となる

UPDATE  データベース名.users SET pass = MD5(‘新しいパスワード’) WHERE uid=1;

これでもログイン出来ない場合はmailカラムにadminのメールアドレスが入っているので

こちらを修正してパスワードの再発行を行う。

Drupal7でCKEditor(TinyMCE)を使用する場合

Wysiwygのモジュールをインストールし有効にする。

環境設定>Wysiwyg profilesより

CKEditorの欄メッセージにしたがって

http://ckeditor.com/download

こちらからCKEditorをダウンロード

解凍したら

sites/all/libraries/ckeditor

にコピー

この状態で本来有効になるはずだが

The version of CKEditor could not be detected.

とエラーが表示される、この場合先ほどインストールしたディレクトリ中の

ckeditor.incの修正が必要となる

if (preg_match(‘@version:'(?:CKEditor )?([d.]+)(?:.+revision:'([d]+))?@’, $line, $version)) {

大体81行目付近、無い場合は@version等で検索をかけてください

この行の’を”に変更

if (preg_match(‘@version:”(?:CKEditor )?([d.]+)(?:.+revision:”([d]+))?@’, $line, $version)) {

として保存この状態でCKEditorが選択可能になるはず

なので編集からCKEditorを選択してください

 

追記20120301

ボタンの設定を行っていたところfont colorのボタンが表示されませんでしたので。

TimyMCEを使いました。