2014年7月31日木曜日

一人じゃできないことのプロジェクト。

車とか、バイクのレース。
月まで行く。
トレールラン。
電気自動車。

2014年7月30日水曜日

drupal Forum module フォーラムモジュール テンプレート css

テンプレートとかCSSとかをいじる前に、
Home » Administration » Structure » Content types » Forum topic
のMANAGE DISPLAYタブなどから自分の思うように設定変更が可能かどうかを確かめる。

以下、自分用メモ

modules\forum\forum-list.tpl.php          フォーラムの表紙。フォーラムのリスト。
Forum
Topics
Posts
などの表示はここでしている。
フォーラムを入れ子にしたときも、ここの表示が使われる。

modules\forum\forum-topic-list.tpl.php    フォーラム次ページ。フォーラムトピックのリスト

modules\node\node.tpl.php                    フォーラムのトピックページ。
ただ、このnode.tpl.phpはフォーラム用に書き換えると全てのノードコンテンツに反映されてしまうので、フォーラムのトピックだけに反映させるために、ファイル名をnode--forum.tpl.phpに書き換えてテンプレートフォルダにコピーする。node--forum.tpl.phpのforumはコンテンツのタイプのマシンネーム(Home » Administration » Structure)。

modules\comment\comment.tpl.phpの2つフォーラムトピックの「Add new comment」「reply」のコメント。テーマへのオーバーライドはcomment--node-forum.tpl.phpに名前を変えてフォーラムだけへ適応させる。

modules\comment\comment-wrapper.tpl.phpは「Add new comment」「reply」をくるんでいる外側。
comment-wrapper--node-forum.tpl.php
に書き変えて、自分のテーマのテンプレートに貼り付けて編集。
comment-wrapper.tpl.phpの
    <h2 class="title comment-form"><?php print t('Add new comment'); ?></h2>
    <?php print render($content['comment_form']); ?>
この2行を
<!--    <h2 class="title comment-form"><?php print t('Add new comment'); ?></h2> -->
    <?php print render($content['comment_form']['comment_body']); ?>
    <?php print drupal_render_children($content['comment_form']); ?>
に変えて
comment-wrapper--node-forum.tpl.php
にし、オーバーライドさせる。
ここでは、['comment_body']以外にも
['author']
['field_email']
['actions'['submit']
などがある。
(上の方法でやるとsaveボタンを押してもそれが反映されない。ということで取りやめた。Add new commentのh2をh3に変える程度にした。)

テンプレートはコピーペーストしたファイルを書き換えるだけでオーバーライドされるけど、cssファイルはそれを自分が使うテーマに移動した場合、自分のテーマの.infoファイルでその場所の指定をする必要がある。
ファイルを移動したあとは、それを反映させるためにキャッシュクリアをする必要があるみたいだ。

forum.css訂正箇所。

#forum td.created,
#forum td.posts,
#forum td.topics,
#forum td.last-reply,
#forum td.replies,
#forum td.pager {
  white-space: nowrap;
}
で、
white-space: nowrap;
だと自動で折り返しを禁止してしまう。
そうすると、自分の場合はかなりはみ出してしまうので
white-space: normal;
と、禁止しないノーマルモードに戻しておく。

2014年7月29日火曜日

替芯 替え芯ホルダー ボールペン

ボールペンの替芯を替え芯ホルダーを使って使えるそうだ。

ボールペンの替え芯

ビクーニャ
ジェットストリーム
コレト
シグノ


FABER CASTELL
製図用ホルダー 3.15mm芯用 TK-9400(ファーバーカステル)

Cross Century II, Sterling Silver, Selectip Rolling Ball Pen (HN3004) クロス ボールペン

クロスのボールペン

Cross Century II, Sterling Silver, Selectip Rolling Ball Pen (HN3004)

をプレゼント用に注文したのだけど、

Refill 替え芯は、どのくらい互換性があるのだろ?

