Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== WordPress Plugins from OutlyerNet ====== <callout type="warning" title="Caveat emptor" icon="true"> Here I'll place plugins I've written or modified to fit my needs, **but I'm not a WordPress hacker**, so I might be re-inventing the wheel for built-in functions or pre-existing, much better plugins. \\ If you know that's the case, please contact me :). I can't say for sure either if I'm inadvertently breaking something or punching security holes into WordPress although I can't see any such problems in the code I'm publishing. </callout> <callout type="info" icon="true"> These are plugins I wrote for my personal use, I've tried to make them usable by others before publishing but there're some rough edges. Code here is published under the **GPL** license unless specified otherwise.</p> </callout> ===== Relative URLs ===== <callout type="success" icon="true">This plugin works correctly with current versions of WordPress as of 2017.</callout> [[/files/wordpress/net_outlyer_wp-relativeurls.php|Download v1.5]] (last update october 14th 2007). Relative URL<nowiki>s</nowiki> is mainly targeted at people with a **local copy** of their WordPress site and those that **reorganise and/or change their pages hierarchy often** although many standard installations can also take advantage of it. //Relative URLs// can be seen as kind of complementary to Interlinks: It creates a valid URL or link from a relative path. \\ If you want to link to a post Interlinks or Interlinks+ are better alternatives, but if you want to link to a given file in your site neither will help you. \\ I guess so far it isn't clear what's the need for such a plugin, so let's clarify a bit, note that: * Pages can be accessed from more than one URL (I'm assuming your WordPress installation is in a subdirectory and URL redirection is being used): * <html><samp>http://example.com/parentpage/page/</samp></html> * <html><samp>http://example.com/wordpress/parentpage/page/</samp></html> * <html><samp>http://example.com/wordpress/?page_id=2</samp></html> * Using an absolute URL to refer to stuff in the site has the potential of being broken if you * Change WordPress' path, e.g.: <html><samp>http://example.com/wordpress/</samp></html> is moved to <html><samp>http://example.com/</samp></html> or <html><samp>http://example.com/blog/</samp></html>. * Change your (sub)domain, e.g. <html><samp>http://example.com/</samp></html> becomes <html><samp>http://blog.example.com/</samp></html>. * Using a relative URL to refer to stuff in the site has the potential of being broken if you (or visitors) * Access from a different URL, e.g.: A relative URL like <html><samp>images/im.jpg</samp></html> will point to different things when accessed from <html><samp>http://example.com/parentpage/page</samp></html> (<html><samp><var>http://example.com/parentpage/page/images/im.jpg</var></samp></html>) and <html><samp>http://example.com/wordpress/?page_id=2</samp></html> (<html><samp><var>http://example.com/wordpress/images/im.jpg</var></samp></html>). Finally, if you use a local copy of WordPress to test stuff, chances are your local copy would have quite a different URL, e.g. <html><samp>http://localhost/~username/wordpress/</samp></html> and you might want your URLs to point to the local copy and not the on-line site.</p> ===== Interlinks+ ===== <callout type="info" icon="true" title="No longer needed">This plugin was integrated back into the main [[//wordpress.org/extend/plugins/interlinks/|Interlinks]] so it is deprecated.</callout> [[/files/wordpress/kd-o-interlinks.php|Download v1.0a+]] (last update october 13th 2007). Interlinks+ is based on [[http://www.harleyquine.com/php-scripts/interlinks/|Interlinks]] by Harley. The original adds a very nifty feature: it enables wiki-style interlinks (e.g. <html><code>[[Some article]]</code></html> will be converted to a link to the post/page titled <html><var>"Some article"</var></html>). There's a feature I missed in Interlinks: Support for [[wp>Help:Piped_link|piped links]]; continuing with the above example, <html><code>[[Some article|That's a nicer title IMHO]]</code></html> would link to <html><var>"Some article"</var></html> but the link text will be <html><var>"That's a nicer title IMHO"</var></html>. Additionally I added a couple extra modifications to generate valid XHTML, and made the link also display the article's title. Let's compare Interlinks and Interlinks+: ^ \\ Case 1: Standard interlink ||^ | Example: ''<nowiki>[[My article]]</nowiki>'' ||| ^ ^ Interlinks ^ Interlinks+ ^ ^ Generated HTML | <code html><a href="http://example.invalid/my-article/">My article</a></code> | <code html><a href="http://example.invalid/my-article/" title="My article">My article</a></code> | ^ Rendered HTML | <html><a href="http://example.invalid/my-article/">My article</a></html> | <html><a href="http://example.invalid/my-article/" title="My article">My article</a></html> | ^ \\ Case 2: Interlink with user-supplied text ||^ | Example: ''<nowiki>[[My article|My first article]]</nowiki>'' ||| ^ ^ Interlinks ^ Interlinks+ ^ ^ Generated HTML | <code html><font color='red'>My article</font></code> | <code html><a href="http://example.invalid/my-article/" title="My article">My first article</a></code> | ^ Rendered HTML | <html><span style="color:red;"><nowiki>My article|My first article</nowiki></span></html> <label type="warning">broken link</label> | <html><a href="http://example.invalid/my-article/" title="My article">My first article</a></html> | ^ \\ Case 3: Broken link ||^ | Example: ''<nowiki>[[Broken]]</nowiki>'' (where "Broken" doesn't exist) ||| ^ ^ Interlinks ^ Interlinks+ ^ ^ Generated HTML | <code html><font color='red'>Broken</font></code> | <code html><span style="color:red;">Broken</span></code> | ^ Rendered HTML | <html><span style="color:red;">Broken</span></html> <label type="warning">broken link</label> | <html><span style="color:red;">Broken</span></html> <label type="warning">broken link</label> | ==== Usage ==== Enclose your local URL in double braces (e.g. <html><samp></html>''<nowiki>{{myrelative/url}}</nowiki>''<html></samp></html>), to get a full URL generated dynamically, e.g. to <html><samp>http://example.com/wordpress/myrelative/url</samp></html>. Enclose your local URL in double braces along a text description (separated by a space) to get a dynamically generated link to the full URL. \\ <html><samp></html>''<nowiki>{{the_url/file.txt The text file}}</nowiki>''<html></samp></html> would become <html><samp><a href="http://example.com/wordpress/the_url/file.txt">The text file</a></samp></html>. Note you'll have to encode any spaces in the url (e.g. to link to "<html><samp>the file</samp></html>"; you'll have to encode the space (replace it with ''%20'') i.e.: <html><samp></html>''<nowiki>{{the%20file}}</nowiki>''<html></samp></html>. ==== Escaping Relative URLs ==== If you want to write literal double curly brackets (''{{'') then you'll have to use an //html entity// such as <html><samp></html>''{''<html></samp></html> and <html><samp></html>''}''<html></samp></html> (or <html><samp></html>''{''<html></samp></html> and <html><samp></html>''}''<html></samp></html>). For maximum security use at least one on each end, e.g. <html><samp></html>''{{\_whatever\_}}''<html></samp></html> will be parsed correctly as <html><samp></html>''{{\_whatever\_}}''<html></samp></html>. \\ BUT beware of the visual editor in WordPress (although if you use it you're probably used to fight it ;). ===== JS Base2 ===== <callout type="danger" icon="true" title="Abandoned">This plugin is abandoned. Additionally, Base2 doesn't seem to be updated anymore.</callout> [[/files/wordpress/js-base2-1.0+0.9a.tar.gz|Download v1.0+0.9a]] (last update october 24th 2007). (Note <var>1.0</var> is the plugin version and <var>0.9a</var> is the Base2 version used in the plugin). A completely trivial plugin that loads [[http://dean.edwards.name|Dean Edwards]] **base2** JavaScript library (see [[http://dean.edwards.name/weblog/2007/03/yet-another|[1]]] and [[http://code.google.com/p/base2/| [2]]]). This library is mostly a cross-browser fix of the <html><abbr title="Document Object Model">DOM</abbr></html> plus a selectors API implementation (allowing selection from JavaScript with CSS selectors). <label type="info">Note</label> It is used by the following plugin :) ===== JS Syntax Highlighter ===== <callout type="danger" icon="true" title="Abandoned">This plugin is abandoned.</callout> [[/files/wordpress/js-syntax-highlighter-0.2.tar.gz|Download v0.2]] (last update october 25th 2007). This plugin loads Alex Gorbatchev **[[http://code.google.com/p/syntaxhighlighter/SyntaxHighlighter]]** JavaScript script. With a twist :) //SyntaxHighlighter// is a script that will highlight code from JavaScript when marked appropriately, hence allowing you to post raw code that will be automagically pretty-printed on load. \\ I needed a couple workarounds to use it on my site and they were the motivation for this plugin: First problem: Code must be enclosed in either a ''<pre>'' or a ''<textarea>'' tag, with their ''name'' attribute set to certain (user-selectable) value.\ The problem is, ''<pre>'' has no ''name'' attribute so the page wouldn't validate. \\ (emsp) ** My solution:** (Note I opted to not modify SyntaxHighlighter code) Mark code with a class and then, on-the-fly, add the name attribute from JavaScript (this makes the HTML validate as the invalid attribute is only created in-memory). \\ Second problem: Each supported language has its own associated JavaScript file which you should load when writing code for that language. I felt loading them site-wide was was overkill (and I don't know which languages I might need), while loading them as needed, in the article body, felt cumbersome. \\ (emsp) **My solution:** Load the common script, see if any languages are needed and load them dynamically. As a side effect the page will load faster (the required languages are loaded after the page ended loading). So **in short** this plugin loads SyntaxHighlighter allowing your pages to validate and only loading language files as needed. I also changed the CSS file a bit to use fonts I consider look better and added colours to <html><var></html>functions<html></var></html> and <html><var></html>variables<html></var></html>. ==== Usage ==== Plugin installation: - Decompress in the ''wp-content/plugins'' folder, it will create its own folder. - Activate it from WordPress' admin panel. Syntax highlighting: - Wrap your code in a ''<pre>'' or ''<textarea>'' with class ''syntax-highlight'' and the appropriate class for the language of the block, e.g. ''cpp'' for C++ (see [[http://code.google.com/p/syntaxhighlighter/wiki/Languages|the full list]]). - There's no step 2 :P But remember the highlighting takes place a bit after loading the page. === Usage without base2 === I dropped support for such a situation. You can try with an older version of ''loader.js'' but keep in mind that then languages **won't be autoloaded**. ==== Caveats of the current version ==== === Passing options for a single block === Passing options for a block to SyntaxHighlighter needs a workaround as my loader won't detect the language then, the workaround is to use a hidden, empty block without options, i.e: \\ If you want to have something like <file javascript> <pre class="syntax-highlight javascript:firstline[10]"> function doSomething() { } </pre> </file> <label type="info">PLEASE NOTE</label> This is not an actual representation of the plugin in action. This page doesn't use SyntaxHighlighter. \\ Then you'll need to add a hidden block with the language class(es) needed. That block can have the classes of all needed languages: <file javascript> <!-- Hidden, meaningless, code block --> <div style="display:none !important;"> <pre class="syntax-highlight html cpp"></pre> </div> </file> === Disabled language aliases === Due to the way the code is written the following language name aliases won't be looked for (all of them have alternatives): ''c++'', ''c#'', ''vb.net''. They could be enabled with some escaping but I didn't feel the need :p ==== Customisation ==== There're a couple things you might want to tweak, to change them edit the file ''loader.js'' (note that the version actually loaded in the browser is the one in the ''js/'' directory, but it is shipped packed with [[http://dean.edwards.name/packer/|Dean Edwards' packer]], which makes it quite harder to edit. I suggest you to edit the version in the ''full-js/'' directory and once you're happy with it pack it again. <file javascript> bloggerMode: false, // Set to true if the blogging software adds <br />'s // See: <http://code.google.com/p/syntaxhighlighter/wiki/BloggerMode> opts: [ // Options for HighlightAll, see <http://code.google.com/p/syntaxhighlighter/wiki/HighlightAll> true, // Show Gutter false, // Show Controls (!*not default*) false, // Collapse all 1, // First line false // Show columns ], WAIT_TO_LOAD: 200, // (ms) Period to wait between checks for language loading FAIL_TIMEOUT: 120000, // (ms) After this period will stop trying to load languages </file> These are the meaningful variables, I think they're self explanatory enough, a note of warning though: if some of the languages fail loading you'll have to wait for ''FAIL_TIMEOUT'' milliseconds before syntax highlighting gets enabled. Set it too low, though, and you'll get bogus failures. <WRAP rightalign small> //(c) 2007 Toni Corvera < outlyer at gmail dot com >// </WRAP> All dates/times in this page are UTC. wordpress.txt Last modified: 2017/05/19 01:27by Toni Corvera Log In