03.14
さくらサーバーに和田さんとこのメールフォームCGIを設置する場合、”mailform”ディレクトリのパーミッションは755だよ!
取説に従って777にすると500エラーになるよ!どどーん!
完全自分用 覚え書きチェケラ
さくらサーバーに和田さんとこのメールフォームCGIを設置する場合、”mailform”ディレクトリのパーミッションは755だよ!
取説に従って777にすると500エラーになるよ!どどーん!
Drupalは、Wordpressなどと比べてシンプルな投稿画面で、クライアントのリテラシーが低い場合も安心なのですが、保存ボタンの上に「入力書式」や「リビジョン情報」など、更新担当者にとって不要なことが多いんではないでしょか?っていうようなオプションも問答無用に表示されます。これらが不要な場合に非表示に出来ないかなあなどとと思っていたら、いいモジュールを発見。
「Formfilter」は、不要なオプションを個別に非表示にできるモジュールです。
有効にすると、投稿画面をはじめとした各ページの一番下に「Filter this form」というリンクが表示されます。
これをクリックすると各種フォーム要素の下に「Hide hoge:」というようなチェックボックスが表示され、チェックしたフォーム要素がadmin権限以外のユーザーに表示されなくなります。
ちなみに、submit要素には対応していないので、「Upload」モジュールなどのsubmitボタンは非表示にできず残ってしまいます。
「formfilter.module」の8行目
return array('button', 'fieldset', 'select', 'textfield', 'checkbox', 'checkboxes', 'radio', 'radios', 'textarea', 'item', 'file', 'weight', 'markup')
に、’submit’を追加すると、とりあえず非表示にできました。
DrupalはCMSとしてかなりイイです。ただ、ブログをやるならやっぱりWordPressがイイ!
Drupalでは携帯からの写真付きメール投稿などひと苦労です。というかお手上げです。
そこで、CMSはDrupal(とか他のシステム)でブログだけWordPressでやるのが手っ取り早いんじゃないでしょか。
サブドメインなどにWordPressをインストールし、ページ機能を使ってxmlを作りましょう。
そのxmlをDrupal側で取得して、トップページなどに表示します。
WordPress側「page_xml.php」
<?php header('Content-Type: text/xml; charset='.get_option('blog_charset'), true); ?>
<?php /*
Template Name: page_xml
*/ ?>
<?php echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?>
<posts>
<?php
$blogposts = get_posts('numberposts=5');
foreach($blogposts as $post) :
setup_postdata($post);
?>
<post>
<blog_title><![CDATA[<?php the_title(); ?>]]></blog_title>
<blog_link><![CDATA[<?php echo get_permalink (); ?>]]></blog_link>
<blog_data><![CDATA[<?php the_date(); ?>]]></blog_data>
<blog_content><![CDATA[<?php the_content(); ?>]]></blog_content>
</post>
<?php endforeach; ?>
</posts>
適当なページを作り、上記テンプレートを適用します。
Drupal側 テンプレート
<h2 class="blog">ブログ</h2>
<dl>
<?php
$xml = simplexml_load_file('WPのxml生成用ページのURL', 'SimpleXMLElement', LIBXML_NOCDATA);
foreach($xml as $wp_post) :
?>
<dt class="date"><?php print $wp_post->blog_data; ?></dt>
<dd class="title"><a href="<?php print wp_post->blog_link; ?>" title="<?php print $wp_post->blog_title; ?>"><?php print $wp_post->blog_title; ?></a></dd>
<?php endforeach; ?>
</dl>
みたいな?
欠点はWPのテーマも作らないといけないのでめんどくさいこと。
CCKのフィールド作成画面で、
全般の設定 > 使用する値 > PHPコード の欄に以下のように記述する(「コンテンツタイプ」の部分は任意のコンテンツタイプ名に置き換える)
この例ではノードタイトルを使っていますが、SQL文を書き換えれば別のフィールドなども使えます。
SQLがいまいちよく分かってない私のような人は、Viewsでビューを作ってみるふりをして、生成されるSQL文をさらっとパクりましょう参考にして勉強しましょう。
$sql =
"SELECT node.nid AS nid,
node.title AS node_title
FROM node node
WHERE node.type in ('コンテンツタイプ')";
$result = db_query($sql);
$titles = array();
while ($node = db_fetch_array($result)) {
$titles[] = $node[node_title];
}
return $titles;
とか〜
post_max_size >= upload_max_filesize
になってないとダメです。
下記コードの■■■■■のところを自分のTwitterIDに、count=5のところを表示させたい数に変える。
<ul id="twitter_update_list"></ul> <script type="text/javascript" src="http://twitter.com/javascripts/blogger.js"></script> <script type="text/javascript" src="http://twitter.com/statuses/user_timeline/■■■■■.json?callback=twitterCallback2&count=5"></script>
以下の引数にnidをほりこめばノードオブジェクトが取得出来る。
node_load()
しかしDrupalは日本語の情報が少なくてWordPressの時のようにはいかない。
なんとかならんかなあ。
外人はいいなあ。英語読めて。
[追記 2010.06.07]
node_load($nid);
で取得したオブジェクトを表示する場合は以下のようにします。
$node_obj = node_load($nid); print node_view($node_obj);
1.アプリケーション→ユーティティ→ターミナル.appを開く
2. ” defaults write com.apple.finder AppleShowAllFiles TRUE ” と打つ
3.ファインダーを再起動(ターミナルで ” killall Finder ” )
元に戻したい場合はターミナルで
” defaults write com.apple.finder AppleShowAllFiles FALSE ”
あらかじめindex.htmlなどのURLでトップ用のページを作っておき、
管理セクション→サイトの環境設定→サイト情報
デフォルトのフロントページ:index.html
とする。