このボールペンの説明に
ジェルインク8523 黒が標準装備
以下の替芯もご使用できます。
●ボールペン(油性ジャンボサイズ)8562-1黒(M・中字)、8562-3青(M・中字)
●ジェルインク 8521 青、8013 赤、8014 紫
●ポーラス芯(水性) 8443 黒(M・中字)、8444 黒(F・細字)、8441 青(M・中字)、8442 青(F・細字)
●ドキュメントマーカー(水性)8017 黄
とある。

クロスの中に何種類かの互換性のないリフィルがあるらしくて、HN3004はマイナーなリフィルを使っているみたいだ。
昔はCross of Japanで取り扱っていたけれども、今は扱っていないようだ。

メジャーな方だったら、三菱の替芯 SK‐8なども使えるそうだけど、HN3004はそっちのリフィルではないらしい。

細め油性のペン先リフィルが欲しいって言っていたんだよなぁ。
細めの水性ならあるのだけど・・・。

ま。また、別の機会にもう一つプレゼントすればいいや。

後述
楽天の一番安く売っているところ(15033円)で聞いたら、取り寄せるのに3ヶ月くらいかかるかもしれないと返信があった。
他に聞いても同じようですよ。とのことだったのでアメリカのアマゾンを見たら、$99.95(10570円、在庫あり)で売っていた。送料が$19.9(2104円)で、計$119.85(12674円)。
アマゾンには「この商品は日本には送れません。」と書かれていたので、アマゾンのマーケットプレイス?から頼んだ。こっちは、個人のお店だから?か、日本に送ってもらうことができた。ここに書いてある値段もそのマーケットプレイスのもの。

Cross Century  IIは、同じ形でいろいろな種類があった。知らなかった。
CROSS クロス CENTURY2-Collection クローム 3504                6,426円(税込)
CROSS クロス CENTURY2-Collection クラシックブラック 2504          7,560円(税込)
CROSS クロス CENTURY2-Collection メダリスト                             7,560円(税込)
CROSS クロス CENTURY2-Collection 10金張 4504 10金張             16,632円(税込)
CROSS クロス CENTURY2-Collection スターリングシルバーHN3004  18,144円(税込)
(楽天のお店から)

7月29日に注文して8月5日に郵便受けに入っていた。
アマゾンの予定は
Shipment #1:1 item - delivery estimate: August 13, 2014 - August 22, 2014
だった。



2014年7月24日木曜日

drupal 7 テンプレート db_query


複数職を持っている人を職業別に分類

-----------------------------CSS部-------------------------------------
span {
display: inline-block;
width: 9em;
}

------テンプレート部 (この後このテンプレートはは訂正した。訂正分はこの直後)-----------

<?php

print '<hr>';

$result = db_query('SELECT taxonomy_term_data.name as tagname, users.name as uname FROM ({field_data_field_yoo} LEFT JOIN {taxonomy_term_data} ON field_data_field_yoo.field_yoo_tid = taxonomy_term_data.tid) LEFT JOIN {users} ON field_data_field_yoo.entity_id = users.uid');
$ygrp = "hogehoge"; //最初に適当にあり得ない職業の名前をつけておく。(かっこ悪いけど、こんなやり方しか今のところ思いつかない。)
foreach(
$result as $item) {

if ($ygrp !== $item->tagname){      //もし$item->tagnameが最初に出てきた職業名ならばトップに表示をする。
print '<hr>';
print "<p><span>".$item->tagname."&nbsp;"."</span>".$item->uname."&nbsp;&nbsp;&nbsp;"; //<span>はユーザーの先頭の文字をそろえるため。cssで、10文字文下がったところから表示させる設定にしてある(display: inline-block; width: 10em;)。&nbsp;はスペース。
}
else
{  print $item->uname."&nbsp;&nbsp;&nbsp;";  //もし、$item->tagnameが2度めならば、職業名は表示させない。
}

$ygrp = $item->tagname;             //$ygrpの値をここで更新。

}

?>


------------------テンプレート 訂正 (ユーザー名にリンクを張った)-------------------
<?php

print '<hr>';

