(33 intermediate revisions by 16 users not shown)
Line 1: Line 1:
{{ Moved To Community | KDE.org/Capacity HOWTO}}
Capacity is a versatile framework which helps you to construct
your page by focusing on the content. Your pages will be simple
PHP-files which include predefined header and footer. This header/footer
layout the page, you only provide the real content and menu structure.
==Example PHP-file==
Any normal page just contains:
    $page_title = "Page Title";
    include "header.inc";
  Content of the web page
  <?php include "footer.inc"; ?>
==The magic site.inc==
For each subsite, a {{path|site.inc}} in the toplevel directory of this page,
which would be equal to the later documentroot on the server in many
cases, may be created. This include is used by the {{path|header.inc}}, it
should contain some information about your site, like it's name
and the email address of the webmaster, this will be used by header/footer
to setup the page correct.
An example {{path|site.inc}} would be:
    // promote which subdomain we are
    // we are www.kde.org in this case!
    $site = "www";
    // use new style ;) yeah
    $templatepath = "newlayout/";
    // promote title to use
    $site_title = i18n_var("K Desktop Environment");
    // links in the top bar, right
    $menuright = array ('family/'=>'Sitemap',
      'contact/'=>'Contact Us');
Even in the {{path|site.inc}} you can already use the i18n-functions,
which is important to have the names right on translated pages!
==Global Variables setup by header.inc==
The {{path|header.inc}} does some setup of global vars, even before it includes the {{path|site.inc}}, these are:
* <code>$site_root</code> contains the relative path to the toplevel of the current site, like:
  $site_root = "../.."
* <code>$document_root</code> contains the absolut pathname which is the documentroot of this site, even correct if the site isn't in it's own vhost, example:
  $document_root = "/home/www/sites/www"
* <code>$url_root</code> contains the absolute baseurl to the toplevel of your site, if your site would for example have a it's toplevel in, like it is for staging, this would contain
  $url_root = /sites/www
* <code>$current_relativeurl</code> contains the relative part of the current url to the url_root, would you access and /sites/www is the <code>$url_root</code>, it would contain
  $current_relativeurl = whatiskde/manifest.php
'''BE AWARE:''' In former version of the framework it was common to set the <code>$site_root</code> manually before including the {{path|header.inc}}, this won't work now, as the {{path|header.inc}} will overwrite the <code>$site_root</code>. This should cause no danger, as {{path|header.inc}} should find out the right one, but in the long term, all manual definitions should be removed, the global variables {{path|header.inc}} exports should be used to replace the usage of the old <code>$site_root</code>.
The framework is clever, it will never add trailing slashs to the <code>$site_root</code>, <code>$document_root</code> and <code>$url_root</code>, therefor they can and must always be used like:
  $some_url = "$site_root/mycoolpage.php"
==Configuration Variables==
You can set some variables to alter the behaviour of the framework, either global in your site.inc or in front of your {{path|header.inc}} inclusion in each .php-files.
Useful variables are:
* The Name for your whole subdomain/site, best set once in {{path|site.inc}}
  $site_title = "KDE Foo Site Title";
* The title of the individual page.
  $page_title = "Page Title";
* Don't show edit function on the page. The default is <code>$showedit = true;</code>. This setting should normally not be used. {{path|site.inc}} is the preferred place.
  $showedit = false;
==Online Editing==
Capacity features online editing and previewing of changes.
You can make and preview changes of existing pages online by clicking on the [edit] link at the bottom of each page. Try it on [http://www.kde.org/index.php?edit this page].
Then you can download you changes and commit them yourself via SVN, or you can click the link to email a unified diff to the web team.
==Menu Definitions==
The navigation menu is defined by a number of menu.inc files.
They are included by a function in media/includes/classes/class_menu.inc, which is called from media/includes/header.inc.
The general menu structure is defined in the menu.inc file of the root directory of each KDE subsite (e.g. http://www.kde.org/menu.inc or http://www.kde.org/areas/kde-ev/menu.inc).
It should look like this:
    $this->setName ("KDE Foo Site Title");
    $section =&amp; $this->appendSection("Inform");
    $section->appendLink("KDE Home","http://www.kde.org/",false);
    $section =&amp; $this->appendSection("A Second Menu Section");
    $section->appendDir("A Subdirectory","subdirectory");
    $section->appendLink("A Single Page","singlepage.php");
Each mentioned subdirectory will then also be searched for a menu.inc file to define a submenu (e.g. http://www.kde.org/whatiskde/menu.inc).
The format is similar:
    $this->appendDir("A Subsubdirectory","subsubdirectory");
    $this->appendLink("A Page in the Subdirectory","singlepage.php");
The content of subsubdirectories is currently not added to the menu, but this may change in future.
If a subdirectory has just the index.php file or a submenu for the subdirectory is not desired, then an empty menu.inc can be added. If the menu.inc is missing, then the subdirectory is be treated like having an empty menu.inc file.
The main headline of a page is defined via $page_title.
If a page has several sections with a headline each, &lt;h2&gt; is used for them (&lt;h3&gt; for subsections):
  &lt;h2&gt;&lt;a name="section1" /&gt;Section Headline&lt;h2&gt;
  &lt;h3&gt;Subsection Headline&lt;h3&gt;
Headlines must never be used to increase the size of a text. Use &lt;b&gt; to make it stick out. The first letters of every word of a headline or link should be capitalized, apart from small words like "a", "to", etc.
To allow better navigation through the site, each &lt;h2&gt; heading should be linked from a quicklinks section on top of the page:
  &lt;div id="quicklinks"&gt; [
    &lt;a href="section1"&gt;Section Headline&lt;/a&gt; |
    &lt;a href="section2"&gt;Second Section Headline&lt;/a&gt; |
    &lt;a href="section3"&gt;Third Section Headline&lt;/a&gt; ]
If you wish to link &lt;h3&gt; headlines as well, then you can use:
  &lt;div id="quicklinks"&gt;
    &lt;b&gt;&lt;a href="section1"&gt;Section Headline&lt;/a&gt;&lt;/b&gt;: &lt;br /&gt; [
    &lt;a href="section11"&gt;Subsection Headline&lt;/a&gt; |
    &lt;a href="section21"&gt;Second Subsection Headline&lt;/a&gt; |
    &lt;a href="section31"&gt;Third Subsection Headline&lt;/a&gt; ]
    &lt;b&gt;&lt;a href="section2"&gt;Second Section Headline&lt;/a&gt;&lt;/b&gt;: &lt;br /&gt; [
    &lt;a href="section21"&gt;Subsection Headline&lt;/a&gt; ]
A PHP class has been written to make it easy to write FAQs. It will always give a consistent formatting style. Using the class is simple:
    $faq = new FAQ();
    $faq->addQuestion("This is the text of the question",
      "This is the text of the answer");
Note: the page won't be rendered until you call show().
Please use this class rather than hand constructing a FAQ to save your time and to improve consistency.

Latest revision as of 17:48, 11 March 2016

This page is now on the community wiki.

This page was last edited on 11 March 2016, at 17:48. Content is available under Creative Commons License SA 4.0 unless otherwise noted.