The page module is used to create a static page. Unlike a story, a static page is a persistent web page on your site which usually shortcuts the typical lifecycle of user generated content (i.e. submit -> moderate -> post -> comment). A static page is usually linked from the main navigation bar, using whatever text the author wishes. To create a static page without this navigation link, simply skip the link text field.

Site pages, unlike many other forms of Drupal content, may be made of PHP code in addition to HTML and text. All Drupal objects and functions are available to a site administrator.

"); break; case 'admin/system/modules#description': $output = t("Enables the creation of a static pages that can be added to the navigation system."); break; case 'node/add#page': $output = t("If you just want to add a page with a link in the menu to your site, this would be the best choice. Unlike a story, a static page by-passes the submission queue."); break; } return $output; } function page_perm() { return array("maintain static pages"); } function page_node_name($node) { return t("static page"); } function page_access($op, $node) { if ($op == "view") { return $node->status; } if ($op == "create") { return user_access("maintain static pages"); } if ($op == "update") { return user_access("maintain static pages"); } if ($op == "delete") { return user_access("maintain static pages"); } } function page_save($op, $node) { if ($op == "approve") { return array("status" => 1); } if ($op == "decline") { return array("status" => 0); } } function page_insert($node) { db_query("INSERT INTO {page} (nid, format, link, description) VALUES (%d, %d, '%s', '%s')", $node->nid, $node->format, $node->link, $node->description); } function page_update($node) { db_query("UPDATE {page} SET format = %d, link = '%s', description = '%s' WHERE nid = %d", $node->format, $node->link, $node->description, $node->nid); } function page_delete(&$node) { db_query("DELETE FROM {page} WHERE nid = %d", $node->nid); } function page_load($node) { $page = db_fetch_object(db_query("SELECT format, link, description FROM {page} WHERE nid = %d", $node->nid)); return $page; } function page_link($type) { $links = array(); if ($type == "page" && user_access("access content")) { $result = db_query("SELECT n.nid, n.title, p.link, p.description FROM {page} p INNER JOIN {node} n ON p.nid = n.nid WHERE n.status = '1' AND p.link != '' ORDER BY p.link"); while ($page = db_fetch_object($result)) { $links[] = l($page->link, "node/view/$page->nid", array("title" => $page->description)); } } if ($type == "system") { if (user_access("maintain static pages")) { menu("node/add/page", t("static page"), "node_page", 0); } } return $links; } function page_content($node, $main = 0) { /* ** Extract the page body. If body is dynamic (using PHP code), the body ** will be generated. */ if ($node->format == 0) { // HTML type $node = node_prepare($node, $main); } else { // PHP type ob_start(); eval($node->body); $node->teaser = $node->body = ob_get_contents(); ob_end_clean(); } return $node; } function page_view($node, $main = 0, $page = 0) { // prepare the node content $node = page_content($node, $main); // print the node return theme("node", $node, $main, $page); } function page_form(&$node, &$error) { if (function_exists("taxonomy_node_form")) { $output .= implode("", taxonomy_node_form("page", $node)); } $output .= form_textarea(t("Body"), "body", $node->body, 60, 20, filter_tips_short()); $output .= form_textfield(t("Link name"), "link", $node->link, 60, 64, t("To make the page show up in the navigation links, enter the name of the link, otherwise leave blank.")); $output .= form_textfield(t("Link description"), "description", $node->description, 60, 64, t("The description displayed when hovering over the page's link. Leave blank when you don't want a description.")); $output .= form_radios(t("Type"), "format", $node->format, array(0 => "HTML", 1 => "PHP")); return $output; } function page_validate(&$node) { if ($node->format && user_access("create php content")) { // Do not filter PHP code, do not auto-extract a teaser $node->teaser = $node->body; } else { $node->format = 0; } } ?>