$result = db_query('SELECT taxonomy_term_data.name as tagname, users.name as uname, uid FROM ({field_data_field_yoo} LEFT JOIN {taxonomy_term_data} ON field_data_field_yoo.field_yoo_tid = taxonomy_term_data.tid) LEFT JOIN {users} ON field_data_field_yoo.entity_id = users.uid');
$ygrp = "hogehoge"; //最初に適当にあり得ない職業の名前をつけておく。(かっこ悪いけど、こんなやり方しか今のところ思いつかない。)
foreach(
$result as $item) {

if ($ygrp !== $item->tagname){      //もし$item->tagnameが最初に出てきた職業名ならばトップに表示をする。
print '<hr>';
print "<p><span class=yspan>".$item->tagname."&nbsp;"."</span><a href=\"http://localhost/dtest/user/".$item->uid."\">".$item->uname."</a>&nbsp;&nbsp;&nbsp;"; //<span>はユーザーの先頭の文字をそろえるため。cssで、10文字文下がったところから表示させる設定にしてある(display: inline-block; width: 10em;)。&nbsp;はスペース。
}
else
{  print "<a href=\"http://localhost/dtest/user/".$item->uid."\">".$item->uname."</a>&nbsp;&nbsp;&nbsp;";  //もし、$item->tagnameが2度めならば、職業名は表示させない。
}

$ygrp = $item->tagname;             //$ygrpの値をここで更新。

}

?>


drupal 7 login logout は User menu

ページで、ログイン、ログアウトのページが消えてしまった。
消えてしまったというか、以前、まっさらな状態にしたときに消してしまっていて、そのままになっていた。(のだと思う。)

structureのblock、
admin/structure/block
で、
User login
を付け加えたけど、表示されなかった。

User menuを付け加えたら表示された。

User loginは必要ないのか?
何のためにあるのか?

後述---User loginは必要。User menuとセットで設置しておかないとログアウトした後でログインメニューがでてこない。

2014年7月17日木曜日

インプラント 歯

母親がインプラントを入れる。

前歯の何本かと下の歯の何本かがすでにインプラントなのだけど、その中の上の前歯がだめになってしまった。この前手術して、古いインプラントの土台を抜いてしまった。

その時、そこの口腔外科の先生は、骨がうすいからもうインプラントはできない。といっていたのだそうだ。
だからインプラントにはもうできないとあきらめかけていたのだけれど、大阪の結構な数をこなしている歯医者さんに相談したら、できそうだということで、お願いすることになった。

インプラントは前歯の一部とか、部分的に入れると、そこだけに負荷がかかるから持ちが悪いらしい。
入れるならいっぺんに入れると長持ちするらしい。
と言うことで今回は上の歯を全部インプラントにすることになった。

父親は20年以上前に地元で上下全部をやったのだけど、いまもしっかりしている。と言っている。
母親のだめになったインプラントも父親と同じ所でやったものだ。
技術が悪いというよりも部分的に入れていたから負荷がかかってだめになってしまった。というのだと思う。もう、入れてから10何年かたっている。
先日抜いた前歯は、2本の土台で3本の歯を入れていたそうだ。

カーナビタイム

ナビタイムの「カーナビタイム」アンドロイド版、を大阪に行く前にインストールしてみた。
カード支払いで月500円。
最初の3ヶ月無料。

まだ下道では十分に使っていないけれども、
高速道路で大阪に行ってきて、これは使いやすいと思った。

ネットにつながっていれば、工事中、事故車などの情報もでるし、地図は新しい。
渋滞情報(VICS)も頻繁に更新される。
見ていて楽しい。

6月28日に開通したばかりの圏央道、高尾山IC-相模原愛川IC間も、もう地図に載っていた。

経由地の追加、削除、登録した経由地の後からの順番の変更は楽にできる。

高速道路を走っているときは、3つ先のICやJCT、SAが表示される。JCTは、どちらに行くのかが表示される。


ボイスナビは静かなところでは精度良く動くけれども、走行中は車のノイズが邪魔したり、会話を拾って勝手に起動してしまったりで、うまくいかなかった。
手をかざして起動ができるみたいだから、後で試してみる事にする。

