-
Url rewriting on Postnuke 0.8
(News)
-
Main principles of the mod rewrite
For information, the URL rewriting is a module that you can activated in your apache to rewrite the links of a site in order to simplify their reading.
The idea is that the Pn Team also thought that the mod rewrite was not necessarily available / activated on all types of servers (particularly on Windows servers). Indeed, the Postnuke team offers rewritings based on tips already heavily used in management systems like blogs.
Before you begin, here is the format of a link without rewriting.
without rewriting
index.php?module=Users&func=logout Index.php? Users & module = func = logout
URL rewriting without mod rewrite
This rewriting reproduced a "virtual" Folders system on your site, links look like this
URL rewriting without mod rewrite
index.php/Users/logout
In terms of mechanism, it is very simple, when your Web server receives a request for a link, it loads instinctively page "index.html". In this index.php, the parameters of the request are recovered via the header (you can look in "phpInfo" there is a field $ _SERVER [ 'REQUEST_URI'] which corresponds to this information).Then these parameters are interpreted , between the first two "/" is the name of the module, between the two others, the function name. Now Postnuke know the name of the module and function to launch.
You can pass parameters too, for instance, if you want to load a forum with id=2, the links will look like this
URL rewriting without mod rewrite
index.php/Forum/viewforum/forum:2
Note that the url rewriting uses ":" to represent the parameters in a url. So you can't pass variables like this "index.php?variable=filter:3". (be carefull if you are using Pagesetter and his filters system).
URL rewriting with mod rewrite
Optimizing the previous version
In the previous example, all links contained index.php ... but it's ugly, and functionally this file contains no
information useful to load the asked module.This trick is useful when you have no mod rewrite, but if one has an "mod rewrite enabled" server,you can use a "lighter" version of the previous rewriting without an "index.html"
Here is an example
URL rewriting with mod rewrite :Optimizing the previous version
/Users/logout
Be careful, if one of your pictures is written this way
and you load the page /MyModule/main/. "/MyModule/main/test.png" which will be searched. Note that you can make a rewriting that redirect all links of the form "/*/*/*.(jpg | png | gif)" to "$ 3. (Jpg | png | gif)." (but it's ugly).
Mode file
This url rewriting is the classical version already used in previous versions of the cms, The rewrited links are lists of words (module name, the name of function) separated by dashes. Note that this version uses a large number of regular expressions rules to do the rewriting compared to the other one, which may increase the load of your server Web.
One example here ...
URL rewriting with mod rewrite : Mode file
module-Forum-viewtopic-topic-2903-start-0.html
Note that the "module" which one would have thought there's no point in it, is made for the support of the "old style" loading of modules.
URL rewriting customized
So here is the coolest feature, which allows you to customize the URL rewriting depending on the module you want to load. Just create a "encodeurl" function in your API module (pnuserapi) that takes as parameters, the information needed to create for output a fully customized rewrited link.
After, the loading of each page of the CMS, a "decodeurl" function in the API part of the module takes care to reformat the encoded url in a form understandable by the CMS.
You can find an example of the use of this method in the module "Pages" of values addons
Format of a encode and decode url
function pages_userapi_encodeurl($args)
function pages_userapi_decodeurl($args)
This feature is interesting because it allows us to have the hands on your url, not only before loading the page, but after loading this page, allowing you post-processing actions rather interessant.
This method allow you to
- put keywords in the url: (see Pages module)
- have a single version of your rewrited url : Indeed, through the post treatment you can recalculate the url and it does not conform to your requirements, you can redirect to the good link via a redirect 301 "Moved Permanently headers.
Use case of a url rewriting "no duplicate"
Notes: A small problem nevertheless for the use of this rewriting, which is limited to the type url "user". (more details here)
This article is a translation from this "how to" released on Postnuke-France
Generated on February 25, 2008.
-
SEO for postnuke
(News)
-
Customize title
You can customize the general title of your postnuke, by filling in the correspondant fields in the module "settings". The problem is that, you will have only one title for the whole website ... and that's ugly (and bad for SEO).
A solution was offered by Markwest, in order to personnalize this title, on every pages.the title tag plugin
This plugin allow you to format titles like this
Classic titles
HTML for Module Developers - A Discussion :: pnCommunity :: Support at your fingertips
if you want to have shorter titles like this, you can use the other unofficial version in the comments.
Improved titles
HTML for Module Developers
If you're using pnForum, it will give you title like this
PnForum title
Customize meta "descriptions" and "keywords"
You can customize the meta "descriptions" and "Keywords" of you CMS, by filling in the correspondant field in the "settings" module, but with this customisation, you will have only one "description" and "keywords" fields for all the site.
In order to improve this, there are two plugin on the community repository, one for fixing the descriptions and the other one for the keywords tags.
Notes : As the Search engine were spammed by overloaded keywords tags, for most of them , they don't consider this tags anymore.
If you're using pnForum, it will give you this :
PnForum metas
Activate url rewriting
You can activate the url rewriting in Xanthia, go to the Xanthia module, then check the options "use short urls", and copy paste the .htaccess file from the "doc" folder to the root of you CMS.
/!\ Be careful, live search doesn't url with more than two dashes
Notes : an improved version of the current url rewriting is available in postnuke 0.8.
Duplicate content
Don't duplicate links in your portal, two differents links must not point to the same content. Indeed, some search engine don't like to see multiples versions of the same page on a website (that's called "duplicate content")
To avoid this, you can use a robots.txt at the root of the CMS
Robots.txt
User-agent: *
Disallow: admin.php
Disallow: config/*
Disallow: header/*
Disallow: footer/*
Disallow: pntables/*
Disallow: /images/*
Disallow: /includes/*
Disallow: /adlogger/*
Disallow: /themes/*
Disallow: /pnTemp/*
Disallow: /docs/*
Disallow: /javascript/*
Disallow: *.php
Disallow:module-Forum-viewtopic-topic-*-start-0.html
An other tip, "/index.php", "/index.html" and "/" redirect to the same page so you can add this rule in you .htaccess
.htaccess
RewriteRule ^index\.html$ http://postnuke.com [NC,R=301]
RewriteRule ^index\.php$ http://postnuke.com [NC,R=301]
Text formating
In your articles or templates, try to have a structured layout with H1, H2, H3 tags.
Autolink and intern link
The module "autolink" is interesting, because he allows you to create a large amount of intern links with the same source anchor, this will help to increase your rank on the given word
404 error
When you've got an important portal with a large number of pages , it may be possible some of you ranked pages doesn't exist anymore. When search engine bots come to look for this "ghost" pages, you can redirect them to the home of your website, with an "Error 404" header.
.htaccess
ErrorDocument 404 /index.html
Take off unused metas tags
For most of them, search engine bots don't read some meta like "revist-after", so you can take them of your head tags. It will not help you, but you will have a cleaner header.
xxx.html
This article is a translation from this "how to" released on Postnuke-France
Generated on January 31, 2008.
-
What's going on?
(News)
-
holidays there was not much acitivty in the SVN but now that both Mark and SVN are back we are fixing the remaining bugs for the RC2.
2. A name for the rebranding has been chosen. The Postnuke Foundation is currently in the process of trademark- and domain registration. The legal stuff seems to take some time. It won't contain a P or a N - so if you plan any new modules you shouldn't call them pnThisAndThat.
3. Speaking of module development:
a) Axel Guckelsberger of the Steering Committee just presented his diploma thesis: Modulestudio will not only revolutionize the way of programming Postnuke modules. It is way ahead of other similar systems. There will be a free version available but this will be a limited version.
Modulestudio, Google Video
b) Jørn Wildt started the work on the content module we discussed some months ago here and at the pnMeeting. This module is simply called "Content" and it uses all the new stuff in .8. The principle behind "Content" is that you first choose the layout of the article you want to write (1 column, 2 colums, whatever you like) and then you place blocks of content inside this layout with a smooth javascript interface. These blocks can contain text, images, videos, Google Maps aso. More blocks can be included as plugins.
http://noc.postnuke.com/projects/content/
c) As Jørn Wildt ceased work on Pagesetter ("I does all I need and it runs with .8") German programmer "Kundi" has picked up this work. He completely rewrites Pagesetter in order to remove Jørn's Guppy form framework and to include .8's Form framework, workflows aso. His first release will do everything that Pagesetter 6.3 does and it will be able to import from Pagesetter. Kundi is currently looking for a nice new module name. Any suggestions?
d) Robert Gasch works on a shopping module which won't be GPL - I was able to take a preview and it looks very adult and I think it will be worth it's money.
e) The last time I looked at pnUpper it was kind of a niche module that I never really had any use for. Axel Guckelsberger is currently turning it into a full fletched media library for the central storage of any kind of media to be used in other modules. Thus he renamed it to MediaAttach.
MediaAttach
4. Now that the NOC seems to be kind of stable again we hope to have time to replace it with a less complicated software. We ar
Generated on November 20, 2007.
-
Google Summer of Code 2007: This Year We Want to be Part of the Party!
(News)
-
Program Schedule and Deadline Dates
March 5: Mentoring organizations can begin submitting applications to Google
March 12: Mentoring organization application deadline
March 13: Google program administrators review organization applications
March 14: List of accepted mentoring organizations published on code.google.com; student application period opens
March 23: Student application deadline
Interim Period: Mentoring organizations review and rank student
proposals; where necessary, mentoring organizations may request further
proposal detail from the student applicant
April 2: List of accepted student applications published on code.google.com
Interim Period: Students learn more about/integrate with their project communities
May 28: Students begin coding for their Google Summer of Code projects;
Google begins issuing initial student payments
Interim Period: Mentors give students a helping hand and guidance on
their projects
July 9: Students upload code to the Google Summer of Code project
repository; mentors begin mid-term evaluations
July 16: Mid-term evaluation deadline; Google begins issuing mid-term
student payments
August 20: Students upload code to the Google Summer of Code project
repository; mentors begin final evaluations; students begin final program
evaluations
August 31: Final evaluation deadline; Google begins issuing student and
mentoring organization payments
This schedule is subject to change and taken directly from Google. For the latest schedule please see Google SOC 2007 Wiki
PN Project Goals
The general goals of Google are recognized and extended with our own goals. In short, we want to improve the innovation within the project by offering students the opportunity to propose PostNuke related topics. We aim to offer students an inspiring environment to do research, access to field experts, the ability to create proof-of-concepts and the opportunity to create working functional tools that can be used with PostNuke.
There is a limited list of program goals defined below. Please keep in mind this is an initial list of subjects we would like to shoot for and the final projects are open for discussion. It's important to understand we need guidelines for project proposal evaluation otherwise we'll end up with all nice initiatives, but no choice between the individual project.
The following are a few examples of the types of projects we'd like to see during the SOC 2007.
Here are a few suggested project examples:
Version management of content. Add features to PN, either via hooks or extensions to DBUtil, to allow control of versions of content items. Additionally add workflow processes via the existing workflow module
Translation management. Currently a translation of a content item is an entirely different and un-related item. A project to introduce a method of translating content while keeping the the relationship to the original item (and hence related content e.g. comments, ratings etc.).
Loudblog rewrite based on PostNuke's API
A second project could be the implementation of a better language system + the import of the old system.
OpenID Implementation
Universally implemented content versioning such that it's possible to revert back to old versions of specific content items. DBUtil contains a feature called object-logging which basically gives you the ability to log all changes to objects as they are altered (and even revert back to old versions of an obejct), but a proper GUI with some nice administrative features would be nice.
Integration of the categories system with the nested-set algorithm. The current implementation is path-based which works and carries with it some proper semantic information, but for performance reasons integrating the nested-set algorithm would probably be a good idea.
Implementation of additional features to the category system on the GUI side. This could be advanced AJAX controls, a better user-side editing system, etc.
Integration with Lucene and other search engines ideally through a generic search-engine interface which can then be extended to other backend systems.
A proper universal web services interface for PN.
A proper test suite including a performance testing framework.
A proper data import/export system with the ability to generate multiple data formats (CSV, XML, etc.) including a proper control GUI.
Project Organization
There will be two program guides (admins) that will provide all mentors and students with help and guidance throughout the project. The structure will be flat so there won't be a lot of red tape in the process. The mentors are expected to work closely with each student to accomplish each project's goal and objectives.
For each accepted project into the SOC program there will at least one mentor and one student. Along with the one-to-one support the student will have access to the developers list so they have access to the entire team to bounce ideas off of in the process.
Overview of Mentor Selection Process
The general "criteria" for mentors are:
Mentor is familiar with the PostNuke project and API.
Mentor is expected to work well with others.
Mentor should have knowledge about the topic he/she is going to mentor.
The mentor is responsible for working directly with the student.
Note, before volunteering you should be aware there is a time commitment. We estimate it will take at the minimum 3 to 5 hours per week of your time over a 3 month period. Mentors should also expect to encounter cultural and time zone differences making this a challenging experience on many different levels especially since this will be a virtual mentor/student experience.
Expectations
Commitment to the goals/objectives of your project, your time, mutual respect, and open communication.
Remember when you were a student -- you were there to learn. This is the same thing -- students are here to learn and may not be experienced in working on a team, and will less likely have experience working with someone virtually so as a mentor you're expected to introduce the student to the protocals of this environment.
Students, remember, no question is stupid, don't expect to know everything, and if in doubt ask! Communication is key in a virtual environment and never take anything for granted especially in text based communication since things can often be mis-read or interpreted.
If you are chosen a mentor then what do you get? You get to contribute to a great project, experience working on a virtual team with an international team of great/inspiring people.
Team/Mentor/Student Communications
This is most likely the most important part of the process -- communication is key especially in a virtual environment. And communicating/sharing will be important to the success of each project. So students are expected to put together a weekly report -- it doesn't have to be anything fancy -- just an email updating your mentor about your progress and any problems you working on or having. Mentors are expected to take the lead in solving any problems that might arise with timing, language or cultural barriers. Note, the default language for the program is English so all mentors and students are expected to be able to communicate clearly and effectively in English. When disagreements or conflicts arise within a project team members are encouraged to resolve disputes amongst themselves. If they can't resolve it between themselves then you can ask a program mgr to get involved to mediate the dispute.
Project Tools & Support
You will have access to the following software tools:
The PostNuke NOC (Network Operating Center) where all project related
resources will be housed
Google Project Page (including wiki)
Mentor Application from Google
Developers Mailing List
Student Info
Google provides some time to allow the student to familiarize themselves with the project and tasks. During this time the mentor can prepare the stucture and any documents that will help the student in the goals and objectives of the project.
Some examples include:
Action/Tasks planning so the student will have a clear idea of milstones
for the project.
Provide the student with your communication expectations - i.e., how can
the student communicate with you, skype, instant messenger, email etc.
Review time committments and goals/objectives for the project.
Model good behavior -- take the lead when you see the student needs the
extra encouragement and guidance.
Generated on March 7, 2007.
-
Moving on: Better PostNuke ShortURLs
(News)
-
PostNuke sites well, while making the URLs hard to post to people in email or in forums. For instance, a news link looks like this:
/index.php?name=News&file=article&sid=123&mode=thread&order=0&thold=0
For some time now, PostNuke users have cried out for better Search-Engine Friendly URLs, and for the past few years, the only thing available has been a theme hack first detailed by Karateka (possibly E. Soysal before that, the links in the article are dead) way back in 2002, since worked on by ColdRolledSteel (Craig Saunders), and consequently me.
The advent of the ShortURL hack has seen sites hosted on Apache servers with the URL Rewriting module (mod_rewrite) enabled get URLs like
/Article123.html
for the above link, where certain assumptions have been made about the default settings for mode, thread and threshhold. A big improvement, but not very descriptive, and it comes at the cost of heavy post-processing of the site's content for links. Also, Search Engines use link keyword relevance in their rankings, and Article123 doesn't say much about the link, except that it's an article with the id 123.
As Karateka pointed out at the time in his article, a problem in implementing friendlier URLs with virtual directories is that all paths in PostNuke are relative, ie relative to the site root folder where index.php is located, and fixing it then would have required extensive changes in the core. That is, a URL like /Example/view.html would result in the browser looking for all links relative to its present location, ie in the nonexistant subfolder called Example, and subsequently it would fail to find the linked stylesheets, images etc, and all links from the page would similarly fail.
Unfortunately this situation has not changed in the intervening years, but as PostNuke modules are becoming API-compliant, they reference the same system function to build their URLs, so fixing this function and other associated functions to use root-relative links(1) will fix all compliant module URLs. But that leaves all other links, like images, Javascript, and stylesheets. The move to templating with Xanthia (for themes) and pnRender (for modules) is also making it easier, since Xanthia templates use a Xanthia variable to reference the theme's image directory path. So fixing Xanthia and pnRender will fix most paths in Xanthia themes. The exception are stylesheet and Javascript link paths and any links in the theme header, for which new path variables need to be introduced, so some updating of Xanthia themes is required. This makes the transition period to PN 0.8 an ideal time to introduced these changes, since few Xanthia themes have been released so far, and core modules are only just being converted to pnRender.
I stopped work on ShortURLs some time ago (before pn0.75) on the advice that a core module was being developed; however I have seen no evidence of this to date, and there is no indication in the upcoming PN 0.76 or CVS that there is anything coming. I got curious a month or so ago, and was somewhat dismayed at what I found.
Since then no progress seems to have been made on PostNuke ShortURLs. In fact, the current Xanthia filter hack has regressed, becoming bloated with complex and wholly unnecessary Regular Expression rules, many badly written with duplication and a number of bugs, especially in the accompanying htaccess file, going from the 15 rules proposed by Karateka to a massive 89. So, I set out to try and fix it, but ended up revisiting the idea of a core implementation using virtual directories to more logically structure the URLs in a way that is not only Search-Engine Friendly, but more User-Friendly.
Along the way, I've also been sidetracked and made a direly-needed new themable tab system for the Administration area based on AlistApart.com's Sliding Doors technique and consequently overhauled most of the Admin templates and a few User templates too, partly out of necessity due to the new Adminpanel, partly because they badly needed it. Those of you who have tried the pn0.76 Release Candidates would know that the templated output in them leaves something to be desired, drab and somewhat unprofessional-looking due to all the styling and CSS-classes having been ripped out, leaving a basic grey and white look with overly large headings and no theme tables for backgrounds. Hardly what you would call of Release Candidate quality. So pnRender and its plugins have been fixed to allow the use of Xanthia-like theme-colour tags as well as a tag for root-relative paths needed for ShortURLs, and the opentable functions have been fixed so that proper themed borders can be used. In fact most of the changes are in fixed templates, plugins, and module files.
My proposed implementation still retain the Xanthia filter for backwards compatibility with older themes, modules and blocks, but has been wholly rewritten and pared down to 24 rules, including a rule to fix all links to be root-relative. As PostNuke is in transition to be fully pnAPI-compliant by PostNuke 0.8, the remaining ones can gradually be removed altogether as themes, modules and blocks are updated. There's also a version for AutoTheme.
This particular scheme is experimental and may be tweaked or improved upon. It seeks to reduce the reliance on the Regular Expression(2) post-processing for links and introduce more user-friendly URLs that have more relevance for people and search engines alike by using virtual directories to visually distinguish sections of the site by module and function, such as
/Example/View.html
and for the News articles introduce Category, Topic, and Title information in the link:
/Category/Topic/ArticleXXX-title-of-story.html
For instance for a news story in the category Computers and the topic Postnuke called "PostNuke Shorturls", you'd have the URL
/Computers/Postnuke/Article123-PostNuke-Shorturls.html
This is a clear, concise and informative link that tells the user and search engine alike something about the link before going there, while retaining backwards compatibility with links of the old ShortURL scheme. It more closely emulates the way we think and organise information, using the folder analogy where we have a clearly-labelled Computer category folder, under which we have the various sub-categories - Topics - with various articles. In this case, we're using a virtual file anchored by the word "Article", clearly identifying it as such, followed by the article number and title. There is backwards compatibility, so that older links for Article123.html will still work.
In this instance I've excluded the News keyword altogether for brevity in favour of the Category and Topic keywords which insinuate News anyway, though there is nothing against being consistent with all the other ShortURLs and having the Module appear first, as in
/News/Computers/Postnuke/Article123:-PostNuke-Shorturls.html
This is for the special case of the core News module though, a more generic method is needed overall for URLs with various unknown parameters passed in the query string. This implementation uses the scheme:
/Module/Function-Param1:Value1-Param2:Value2... -ParamN:ValueN.(p)htm(l)
where the Query string parameters are tagged onto the virtual filename grouped by colons and separated by hyphens, the idea being to use commonly-used characters we might normally use in a list to make it look as natural and readable as possible. It may be a less-commonly used character than the hyphen is needed, like the tilde ~ character, since some parameter values may use a hyphen, in particular usernames. This is not a problem if passed as the last parameter, where it may contain any character. So if the module developer kept this in mind, it might not be an issue. I'm not aware of it being one so far. The PostCalender ShortURL plugin deliberately places uname, if present, last.
The extension is not necessary, but used for convenience. The 3 types used are either one of html, htm, or phtml, the latter useful to distinguish when you want to link to real HTML files on the site. The extensions as well as the option to use ShortURLs or not is set in the Settings panel, though I've only offered the option of html and phtml, since frankly the MS DOS-holdover extension htm annoys me.
Older URLs are marked with a + before the Function name, as in
/PNphpBB2/+profile-mode:editprofile.html
so that the server can translate it correctly. If the directory doesn't actually exist, entering
/Example/
will redirect to the Example module main page (Apache only)
/Example/main.phtml
which in return gets rewritten invisibly to
/index.php?module=Example&func=main
Otherwise, if it does exist, the index file of the relevant directory will be opened.
Similarly, with
/HTML/filename.html
if the file exists, it will be opened, else PN will look for
/index.php?module=HTML&func=filename
It is still possible to tag on query strings like
/ModName/main.phtml?theme=seabreeze
or
/ModName/main-theme:seabreeze.phtml
will both be translated to
/index.php?module=ModName&func=main&theme=seabreeze
There are any number of possible ShortURL systems, the simplest being to simply chop the URL into virtual directories, like /News/123/ from the above News example as some do. Xaraya uses a variant of this for news, though it doesn't use mod_rewrite, so appears like
/index.php/news/123
Again, this is concise, but contains few meaningful keywords other than the module name News. You can combine the two methods for News and have
/News/Category/Topic/123/title-of-article
which works very well, but loses some of the elegance of the above philosophy, since the latter part breaks up the virtual file into 3 with no anchor words, which is not how we organise information.
For generic URLs, there are a number of methods; for instance Mambo, another CMS, use generic ShortURLs like
/component/option,com_newsfeeds/catid,5/Itemid,7/
for a News URL like
/index.php?option=com_newsfeeds&catid=5&Itemid=7
where the querystring values are grouped by commas and separated by forward slashes (virtual directories). It is a ShortURL, though in this case not shorter, and doesn't have any useful keywords, other than "newsfeed", and is not very human-readable. For a generic URL, this is somewhat unavoidable, but can be better than that.
This implementation also contain a way to customise ShortURLs on a per-module basis through a file called shorturls.php placed in the module folder (see the Example module), such as the News URLs, or 3rd party modules like PostCalendar, which instead of the full URL like
/index.php?module=PostCalendar&func=view&tplview=&viewtype=day&Date=20050405&pc_username=&pc_category=&pc_topic=&print=
with the above generic ShortURLs would be rendered as
/PostCalendar/view-viewtype:day-Date:20050405.html
but with customised URLs become
/Calendar/05-04-2005/day.html
The beauty is, though, once we've created the groundwork in the core of PostNuke, any implementation will be fairly easy.
1) Root-relative links: Links relative to the server site root (eg /nuke/filename.html), which stays static, as opposed to relative to the present file (eg filename.html).
2) Regular Expression (RegEx): A complex pattern-matching language that can look a bit like a mathematical formula, used in the Xanthia ShortURL filter at /modules/Xanthia/plugins/outputfilter.shorturls.php.
----------------------------------------------------------------
If this were Mambo, I'd charge you 80 Euros for all this (the price for SEF Advance), but because you're all such nice people (except that guy up the back, you know who you are :) ), I'll let you have it for free.
A PDF of the ReadMe included in the package, but with additional screenshots, is found here (570kb).
I've also written a more technical ReadMe on installing ShortURLs, included in the package under the docs folder, and also found here.
here's a test of the tab system using the Aqua theme. It also comes with an XP-styled theme and the default-CSS-based one. I hope you like it, because it took a lot of work to perfect.
OK, screenshots: Well, no point having screenshots of URLs, so here's some of the tab system and modified SeaBreeze and PostNukeBlue themes' Admin templates instead:
1. The main adminpanel in PostNukeBlue with the Aqua-themed tabs, hovering over the Settings panel.
2. Same as above, but with the Theme Override set under Modify Config and with a tabs.css stylesheets in the theme's style folder. The rounded corners are only visible in Mozilla/FireFox.
3. The Luna tab theme in SeaBreeze, hovering over the 3rd Party tab.
4. The Xanthia Admin tabs using Aqua tabs in PostNukeBlue, hovering on Theme Settings.
And finally, the downloads:
I started out fixing PN0.75, so there are 2 downloads: One for PN0.75, and one for PN0.76rc4. I'll update it once the PN0.76 final is released.
Please backup your site before installing these patches, since a lot of system files are replaced. The PostNuke 0.76rc4 ShortURL package is rather large, consisting of some 400 files in a 1Mb zip file. The PN0.75 package has some 170 files and is around 800kb. Most of the changes are drop-in changes that doesn't necessitate updating of modules, but there are some exceptions in the PN0.76 package, in particular the Settings and Polls modules, where you need to first go to the Module list, regenerate, and update. Specific patches for popular 3rd party templated modules like AutoTheme and PNphpBB2 are included, but only a limited number of 3rd party modules have been tested with this package. No changes are made to the database, but it is still a good idea to back that up as well. You have been warned.
PostNuke 0.75 ShortURL package (833kb)
PostNuke 0.76rc4 ShortURL package (1Mb)
Two of the updated core themes:
PostNukeBlue (249kb)
SeaBreeze (120kb)
Feel free to discuss this proposal in the forums.
Enjoy!
Martin Andersen 8/7/200
Generated on July 9, 2005.
-
Not quite a Roadmap
(News)
-
50%. He emphasized the advantages of this real templating system of non-templating systems like the old theme enginge or Autotheme.
After some turkish fast food Larsneo (Germany) told about the advantages of accessibility within Postnuke core. All avertable barriers will be removed from the core. The rest will lie in the hands of the administrator. This will not only make Postnuke sites accessible for handicapped users but also better to evaluate for search engines.
His second topic was the dangers of cross site scripting and other security issues. He pointed out his latest advances in fighting these problems. In the following discussing the team came up with a number of ideas that might prevent some of the mistakes of the past.
The second Day
The second day was the day of the module developers and far too short. Jørn Lind-Nielsen (Denmark) introduced us to his latest coup: workflows in Pagesetter 5.0.0. The state-based system uses XML and php-plugins for the design of specific workflows. Everybody was really impressed by his advances.
A new quality of commercial module development was presented by Frank Schummertz (Germany): He and his collegues from pnCommerce are currently working on a complex confugurator module that enables their customer to offer a shopping system for air conditioning system. The user enters all the requirements he has and the module calculates a specific offer.
The Remains of the Day
All in all it was a very interesting weekend with a bunch of really nice people. I think by getting to know eachother personally the relations within the team improve and we established some quite important connections among the module developers. As far as I understood Jørn, he's going to cooperate with Xexpress' Brave Cobra (Belgium) who not only entertained us with the story of his journey that almost ended in Paris and not in Stuttgart, because he used the right highway in the wrong direction. He also turned out to be a skilled singer and guitarplayer as he played some songs in the Biergarten as the other relaxed from the day.
Not quite a Roadmap
One of the important results of the meeting was the evaluation of the state of the .8-development – what is done, what is missing and what needs to be done:
Postnuke .8 will not contain any more features that .7x in regard to kinky stuff like more colorful links or coffee machine drivers. It will be a total redesign of the Postnuke core that gets rid of all the legacy stuff from phpNuke and form Postnuke into a professional framework that offers Interfaces for module developers.
So the main features will be the abstraction of API, Permissions, ADODB aso from the modules. An admin will be able to install the pure core with e.g. Pagesetter only and it will work. This will be a slim, performative core and it is already pretty advanced. But it needs to be completed and properly tested.
The next step will be milestone releases for module developers to test their modules with the new core. These milestones will work and can be uses as example but there will be no upgrade mechanisms for existing sites and no garantee that it will be 100% compatible to the final release. As a result the milestones can't be used in live sites.
Another thing that needs to be done is a total rewrite of all the old modules. They need to be API compliant and templated. The estimated 6 month did not suffice as the work turned out to be more complicated than imagined.
The last problem to be solved is the upgrading process, as for example the data from the Weblinks module will have to be distributed to the new Weblinksmodule, the ratings hook and EZComments.
All this efford will make the system more secure, performative and flexible but it's still some road ahead.
BTW: We are already planning a second meeting next year near Hamburg
Generated on August 10, 2004.
-
PHP Nuke rewrite + Close Source Code
(News)
-
You could be able to add new php files with your own functions and there will be a manual for all needed variables to do this.
3) Modules, blocks and themes developer will not have any problem at all. All of you, developers, can write your own modules/blocks/themes for it in a similar, but powerful, method as it's now.
4) There will be a Corporative version, with costs money for one site license basis. This version will differ from the free version in the fact that you'll not have the copyright/credits text at the bottom, no "PHP-Nuke" word on the whole code. Not a single reference to it, your customers/visitors will never know what code you're using, and with this corporative version you can develop and sell "commercialy signed" modules. This means that your encoded module will work only with the corp. version, and this last feature will open many doors to commercialy exploit your programmer skills, unfortunately you should have a Zend Encoder license for this.
5) Rewriting the code will give the chance to have a totaly new, secured and stable code and will open doors to have PHP-Nuke running in corporative environments.
6) The incomes will be used for more and more future versions full of new an cool features... better than ever.
7) The distribution method will remain the same: Alphas, Betas and RCs exclusive for Club members and the final version distributed 15 days before it goes public for free.
8) No forks
9) Since the encoded code needs to use Zend Optimizer, the code will run faster.
Of course, not all is pink... there are some contras:
1) Forget the bugs with fixes submissions in news and forums, just bugs reports (with my promise that I'll address all of them)
2) No core modifications allowed (but a highly customizable system instead)
3) The required use of Zend Optimizer (anyway it's free)
I think that this is 9 vs 3... I want that now, knowing this, all of you think about it, evaluate the pros and contras, and give me an objetive feedback.
For me, this step, can represent a unique opportunity to mature this project and pass it to the next level. Always giving it for free, have this in mind. And for one second try to put yourself into my shoes.
Have a nice day and be happy... "
The original article can be read HERE
Generated on March 26, 2003.
-
Postnuke caching idea
(News)
-
9/11 where among others cnn.dk (which is one of the sites for which the caching was designed) went down due to insane load spikes.
As Karateka correctly states, outputting pure html can increase the performance up to 3000%. especially because you can then use i.e. a kernel web server to speed up things even more (zero-copying etc.).
Shortly put, the method worked like this:
The webserver served all pages (except pages that had to be dynamic (like welcome ) as a static page (ie. rewrite url -> static url). Then a backend system watched the Database for changes, and updated the relevant static pages, whenever a change occured that infected a given page.
This removed the normal "caching-delay" of caching systems, as every page was updated immediately, once the database change had occured (we used triggers, as it was Oracle).
This also meant that we had to find a way to allow for blocks, like "latest news" to function, without having to change every page on the system, because that block had to be updated (this was found to be best done (by the html-designers), by using Iframes - and putting that blocks in a seperate static file and letting the browser "compile" the page).
This approach, meant that the system could easily disable all none-static requests (or just give them low priority) if the load was high - keeping the rest of the site online.
A system like that, would be very cool for Postnuke, and the cool thing was that we didn't have to optimize our site-generating code - as we just inserted this caching system in front.
What do you think? would this be a good idea for Postnuke? if(!) it could be made to work with postnuke, it could be very cool.
--
Regards,
Klavs Klavsen - kl at vsen.dk - http://www.vsen.dk
Working with Unix is like wrestling a worthy opponent.
Working with windows is like attacking a small whining child who is carrying a .38.
Generated on January 27, 2003.
-
The Road Ahead (with apologies to Rand McNally)
(News)
-
before the mass Exodus that followed, I saw the project very much as in a similar vein as the Apache or Linux development trees.
There is a stable tree, and there is a development tree. In our cases, the stable tree was the 0.72x branch, while the development branch was the more cutting edge 0.8x development. As many of you that had been struggling with the 'stable' 0.72x branch knew, its stability left much to be desired, as most of the development concentrated on 0.8, leaving, IMO, 0.72x falling a bit by the wayside.
I strongly believe, as I have explained in one of my earliest articles, that 0.,8 development can and should continue, yet that 0.72 development should receive a renewed emphasis - in effect making the two separate development projects under the same umbrella.
That way, one development team can concentrate on making the 0.72x branch as stable and reliable as possible, while the 0.8 team would work on the 'future'. Since it would be necessary for the two teams to share knowledge and resources, the best of either branch would benefit the other as well.
Just because the former development team has opted to abandon the project, I do not believe that this vision needs to change - it just means that 0.72 and 0.8 will be developed and finished by new developers, and fresh blood has certainly never hurt a gene pool
Some of you may ask, why 'waste' time on 0.72, when 0.8 is 'around the corner'? Well, I've said it before, and I will say it again - regardless of much of the hype, and release promises, a functional (production capable) 0.8 was not even close, at best, 6 months out. While you can certainly download 0.8 from CVS, and play around with it, PostNuke is *not* just what the CVS contains, but it is also the ability to expand via the use of third-party modules, creative themes, etc... Since 0.8 would have deliberately broken compatibility with legacy themes and legacy modules, one would also have had to count the time it would have taken developers to port their modules, themes, etc.. over. Repeatedly having to fix and rewrite modules for each new release certainly grew taxing on developers, and the deliberate breaking of compatibility in the 0.72 tree because of the case issues certainly did not help either.
In summary, in order to give 0.8 needed time to mature, and develop, a rock-solid, stable release branch was needed that users and admins can utilize *right now* - I see 0.72x as that branch.
Seeing as how 0.8 is currently on hiatus, and waiting for a fresh flock of developers, I decided that the community is best served by us concentrating on making 0.72 as good as it can be.
What does that mean:
- Concentrating on, and little by little, eliminating and fixing all residual bugs and inconveniences left.
- Enhancing and expanding existing systems.
- Introducing short URLs (something PN desperately needs), yet while maintaining backwards compatibility so as to not break existing internal and external links.
- A theme system overhaul, to introduce either theme creation, and breaking the three column paradigm (which, incidentally, Neo has already done what was termed impossible within the existing PN Theme structure). More on that later and separately.
- Maintaining longer compatibiity for module developers, and introducing a path to the new API that is easier.
- Legacy support for themes, yet introduction of new technologies.
- Agressive alliances with existing web-technologies to enhance and improve performance and features.
- Innovation, innovation, innovation....
Some of these will start to be introduced with the 0.721 release, and others will follow in subsequent releases. Each release is intended to stress ONE new feature, and further streamlining of existing structures.
Therefore, in summary, the goal and objective is to provide you, the PostNuke administrator and user with a system and infrastructure that will allow you to get the best out of your site, while at the same time allowing you to extend and retain your investment in your site - don't have the time to update your theme, use the old one, until you do, etc...
I'm sure I have missed some issues, and might have misunderstood others - let me know, discuss this, and we'll revisit this issue. As I said, your well-being and your sites and applications are my concern, and it is with that in mind, that I have made these decisions - and in closing, I'd like to leave you with another Robert Frost quote:
"The best way out is always through."
Generated on August 27, 2002.
-
Postnuke Theme Contest Sponsoring
(News)
-
EZOSHosting.com stands for easy open source hosting. Our goal is to make hosting for open source applications as easy and cheap as possible.
We started out with PostNuke and low monthly pricing.
When you order your webspace, you may choose from many different modules and hundreds of themes. Of course, you may preview the themes before you select them.
All accounts are activated instantly upon your first payment.
Be assured that you get high quality hosting and professional support from us.
EZOSHosting.com is a project from the PostNuke dev Karateka, the folks of Mediatech and some PostNuke module devlopers. Many of you might know me from the irc live support or from my former activities as server admin, support guy and programmer for hostnuke.
The EZOSHosting design was provided by the graphic gurus of Mediatech, who will provide the community with some nice themes in the future - that is, if you like the EZOSHosting theme and leave some comments to motivate the designers. ;)
Mediatech designers will not participate in the contest though. :)
We have mod_rewrite enabled (see also my article on search engine friendly URLs), so that our customers may use mod_rewrite techniques to have nice URLs that GoogleBot et al. may have fun with.
EZOSHosting.com will help us to keep playing an active role in PostNuke development , support and theme creation - you will
Generated on August 8, 2002.