Posted by darta on November 7, 2010 at 6:17am
皆様はじめまして。
Drupalを最近はじめまして、本を見ながら苦戦させて頂いております。
コンテンツの管理にて登録済みのノード一覧が表示されますが、
ここに投稿時間を表示させたい場合、どのように手を入れていけばよいか
助言頂けますでしょうか。
(viewsモジュールは使用しない方向でお願いします)
また、作成済みコンテンツ(ノード)の複製を考えているのですが、
実現できるモジュールはありますでしょうか。
よろしくお願いします。
Comments
darta さん、 コンテンツの管理にて登録済みのノード一
darta さん、
Viewsを使用しないとの事なので、
直接node.admin.incを弄ってみます。
node.admin.inc
以下のコードの
//ここから
//ここまで
を追加してみてください。
前後位置は検索と行数を参考に探してくださいね。
function node_admin_nodes() {
...
492行 $form['status'][$node->nid] = array('#value' => ($node->status ? t('published') : t('not published')));
//ここから
$form['created'][$node->nid] = array('#value' => date('Y/m/d H:i:s',$node->created));
$form['changed'][$node->nid] = array('#value' => date('Y/m/d H:i:s',$node->changed));
//ここまで
...
}
function theme_node_admin_nodes($form) {
...
559行 $header = array($select_header, t('Title'), t('Type'), t('Author'), t('Status'));
//ここから
$header[] = t('Created');
$header[] = t('Changed');
//ここまで
...
576行 $row[] = drupal_render($form['status'][$key]);
//ここから
$row[] = drupal_render($form['created'][$key]);
$row[] = drupal_render($form['changed'][$key]);
//ここまで
...
自分はインストールしたことはありませんが、
node cloneモジュールで、できませんでしょうか?
http://drupal.org/project/node_clone
不備やご不明な点、間違っている所等あれば連絡ください。
できました
jun784 さん
返信ありがとうございます。
無事に表示することができました。
node.admin.incの編集でも問題なかったのですね・・・
この画面をhookしてどのように表示させるかで、
取得内容から編集しなければいけないので、
同じような処理を複製して、別モジュールを作成しなければ・・
など、頭を固くして考えてしまっていました・・・・
こんなモジュールあったのですね。
自分の検索が甘かったです・・・
早速入れて試してみたいと思います
Re:できました
darta さん、よかったです!
メインのモジュールをいじくるのもスマートでは無いので、
やはりhookでしたいですね。
するとすれば、node_form_node_admin_filter_form_alterでthemeを独自モジュールで上書きして上げればいいと思います。
モジュールですが、自分はここのWikiをよく参照させていただいてます。
http://www10.atwiki.jp/drupal/pages/37.html
またグループで質問させて頂いたりするのもいいですね!
Re2:できました
jun784 さんありがとうございます。
なるほど。ここがどうすればいいのか分からずに、
いたところです。
node.admin.incの修正で表示自体はできましたが、
hookでも実現できればと思い・・・もう少々お付き合いお願いできますでしょうか。
node.admin.incの修正では、node_admin_nodes()とtheme_node_admin_nodes()に
手を入れたかと思います
node_form_node_admin_filter_form_alterを利用した独自モジュールとなると
SQL取得~画面表示部分を書いて上書きするということでしょうか。
「themeを独自モジュールで」とありましたので、thrme_node...かと思ったのですが、
日付が取れてないよなと、こんがらがってしまっているところです。
よろしくお願いします。
がんばって書いてみました。
module を書いてみました。
nodeoverview.info
name = Node over viewdescription = "Adds Postdate & Changed Date to Node Overview"
core = 6.x
nodeoverview.module
<?php
// $Id: $
/
* @file
* Adds Postdate & Changed Date to Node Overview
*/
/
* Implementation of hook_theme().
*/
function nodeoverview_theme() {
return array(
'nodeoverview_admin_nodes' => array(
'arguments' => array('form' => NULL),
),
);
}
/
* Implementation of hook_form_alter().
*/
function nodeoverview_form_node_admin_content_alter($form, $form_state) {
$nodes_id = $form['admin']['nodes']['#options'];
$form['admin']['#theme'] = 'nodeoverview_admin_nodes';
foreach($nodes_id as $node_id => $val) {
$node = node_load(array('nid' => $node_id));
$form['admin']['created'][$node_id] = array('#value' => date('Y/m/d H:i:s',$node->created));
$form['admin']['changed'][$node_id] = array('#value' => date('Y/m/d H:i:s',$node->changed));
}
}
/
* Theme node administration overview.
*
* @ingroup themeable
*/
function theme_nodeoverview_admin_nodes($form) {
// If there are rows in this form, then $form['title'] contains a list of
// the title form elements.
$has_posts = isset($form['title']) && is_array($form['title']);
$select_header = $has_posts ? theme('table_select_header_cell') : '';
$header = array($select_header, t('Title'), t('Type'), t('Author'), t('Status'));
$header[] = t('Created');
$header[] = t('Changed');
if (isset($form['language'])) {
$header[] = t('Language');
}
$header[] = t('Operations');
$output = '';
$output .= drupal_render($form['options']);
if ($has_posts) {
foreach (element_children($form['title']) as $key) {
$row = array();
$row[] = drupal_render($form['nodes'][$key]);
$row[] = drupal_render($form['title'][$key]);
$row[] = drupal_render($form['name'][$key]);
$row[] = drupal_render($form['username'][$key]);
$row[] = drupal_render($form['status'][$key]);
$row[] = drupal_render($form['created'][$key]);
$row[] = drupal_render($form['changed'][$key]);
if (isset($form['language'])) {
$row[] = drupal_render($form['language'][$key]);
}
$row[] = drupal_render($form['operations'][$key]);
$rows[] = $row;
}
}
else {
$rows[] = array(array('data' => t('No posts available.'), 'colspan' => '6'));
}
$output .= theme('table', $header, $rows);
if ($form['pager']['#value']) {
$output .= drupal_render($form['pager']);
}
$output .= drupal_render($form);
return $output;
}
基本はalterで追加、変更だけですねー。
と、実はdevelでtheme_registerをするのを忘れてnodeoverview_themeで大分ハマりました・・・。
moduleまで書いてくださってありがとうございます
jun784 さん
モジュールまで書いてくださってありがとうございます。
本来ならば、自分で書いていかなければいけないところを・・・
まずはコピペでインストールさせて頂いたところ、
表示の方が変わりました(コメントの所だけ*を入れ直しました)
あとは、なぜこうなっているのかを、自分自身理解してみます
また質問させて頂くこともあるかと思いますが、今後ともよろしくお願いします。