あとは、例えば高速のSAとか、駅などの曖昧検索ができるといいと思った。
駅とか、SAとか、知らないところに行くわけだから、そこが神奈川なのか山梨なのか埼玉なのかわからないことが多い。わからないのに県名、市町村名、と、絞っていかないとたどり着かないというのは少し使いにくい。
検索のためのwebでの検索が必要になってしまう。
(フリーワード検索で結構探すことができた。)

ネットにつながっていなくても使えるけど、自分はいろいろな情報が入るから今のところネットにつないで使っている。
主に高速で片道8時間くらい使って
ネット使用量は行きが100MB。
帰りが45MB。
行きの方がパケットを使っているけど、
もしかしたら、行きは別のアプリがパケットを使っていたのかなぁ?
それとも、「カーナビタイム」が行きにダウンロードしたデータをキャッシュしておいて、それを帰りにまたつかったことで帰りのパケット使用量が減ったのかなあ。?


同社のドライブサポーターを先にインストールして使っていたけれど、これはネットにつないで使うタイプの物だから、モバイルルーターがよっぽど調子よくないとカーナビに使うのは無理。
カーナビタイムを使い出したので、ドライブサポーターは解約しようと思う。



7月15日に大阪に行って、7月17日午前4時頃、栃木に帰ってきた。
弟の所へ一泊した。

行きは朝の7時半頃出発。午後3時半頃到着。
佐野田沼(北関東横断道)-関越自動車道-圏央道-東名・新東名-名神の茨城IC。

帰りは7月16日午後4時50分頃出発翌日午前3時半頃着。

帰りもできたばかりの圏央道経由できたけれど、
眠くて死にそうなのに神奈川厚着SAと埼玉佐山SAの間にSAとかPAとかが1つもない。
眠いときにはあの間に1つ休憩できるところが欲しい。

夜中で人が少なかったから関越自動車道、上里SAの食堂の長いすで少し寝た。

その後。。。
また大阪に来た。茨木から海遊館に行ったり、大阪駅近くのビルに行ったりした。
大阪のはじめて通る下道も結構走った。

使いやすい方だと思う。

ルート検索がすごく楽。
地点の登録もすごく楽。登録地点の説明も簡単に入れられる。フォルダーを作って分類もできる。
そこいら辺のことはものすごくいい。

次の曲がる所をあらかじめ小さく表示して、そこまでの距離が表示され続けているところがいい。

曲がり角が近づいた時の近づき具合を示すゲージみたいなのもわかりやすい。
でも、ナビは、次に曲がる角が一番重要な要素なのだから、ゲージをもう少し大きくして小さなスマホでもすぐわかるようになったらありがたい。

ルート途中でルート再検索をしたとき、経由地を過ぎたあとでも最初の経由地からのルートの再検索をしてしまう。これはこれで必要だけど、現時点から目的地までの再検索もできるようにしてほしい。

サンヨーゴリラでは、曲がり角の目標(ガソリンスタンドとか、銀行、コンビニなど)を言ってくれた。できれば、それがあるといい。

この下は、このナビを使うときの自分への注意書き。
道が二股に分かれる時に何も言わないときがある。
4車線道路で2車線ずつに分かれたときに、右が国道、左が県道、自分は左車線を走っていて県道へ行ってしまった。国道をそのまま黙っていても走るだろうってことなのかな。まぁ、ちゃんと看板を見ていなかった自分が悪いといえば悪いのだけど。


ここから先は、ナビ全体への希望。
ビルの間や、高速の下の道ででGPSがちゃんと動いてくれればなぁ。と思う。
でも、それは無理だろうし、ソフトの問題ではない。
でも、そうなった場合に何か必要な情報をうまいこと予測して出してカバーしてもらえたらなぁ。
と思う時がある。

新御堂筋だか、御堂筋だか国道423号線は、上の道と下の道が並行して走っていて、そこのどこを走ればいいか正確にナビをするのは大変だろうけど、走っている車線によって、行きたくない方に行かされてしまいそうになったときがあった。その時に今現在どの車線を走っていればいいかをリアルタイムで表示してもらえたらなぁ。と思った。





2014年7月10日木曜日

drupal 7 field 追加 テーブル名 フィールド名 table field

