一、参数arguments => array(1)或者array(2)是啥意思?(传递变量值) 二、arg(1)arg(4)是啥意思?(返回当前的路径) 例:When viewing a page at the path "admin/content/types", for example, arg(0) would return "admin", arg(1) would return "content", and arg(2) would return "types". http://api.drupal.org/api/drupal/includes--path.inc/function/arg/6 三、form表单中的 ‘#type’ => 'value'是啥意思?如: $form['v'] = array( '#type' => 'value', '#value' => $v, );(应该是值传递) 四、hook_menu路径中的%(半明白) 五、variable_get总是一直用,而variable_set很少用。why? 六、hook_user需要再加深理解 http://api.drupal.org/api/drupal/developer--hooks--core.php/function/hook_user/6 http://api.drupal.org/api/drupal/developer--hooks--core.php/function/hook_link/6 http://zhupou.cn/book/export/html/174 如何在个人账户增加tab标签: 需要在hook_menu函数里增加路径(user/%user_uid_optional/XXXX),然后'type' => MENU_LOCAL_TASK 如何在个人账户的历史里增加内容: function photos_user($op, &$edit, &$ac) { global $user; switch ($op){ case 'view': $item[] = l(t("地址1"),"xxxx"); $item[] = l(t("地址2"),"xxxx"); $item[] = l(t("地址3"),"xxxx"); $ac->content['summary']['xiang'] = array( //xiang为自由增加 '#type' => 'user_profile_item', '#title' => t('标题'), '#value' => theme('item_list', $item), '#attributes' => array('class' => 'chen'),//chen为增加的CSS类 ); } 如何在添加评论右侧添加链接: hook_link($type, $object, $teaser = FALSE){ $links = array(); if($node->type == 'story'){ $title = t('添加注释'); } $links['zhushi'] = array( 'title' => $title, 'href' => "ddddddd", ); return $links; } <?php function hook_link($type, $object, $teaser = FALSE) { $links = array(); if ($type == 'node' && isset($object->parent)) { if (!$teaser) { if (book_access('create', $object)) { $links['book_add_child'] = array( 'title' => t('add child page'), 'href' => "node/add/book/parent/$object->nid", ); } if (user_access('see printer-friendly version')) { $links['book_printer'] = array( 'title' => t('printer-friendly version'), 'href' => 'book/export/html/' . $object->nid, 'attributes' => array('title' => t('Show a printer-friendly version of this book page and its sub-pages.')), ); } } } $links['sample_link'] = array( 'title' => t('go somewhere'), 'href' => 'node/add', 'query' => 'foo=bar', 'fragment' => 'anchorname', 'attributes' => array('title' => t('go to another page')), ); // Example of a link that's not an anchor if ($type == 'video') { if (variable_get('video_playcounter', 1) && user_access('view play counter')) { $links['play_counter'] = array( 'title' => format_plural($object->play_counter, '1 play', '@count plays'), ); } } return $links; } ?> -
<?php function hook_link($type, $object, $teaser = FALSE) { $links = ' P1 h0 o/ {! `+ Z% }9 y2 Q Create an array" href="http://php.net/array">array();
if ($object->type == 'video' && $object->name) { $links['sample_link'] = 9 v5 _, i- d0 u8 g; ?6 [+ P
Create an array" href="http://php.net/array">array( 'title' => 'Videos by ' . $object->name, 'href' => 'user/' . $object->uid, 'query' => 'quicktabs_1=0', 'fragment' => 'quicktabs', ); }
return $links; }
-
-
-
- hook_link_alter(&$links, $node)
修改注册表单: hook_user($op, &$edit, &$ac){ case 'register': $fields['personal_profile'] = array( '#type' => 'fieldset', '#title' => '个人资料(可选)', ); $fields['personal_profile']['sex'] = array( '#title' => '性别', '#type' => 'radios', '#default_value' => 0, '#options' => array('男' , '女') ); $fields['personal_profile']['address'] = array( '#type' => 'textfield', '#title' => '现居住地址', ); $fields['personal_profile']['introduction'] = array('#title' => '个人介绍', '#type' => 'textarea', '#rows' => 5, '#cols' => 50); return $fields; case 'form': $fields['personal_profile'] = array( '#type' => 'fieldset', '#title' => '个人资料(可选)', '#weight' => 1, ); $fields['personal_profile']['sex'] = array( '#title' => '性别', '#type' => 'radios', '#default_value' => 0, '#options' => array('男' , '女'), '#default_value' => $user->sex, ); $fields['personal_profile']['address'] = array( '#type' => 'textfield', '#title' => '现居住地址', '#default_value' => $user->address, ); $fields['personal_profile']['introduction'] = array( '#title' => '个人介绍', '#type' => 'textarea', '#rows' => 5, '#cols' => 50, '#default_value' => $user->introduction ); return $fields; break; } 其中的register这个op控制用户注册表单,而form这个op控制用户编辑自己个人资料的表单。form只是比register加入了一些默认值而已,而这些默认值是从登录用户的user对象中读取的,很简单吧。 最后,如果你只是一个drupal使用者,不妨可以使用drupal内置的profile模块,手动配置和添加,更方便。
国外设计论坛摘自:dreamboycx的博客,谢谢!
|