Difference between pages "SEO" and "ConsoleOutput MediaWiki Extension"

(Difference between pages)
m (Dublin core)
 
 
Line 1: Line 1:
[https://en.wikipedia.org/wiki/Search_engine_optimization Seo] stands for search engine optimization. This page is dedicated to helping improve your page rank on search engines.
+
The ConsoleOutput MediaWiki extension was created by Daniel Robbins to provide highlighting of user input for interactive terminal session blocks. To use it, surround user input with  <tt>&lt;console&gt;</tt> opening and closing tags, and put a <tt>##i##</tt> input code immediately before user input on each line. This will cause all text from the <tt>##i##</tt> point to the end of the line to be in a darker color. The rest of the text will be in a lighter grey, allowing it to be distinguished more easily from user input. Here are other sequences that can be used:
  
== Domains ==
+
* <tt>##b##</tt> - highlight the rest of the line in bold.
When selecting a domain name, try to choose a short domain name, omitting words like "the" the longer the url, the harder it is to remember, and this affects page rank.
+
* <tt>##b## text here ##!b##</tt> - highlight the text between both markers in bold.
 +
* <tt>##i## text here ##!i##</tt> - highlight the text between both markers in a darker color.
  
http://www.yes.com is excellent
+
This extension can be further extended to add color support, as desired, and some of the CSS for color support can already be found in the code below.
http://www.nooooooooooooooo.com is bad....
+
  
Domain registration duration impacts SEO, if you intend to have the site a long time, register several years rather than a short period of time, as this will improve SEO.
+
Here are a few examples of the ConsoleOutput extension. First this is how you might typically display {{c|ls}} output, with a particular directory highlighted:
  
=== Canonical Urls ===
+
<console>
your sites urls should have 1 or the other url re-writing, and 301 permanent redirecting so search engines do not see duplicate contentYou are not penalized for url length by adding a www. subdomain.
+
www@www-smw ~/public_html $ ##i##ls
 +
COPYING  LocalSettings.php    api.php  ##b##extensions##!b##    index.php  maintenance          redirect.php    skins              thumb_handler.php5
 +
CREDITS README                api.php5  images        index.php5  mw-config            redirect.php5  tests              wiki.phtml
 +
FAQ      RELEASE-NOTES-1.19    bin      img_auth.php  languages  opensearch_desc.php  redirect.phtml  thumb.php
 +
HISTORY  StartProfiler.sample  cache    img_auth.php5  load.php    opensearch_desc.php5  resources      thumb.php5
 +
INSTALL  UPGRADE              docs      includes      load.php5  profileinfo.php      serialized      thumb_handler.php
 +
www@www-smw ~/public_html $ ##i##cd extensions/
 +
</console>
  
<console>###i## curl -I http://funtoo.org/Welcome</console>
+
And here is how you might display a more detailed example of console output, using colors:
  
<console>###i## curl -I http://www.funtoo.org/Welcome</console>
+
{{console|body=
 +
# ##i##bluetoothctl
 +
[##g##NEW##!g##] Controller 00:02:72:C9:62:65 antec [default]
 +
##bl##[bluetooth]##!bl### ##i##power on
 +
Changing power on succeeded
 +
##bl##[bluetooth]##!bl### ##i##agent on
 +
Agent registered
 +
##bl##[bluetooth]##!bl### ##i##scan on
 +
Discovery started
 +
##bl##[bluetooth]##!bl### ##i##devices
 +
Device 00:1F:20:3D:1E:75 Logitech K760
 +
##bl##[bluetooth]##!bl### ##i##pair 00:1F:20:3D:1E:75
 +
Attempting to pair with 00:1F:20:3D:1E:75
 +
[##y##CHG##!y##] Device 00:1F:20:3D:1E:75 Connected: yes
 +
##r##[agent]##!r## Passkey: 454358
 +
##r##[agent]##!r## Passkey: ##i##4##!i##54358
 +
##r##[agent]##!r## Passkey: ##i##45##!i##4358
 +
##r##[agent]##!r## Passkey: ##i##454##!i##358
 +
##r##[agent]##!r## Passkey: ##i##4543##!i##58
 +
##r##[agent]##!r## Passkey: ##i##45435##!i##8
 +
##r##[agent]##!r## Passkey: ##i##454358##!i##
 +
[##y##CHG##!y##] Device 00:1F:20:3D:1E:75 Paired: yes
 +
Pairing successful
 +
[##y##CHG##!y##] Device 00:1F:20:3D:1E:75 Connected: no
 +
##bl##[bluetooth]##!bl### ##i##connect 00:1F:20:3D:1E:75
 +
Attempting to connect to 00:1F:20:3D:1E:75
 +
[##y##CHG##!y##] Device 00:1F:20:3D:1E:75 Connected: yes
 +
Connection successful
 +
##bl##[bluetooth]##!bl### ##i##quit
 +
[##r##DEL##!r##] Controller 00:02:72:C9:62:65 antec [default]
 +
#
 +
}}
  
==== php? ====
+
To install, make the following modifications to your skin:
Question marks are bad.  Most search engines freak out about indexing anything past a ? so use url rewrites to remove index.php? and leave just site.com/Main_Page
+
  
==== Url spaces ====
+
<syntaxhighlight lang="css">
You should prefer - over _ to represent spaces. MediaWiki is flawed in design preferring _ over -. This is an older SEO problem, yet it still persists in affecting your page ranking[[web-server-stack]] is an example of an SEO friendly url with spaces.
+
--- mediawiki-1.19.1/skins/vector/screen.css    2012-06-13 18:22:39.000000000 +0000
 +
+++ public_html/skins/vector/screen.css 2012-08-27 04:34:47.507912892 +0000
 +
@@ -683,10 +683,47 @@
 +
        list-style-image: url(images/bullet-icon.png);
 +
  }
 +
 +
-pre {
 +
-       line-height: 1.3em;
 +
+/* ConsoleOutput.php start */
 +
+
 +
+.shell, pre, code, tt, div.mw-geshi {
 +
+        font-size: 12px;
 +
+        font-family: Consolas, 'andale mono','lucida console', monospace;
 +
+}
 +
+
 +
+.shell, pre, div.mw-geshi {
 +
+        background-color: #F8F8FF;
 +
+        line-height: 15px;
 +
+        padding: 10px;
 +
+        border: none;
 +
+        border-top: 2px solid #C6C9E0;
 +
+        border-bottom: 2px solid #C6C9E0;
 +
+        margin: 0;
 +
+        overflow-x: auto;
 +
+        overflow-y: hidden;
 +
+}
 +
+
 +
+.code {
 +
+        color: #666;
 +
+}
 +
+
 +
+.code_input {
 +
+        color: #000;
 +
}
 +
 +
+.code_red {
 +
+        color: #f00;
 +
+}
 +
+
 +
+.code_blue {
 +
+        color: #00f;
 +
+}
 +
+
 +
+.shell_green {
 +
+        color: #080;
 +
+}
 +
+
 +
+/* ConsoleOutput.php end */
 +
+
 +
/* Site Notice (includes notices from CentralNotice extension) */
 +
#siteNotice {
 +
        font-size: 0.8em;
 +
</syntaxhighlight>
  
== Server Speed ==
+
Then install the following code in your <tt>extensions</tt> directory and include it with a <tt>require_once( "$IP/extensions/ConsoleOutput.php" );</tt> in <tt>LocalSettings.php</tt>:
How fast your page loads significantly impacts seo.  Installing a caching reverse proxy, and testing that it hits close to 100% of the time is a good idea. It prevents your server from rebuilding pages, hitting the processor, and also speeds up page delivery to move the bottle neck from the php building to the internet connection speed. see: {{Package|www-servers/varnish}}
+
  
== Meta Description/Keywords/Tags ==
+
<syntaxhighlight lang="php">
Meta information is parsed directly by search engines.  with these in place they will be displayed rather than the initial text of your canonical landing page.
+
<?php
=== Dublin core ===
+
$wgExtensionCredits['validextensionclass'][] = array(
Dublin core is a metadata system that produces details for search engines to discover such as authors, & publication dates.  many sites generate this meta information dynamically.
+
    'name' => 'ConsoleOutput',
 +
    'author' => 'Daniel Robbins',
 +
    'url' => 'https://github.com/danielrobbins/mediawiki-consoleoutput',
 +
    'description' => 'This extension allows you to display colorized console output in mediawiki'
 +
);
  
== External Links ==
+
if ( defined( 'MW_SUPPORTS_PARSERFIRSTCALLINIT' ) ) {
Posting links around is ok so long as it is organic, and not spammy.  addthis share widgets improve SEO as they produce many backlinks that are not a bot dumping anywhere, and everywhere.  addthis produces twitter/facebook/g+/redit etc share links, and has an analytic service.
+
        $wgHooks['ParserFirstCallInit'][] = 'consoleOutputSetup';
 +
} else {
 +
        $wgExtensionFunctions[] = 'consoleOutputSetup';
 +
}
  
== SiteMaps & robots.txt ==
+
function consoleOutputSetup( $data )
Sitemaps generate xml pages that tell crawlers about your sites content pages, and robots.txt tell crawlers about pages they're not allowed to index.  In a few iterations ill look up how to make a robots that allows everything, as if its not even there, and an external site map generating service.
+
{
 +
    global $wgParser;
 +
    $wgParser->setHook('console', 'consoleRender');
 +
    return true;
 +
}
  
===testing, and evaluating===
+
function consoleRender($input, $args, $parser)
==== free analysis ====
+
{
*http://www.wpromote.com/seo/seo-audit-tool (shows which pages are ranked)
+
    if (count($args))
* http://www.webrankpage.com/
+
    {
* http://www.seomastering.com/ (shows estimated page value in USD)
+
        return "<strong class='error'>" .
* http://seositecheckup.com/ (throttled to 1 check every 30 minutes)
+
              "ConsoleOutput: arguments not supported" .
* http://www.site-seo-analysis.com/
+
              "</strong>";
* http://www.seoworkers.com/tools/analyzer.html
+
    }
  
==== free with required registration ====
+
    # Display < and > as literals, so escape them:
* http://www.site-analyzer.com/
+
  
==== pay with free trial ====
+
    $input = preg_replace('/>/','&gt;', $input);
free 1 site per week testing
+
    $input = preg_replace('/</','&lt;', $input);
* http://www.woorank.com/
+
  
==== unsorted goodies ====
+
    # http://www.perlmonks.org/?node_id=518444
*http://www.webpagetest.org/
+
    # See "Matching a pattern that doesn't include another pattern:
*http://www.seocentro.com/tools/seo/seo-analyzer.html
+
 
*http://www.seoptimer.com/
+
    $input = preg_replace('/##i##((?:(?!##!i##).)*)##!i##/','<span class="code_input">$1</span>', $input);
*https://www.found.co.uk/seo-tool/
+
    $input = preg_replace('/##i##(.*)/','<span class="code_input">$1</span>', $input);
*https://zadroweb.com/seo-auditor/
+
    $input = preg_replace('/##b##((?:(?!##!b##).)*)##!b##/','<b>$1</b>', $input);
*https://marketing.grader.com/
+
    $input = preg_replace('/##b##(.*)/','<b>$1</b>', $input);
*http://www.alexa.com/
+
    return "<pre class=\"code\">" . $input . "&lt;/pre>";
 +
}
 +
?>
 +
</syntaxhighlight>
 +
 
 +
[[Category:MediaWiki Hacks]]

Revision as of 01:05, January 12, 2015

The ConsoleOutput MediaWiki extension was created by Daniel Robbins to provide highlighting of user input for interactive terminal session blocks. To use it, surround user input with <console> opening and closing tags, and put a ##i## input code immediately before user input on each line. This will cause all text from the ##i## point to the end of the line to be in a darker color. The rest of the text will be in a lighter grey, allowing it to be distinguished more easily from user input. Here are other sequences that can be used:

  • ##b## - highlight the rest of the line in bold.
  • ##b## text here ##!b## - highlight the text between both markers in bold.
  • ##i## text here ##!i## - highlight the text between both markers in a darker color.

This extension can be further extended to add color support, as desired, and some of the CSS for color support can already be found in the code below.

Here are a few examples of the ConsoleOutput extension. First this is how you might typically display ls output, with a particular directory highlighted:

www@www-smw ~/public_html $ ls
COPYING  LocalSettings.php     api.php   extensions    index.php   maintenance           redirect.php    skins              thumb_handler.php5
CREDITS  README                api.php5  images         index.php5  mw-config             redirect.php5   tests              wiki.phtml
FAQ      RELEASE-NOTES-1.19    bin       img_auth.php   languages   opensearch_desc.php   redirect.phtml  thumb.php
HISTORY  StartProfiler.sample  cache     img_auth.php5  load.php    opensearch_desc.php5  resources       thumb.php5
INSTALL  UPGRADE               docs      includes       load.php5   profileinfo.php       serialized      thumb_handler.php
www@www-smw ~/public_html $ cd extensions/

And here is how you might display a more detailed example of console output, using colors:

# bluetoothctl 
[NEW] Controller 00:02:72:C9:62:65 antec [default]
[bluetooth]# power on
Changing power on succeeded
[bluetooth]# agent on
Agent registered
[bluetooth]# scan on
Discovery started
[bluetooth]# devices
Device 00:1F:20:3D:1E:75 Logitech K760
[bluetooth]# pair 00:1F:20:3D:1E:75
Attempting to pair with 00:1F:20:3D:1E:75
[CHG] Device 00:1F:20:3D:1E:75 Connected: yes
[agent] Passkey: 454358
[agent] Passkey: 454358
[agent] Passkey: 454358
[agent] Passkey: 454358
[agent] Passkey: 454358
[agent] Passkey: 454358
[agent] Passkey: 454358
[CHG] Device 00:1F:20:3D:1E:75 Paired: yes
Pairing successful
[CHG] Device 00:1F:20:3D:1E:75 Connected: no
[bluetooth]# connect 00:1F:20:3D:1E:75
Attempting to connect to 00:1F:20:3D:1E:75
[CHG] Device 00:1F:20:3D:1E:75 Connected: yes
Connection successful
[bluetooth]# quit
[DEL] Controller 00:02:72:C9:62:65 antec [default]
#


To install, make the following modifications to your skin:

--- mediawiki-1.19.1/skins/vector/screen.css    2012-06-13 18:22:39.000000000 +0000
+++ public_html/skins/vector/screen.css 2012-08-27 04:34:47.507912892 +0000
@@ -683,10 +683,47 @@
        list-style-image: url(images/bullet-icon.png);
 }
 
-pre {
-       line-height: 1.3em;
+/* ConsoleOutput.php start */
+
+.shell, pre, code, tt, div.mw-geshi {
+        font-size: 12px;
+        font-family: Consolas, 'andale mono','lucida console', monospace;
+}
+
+.shell, pre, div.mw-geshi {
+        background-color: #F8F8FF;
+        line-height: 15px;
+        padding: 10px;
+        border: none;
+        border-top: 2px solid #C6C9E0;
+        border-bottom: 2px solid #C6C9E0;
+        margin: 0;
+        overflow-x: auto;
+        overflow-y: hidden;
+}
+
+.code {
+        color: #666;
+}
+
+.code_input {
+        color: #000;
 }
 
+.code_red {
+        color: #f00;
+}
+
+.code_blue {
+        color: #00f;
+}
+
+.shell_green {
+        color: #080;
+}
+
+/* ConsoleOutput.php end */
+
 /* Site Notice (includes notices from CentralNotice extension) */
 #siteNotice {
        font-size: 0.8em;

Then install the following code in your extensions directory and include it with a require_once( "$IP/extensions/ConsoleOutput.php" ); in LocalSettings.php:

<?php
$wgExtensionCredits['validextensionclass'][] = array(
    'name' => 'ConsoleOutput',
    'author' => 'Daniel Robbins',
    'url' => 'https://github.com/danielrobbins/mediawiki-consoleoutput',
    'description' => 'This extension allows you to display colorized console output in mediawiki'
);
 
if ( defined( 'MW_SUPPORTS_PARSERFIRSTCALLINIT' ) ) {
        $wgHooks['ParserFirstCallInit'][] = 'consoleOutputSetup';
} else {
        $wgExtensionFunctions[] = 'consoleOutputSetup';
}
 
function consoleOutputSetup( $data )
{
    global $wgParser;
    $wgParser->setHook('console', 'consoleRender');
    return true;
}
 
function consoleRender($input, $args, $parser)
{
    if (count($args))
    {
        return "<strong class='error'>" .
               "ConsoleOutput: arguments not supported" .
               "</strong>";
    }
 
    # Display < and > as literals, so escape them:

    $input = preg_replace('/>/','&gt;', $input);
    $input = preg_replace('/</','&lt;', $input);
 
    # http://www.perlmonks.org/?node_id=518444
    # See "Matching a pattern that doesn't include another pattern:

    $input = preg_replace('/##i##((?:(?!##!i##).)*)##!i##/','<span class="code_input">$1</span>', $input);
    $input = preg_replace('/##i##(.*)/','<span class="code_input">$1</span>', $input);
    $input = preg_replace('/##b##((?:(?!##!b##).)*)##!b##/','<b>$1</b>', $input);
    $input = preg_replace('/##b##(.*)/','<b>$1</b>', $input);
    return "<pre class=\"code\">" . $input . "&lt;/pre>";
}
?>