データベース上の値をクエリを使ってコンテンツに表示しようと思って、データベース上のテーブル名、フィールド名などを確認した。その時のメモ。

admin/config/people/accounts/fields
で、フィールドを追加した後、mysqlなどのデータベースに保存される時に作られるテーブル名など。

テーブル名は「field_data_field_ラベル名」
(ラベル名=フィールド名)

そのテーブルの中のフィールド、「field_ラベル名_*」は、フィールドタイプに何を何を使いたいのか、ウィジェットに何を選択するかによって「*」の所が変わってくる。データを保存するときのデータ型も変わってくる(データ型の違いを忘れると、sqlを実行したときにあっちとこっちの保存形式の違いからエラーが出ることがある。)。

field_ラベル名_tid------Taxonomyなどからセレクトリストを選んだとき、ここにタクソノミーのid。

field_ラベル名_value----Textなどを選んだときは、このfieldに自分の記入したテキストが入る。

その他のフィールドは、
例えば、フィールドentity_typeの値がuserで、フィールドentity_idが1であったときにはユーザーIDが1の人のプロフィールの値ということになる。

Taxonomy関係
テーブル
taxonomy_term_data
フィールド
tid----タームの通し番号
vid---VOCABULARY NAME毎につける番号
name---タームの名前
description---タームのdescription
format------format
weight------weight

テーブル
taxonomy_vocabulary
フィールド
vid
Primary Key: Unique vocabulary ID.
name
Name of the vocabulary.
machine_name
The vocabulary machine name.PC内部名(ボキャブラリー名を日本語で入れなければ大概、nameと同じに登録される)
description
Description of the vocabulary.
hierarchy
The type of hierarchy allowed within the vocabulary. (0 = disabled, 1 = single, 2 = multiple)
module
The module which created the vocabulary.
weight
The weight of this vocabulary in relation to other vocabularies.

テーブル名
taxonomy_term_hierarchy
タームの親と子の関係を表している。
フィールド名
tid
Primary Key: The taxonomy_term_data.tid of the term.
parent
Primary Key: The taxonomy_term_data.tid of the term’s parent. 0 indicates no parent


2014年7月9日水曜日

コメントアウト php html css JavaScript

php
      /* コメント */
      1行だけなら
      // コメント
      又は# コメント
      も可。


html
      <!-- コメント -->


css,スタイルシート。
      /* コメント */


JavaScript
      /* コメント */
      1行だけなら
      // コメント
      も可。

2014年7月8日火曜日

Drupal 7 におけるテンプレートファイルのオーバーライド時の命名規則について tpl

 モジュールなどのページテンプレートを編集してオーバーライドさせるとき、名前のつけ方によって適用させる範囲を変えることができる。

https://www.drupal.org/node/1089656
ここにも、いろいろ規則が書かれている。

 各モジュールのテンプレートを自分のテーマのテンプレートディレクトリなどにコピーし、オーバーライドできるようにして編集する。

その時の命名法則。

以下、

https://groups.drupal.org/node/238378
より。
(このurlの文の最後に
「PNGで表にまとめました。ダウンロードできます。お好きなように編集して、掲載してください。」
と書いてあって、pngでまとめた物がダウンロードできるようになっている。)
それをここにそのまま転載。




drupal7でのtemplateの命名規則は以下の様になります。
drupal6とはちょっと違いますので注意してくださいね。
①→④の順に次第に弱くなってきます。
同時に同じオーバーライドが共存する場合には
①が優先されて、④に近づく程優先順位は弱くなります。
①1番目と2番目のargumentが一致した際に適応
②%がワイルドカードとして働きます。最初のargumentが一致して、2番目が数字として存在する際に適応
③最初のaregumentが一致した際に適応
④特別なテンプレートが無い場合全てに適応
http://*****.jp/node/1の場合
① page--node--1.tpl.php
② page--node--%.tpl.php
③ page--node.tpl.php
④ page.tpl.php
http://*****.jp/user/1の場合
① page--user--1.tpl.php
② page--user--%.tpl.php
③ page--user.tpl.php
④ page.tpl.php
http://*****.jp/whatever/iwantの場合
① page--whatever--iwant.tpl.php
③ page--whatever.tpl.php
④ page.tpl.php
http://*****.jp/whatever/1の場合
① page--whatever--1.tpl.php
② page--whatever--%.tpl.php
③ page--whatever.tpl.php
④ page.tpl.php

