'; template_css(); // Here comes the JavaScript bits! echo ' '; template_javascript(); echo ' ', !empty($context['meta_keywords']) ? ' ' : '', ' ', $context['page_title_html_safe'], ''; // Please don't index these Mr Robot. if (!empty($context['robot_no_index'])) echo ' '; // Present a canonical url for search engines to prevent duplicate content in their indices. if (!empty($context['canonical_url'])) echo ' '; // Show all the relative links, such as help, search, contents, and the like. echo ' ', ($context['allow_search'] ? ' ' : ''); // If RSS feeds are enabled, advertise the presence of one. if (!empty($modSettings['xmlnews_enable']) && (!empty($modSettings['allow_guestAccess']) || $context['user']['is_logged'])) echo ' '; // If we're viewing a topic, these should be the previous and next topics, respectively. if (!empty($context['current_topic'])) echo ' '; // If we're in a board, or a topic for that matter, the index will be the board's index. if (!empty($context['current_board'])) echo ' '; // Output any remaining HTML headers. (from mods, maybe?) echo $context['html_headers']; echo ' '; } function template_body_above() { global $context, $settings, $options, $scripturl, $txt, $modSettings; echo !empty($settings['forum_width']) ? '
' : '', ' '; // The main content should go here. echo '
'; // Custom banners and shoutboxes should be placed here, before the linktree. // Show the navigation tree. theme_linktree(); } function template_body_below() { global $context, $settings, $options, $scripturl, $txt, $modSettings; echo '
'; // Show the "Powered by" and "Valid" logos, as well as the copyright. Remember, the copyright must be somewhere! echo ' ', !empty($settings['forum_width']) ? '
' : ''; } function template_html_below() { global $context, $settings, $options, $scripturl, $txt, $modSettings; template_javascript(true); echo ' '; } /** * Show a linktree. This is that thing that shows "My Community | General Category | General Discussion".. * @param bool $force_show = false */ function theme_linktree($force_show = false) { global $context, $settings, $options, $shown_linktree; // If linktree is empty, just return - also allow an override. if (empty($context['linktree']) || (!empty($context['dont_default_linktree']) && !$force_show)) return; echo ' '; $shown_linktree = true; } /** * Show the menu up top. Something like [home] [help] [profile] [logout]... */ function template_menu() { global $context, $settings, $options, $scripturl, $txt; echo ' '; } /** * Generate a strip of buttons. * @param array $button_strip * @param string $direction = '' * @param array $strip_options = array() */ function template_button_strip($button_strip, $direction = '', $strip_options = array()) { global $settings, $context, $txt, $scripturl; if (!is_array($strip_options)) $strip_options = array(); // List the buttons in reverse order for RTL languages. if ($context['right_to_left']) $button_strip = array_reverse($button_strip, true); // Create the buttons... $buttons = array(); foreach ($button_strip as $key => $value) { if (!isset($value['test']) || !empty($context[$value['test']])) $buttons[] = '
  • ' . $txt[$value['text']] . '
  • '; } // No buttons? No button strip either. if (empty($buttons)) return; // Make the last one, as easy as possible. $buttons[count($buttons) - 1] = str_replace('', '', $buttons[count($buttons) - 1]); echo ' '; } /** * Output the Javascript files */ function template_javascript($do_defered = false) { global $context; // Use this hook to minify/optimize Javascript files call_integration_hook('pre_javascript_output'); foreach ($context['javascript_files'] as $filename => $options) if ((!$do_defered && empty($options['defer'])) || ($do_defered && !empty($options['defer']))) echo ' '; } /** * Output the Javascript vars */ function template_javascript_vars() { global $context; call_integration_hook('pre_javascript_vars_output'); foreach ($context['javascript_vars'] as $key => $value) echo ' var ', $key, ' = ', $value; } /** * Output the CSS files */ function template_css() { global $context; // Use this hook to minify/optimize CSS files call_integration_hook('pre_css_output'); foreach ($context['css_files'] as $filename => $options) echo ' '; } ?>