2014年7月6日日曜日

drupal sql print query database 表示

durupalにおいて自身のmysqlのデータベースを直接扱う方法。


--------------------------------------------------
<?php
$result = db_query('SELECT * FROM {node}');

foreach($result as $item) {
  print $item->nid;
}
?>

---------------------------
上の例で、
$result=の右側()の中がクエリの部分。
例では{}の中がnodeとなっているが、ここにはmysqlの中のどのテーブル名も入れることができる。

そのクエリをprintやechoで表示する部分がforeach以下。
foreachで回してprintで表示する。

foreachの中でタグを入れるときなどは、
print $item->nid."<br/>";
や、普通にprintを縦に並べていく。

foreachの
print $item->nid;を、print $item->nid[0];
とすると、nidの1文字目だけを表示する。
$item->nid[3].$item->nid[5]
とすると、4文字目と6文字目を続けて表示する。

参考url。
https://www.drupal.org/node/1251174
<?php
$result = db_query("SELECT nid, title FROM {node}");
foreach ($result as $record) {
  // Do something with each $record
  $node = node_load($record->nid);
}
?>

異なるテーブルの同じ名前のフィールドを扱うとき。When field names are same.
例えば、
$result = db_query('SELECT taxonomy_term_data.name, users.name FROM ({field_data_field_yoo} LEFT JOIN {taxonomy_term_data} ON field_data_field_yoo.field_yoo_tid = taxonomy_term_data.tid) LEFT JOIN {users} ON field_data_field_yoo.entity_id = users.uid');
foreach(
$result as $item) {
  print "<p>".$item->name.$item->name."</p>";
}
このようにすると、print時にnameの定義がだぶってしまって、taxonomy_term_data.nameとusers.nameの区別ができなくなる。
自分の場合だと全部users.nameで表示されてしまった。

それを避けるために、
SELECT taxonomy_term_data.name as tagname, users.name as uname
として、SELECTの段階でそれぞれのフィールドの名前を新たに定義する。

$result = db_query('SELECT taxonomy_term_data.name as tagname, users.name as uname FROM ({field_data_field_yoo} LEFT JOIN {taxonomy_term_data} ON field_data_field_yoo.field_yoo_tid = taxonomy_term_data.tid) LEFT JOIN {users} ON field_data_field_yoo.entity_id = users.uid');
foreach(
$result as $item) {
  print "<p>".$item->tagname.$item->uname."</p>";

これで、異なるテーブルの同じ名前のフィールドが区別される。
}

2014年7月5日土曜日

views relationship hook

「モジュール名.module」ファイルと同じフォルダに、「モジュール名.views.inc」
を作り、その中に
hook_views_data()
を設定する。

hook_views_data()
hook_views_data_alter()
hook_views_handlers()
hook_views_plugins()

2014年7月4日金曜日

drupal 7 nid uid 確認の仕方

nid, uidの確認の仕方は・・・。

nidはこれです。って感じでどこかに表示されるところはないみたいだ。

だから
それを確認するには、
1,nodeをブラウザーで表示して番号を確認する。

urlにnidが表示されない設定の時は、
2,admin/contentに行き、知りたいノードのeditリンクへポインターをかざすと、リンク先のurlが表示される。そこにnidがある。
3,それでもわからなかったら、phpMyAdminかなにかで見る。

uidも、たぶん一緒。

drupal-8.0-alpha13 を入れてみた。

drupal 8 alpha 13
インストールをしてみた。
今度はちゃんと動きそう。

インストールが終わって、ログによくわからないエラー(前回alpha12のエラーとは違う。)が出ていたけど今のところはちゃんと動いている。

drupal 7よりも使い心地がいい。
違和感なく移動できて扱いやすい。
でも、動きが遅くなった。
Linuxで動かせばレスポンスはよくなるのか?

もうそろそろ正式版がでるんじゃない?