Knowledge Sharing - Want to participate in the discussion?
1 Apr
Drupal, Joomla and Wordpress are very popular and powerful content management systems. They are all written in PHP, support the MySQL DBMS and are built on a modular architecture that allows for extending them with additional functionality.
There are hundreds of free add-ons (modules, components, plugins) available for each of these three systems. Some of them are especially useful when it comes to optimizing your website for search engines.
Below you find a selection of such SEO related add-ons for Drupal, Joomla and Wordpress listed in alphabetical order, including tools for search engine friendly URLs, meta tag generation, social bookmarking services, performance tuning, user tracking and statistical analysis. Add-ons related to search engine friendly URLs usually require mod_rewrite to be enabled on your Apache web server.
Have fun playing around with these tools and bear in mind that none of them is a replacement for the most powerful SEO technique, which is creating valuable content.
If you know other free SEO related add-ons for Drupal, Joomla and Wordpress that should be mentioned here simply post links to them in your comments. I’d like to read about your experiences using these add-ons.
Tags: Add-ons, CMS, Drupal, Free, Joomla, Module, Open Source, Plugins, SEO, SEO, WordPress30 Mar
I recently asked in some forums on migrating (back) to Joomla/Mambo.
After searching I didn’t get the answer I needed, so I went about finding my own way.
This method should work for any CMS, for example WordPress, etc.
As I am not a programmer, this method works for me. If I knew PHP, I would probably code some export and import scripts.
Anyhow, here is a rough guide…
You should get a copy of a LAMP app for your local machine. I use MAMP on the Mac. Xampp is good for Windows. I won’t explain how to set up a LAMP system on your machine, please Google/read docs.
Next, install Joomla / Mambo on your LAMP install. Make sure all is working. For me, I deleted the sample content that the install process provides.
Next step I did was to create a tree-structure of my site. So create your sections and category in Joomla / Mambo (I’ll call this JaM from here on) Don’t know how to do this? Please read docs.
Once you have the structure of your local site matching the structure of your current (remote) site, go to the section manager and make a note of the ID for every section. Do the same for the categories you made. This is important!
On your server (where your web site is), export your database from whatever CMS you use. Use PhpMyAdmin to do this. If your remote server doesn’t have this app, ask your system admin. If no good, another route would be to export the database within the CMS (not all of them have this function), then install your CMS on your local machine. Then use Mamp/Xamp to export using PhpMyAdmin (PMA)
When you export, it is key to export as CSV (or to Excel, if that works for you)
What to export? For me, I was only interested in exporting my posts. This how-to won’t explain how to migrate your users, or comments, or plug-ins, etc. Google/search for that. To me, the most vital thing is CONTENT, which means posts!
In the case of WordPress, I exported the table called “wp_posts”.
After I exported I had a file called, “wp_posts.csv” I used Open Office (Excel) to open the file. What you should have is a post on each row. If you don’t, then something is wrong!
Ok, again, for wp_posts, the first column should be ID, next post_author, post_date, etc etc. See them all? Good.
Now return to your locally installed copy of JaM. Use PMA to look at the content table, in Joomla it is called “jos_content”. So what we need to do is move the content from “wp_posts” to “jos_content”. A PHP programmer would write a script to do this. For me, I used Open Office. Now, since every CMS / Blog is different the structure of the table that holds posts/content will differ. I am talking about “wp_posts” to “jos_content” in this case. Some fields you will be able to match up. And some fields you won’t, so you’ll need to insert your own data. Also, the order of the fields are different! ID is the first field in both cases. But after that, they really differ.
For WP, the next field is called post_author. This field matches the Joomla field “created_by” (jos_content table). You understand this point? Look at both tables and match the fields!
All-right… What you need to do is copy and past your columns from the wp_post so that it matches up with the order of the tables jos_content.
As I mentioned, wp_post won’t contain all the fields that jos_content will. Leave a blank column for those fields. Once you are done, you should have your data arranged so that there are 30 columns (for Joomla 1.x). One gotcha is the date fields. By browsing the table wp_posts, you will see that the format of date, is different from the format that JaM uses. Use Open Office to convert the date columns. If you don’t know how to do this, please Google. (Note: OO / Excel might have the dates appear to be as you like, but the actual content in the field might still be the same, you need to actually change the date into TEXT perhaps to get it to be truly correct).
For the columns that are blank, we need to insert something inside. Please study (search docs) what all those JaM fields are in jos_content. For example, hits, urls, mask, etc. Then insert values based on what makes sense.
Now, your old CMS / Blog had various sections or categories. For example, in WordPress, you notice that your reviews section has an ID of “6″. Please note the IDs of all your current sections, categories.
You already have a note on what your local installed copy of JaM is using for the sections & categories. Back in OO, do find and replace or manually insert into the fields of the “sectionid” and “catid” the corresponding values from your remote CMS (ie WordPress).
Let me explain using my setup:
WordPress Categories (doesn’t use sections)
1 = news
2 = postmortems
3 = interviews
4 = articles
6 = reviews
In my local copy of Joomla, I made the sections:
1 = News
2 = Articles
And categories…
7=postmortems, section 2
8=interviews, section 2
9=articles, section 2
10=reviews, section 2
11=news, section 1
So looking at the IDs for WordPress, I assigned my content new values for the section ID and category ID for my Joomla install. Hope this is clear.
It took me some time to get this step right. The first couple times, I thought it worked, but all my postmortems were assigned to section 3, which I didn’t have and so they didn’t show up in the admin section of Joomla. You really need to get this step right!
We are almost finished.
Create a new column A.
Add the text: INSERT INTO `jos_content` VALUES (
Note the ` symbols.
So column A should now be:
INSERT INTO `jos_content` VALUES (
Column B should be the ID
Column C should be title
Column D should be the alias
and so on…
Now, look at the column that holds your posts. If you have single quote marks, you need to do a find and replace and change them to two single quotes.
ie
change ‘ to ”
(Not a double quote!). If you don’t do this, you’ll have trouble for sure!
Next go to the very last column. In the next column (after metadata?), insert:
);
in my WordPress blog, I had several authors. I noted all of their IDs. I then created these users in my local Joomla install. I made a note of their IDs. Then back in OO, I did find and replace so that John Smith’s WordPress ID would match his Joomla’s user ID. Easy!
Next step is to export your spreadsheet. Use the option to save in CSV and to place all fields in single quotes and use commas to separate the fields. Vital!!!
You will end up with a text file. Open it and take a look. Each row in your spreadsheet should have created a MySQL INSERT command. It will look something like…
INSERT INTO `jos_content` VALUES (527, ‘the title of this post’, ”, ‘Here is all the text from this post’, 1, 1, 1, 1, ‘2006-12-04 09:36:50′, 62, ‘this is the guy who really wrote it’, ‘2007-05-19 00:00:00′, 62, 0, ‘0000-00-00 00:00:00′, ‘2006-12-04 09:36:50′, ‘0000-00-00 00:00:00′, ”, ”, ”, 1, 1, 110, ‘keyword, keyword, keyword, keyword’, ”, 0, 0);
The result are not perfect yet. You will need to do some find and replaces to clean things up. For example, using my instructions, your INSERT command will look like:
‘INSERT INTO `jos_content` VALUES (’,'527…….. etc etc
Since column A had INSERT INTO `jos_content` VALUES (, it placed single quotes around it. Please remove them:
INSERT INTO `jos_content` VALUES (
After that, there is a comma, remove it too.
So you want the ID to come right after the left (
Like: INSERT INTO `jos_content` VALUES (527, and so on…
Get it? Now, go to PMA in Mamp / Xamp and select the jos_content table. Pick import. (Read docs on how to use PMA!). Select as the import file the csv file you exported from OO.
If all goes well, it will INSERT all your posts into jos_content. Most likely you’ll get an error! he he. When importing, you need to have exactly the same number of fields, and the same field types as jos_content!! This took me some time to get right, as I often missed a field that jos_content had, or I didn’t have my fields in the right order, or my commas were screwed up, or my dates were screwed up. It was a lot of trial and error. If the importing goes wrong, DROP the table, re-create jos_content or delete anything that might have imported and start over. Again, you’ll need to massage your spreadsheets data, and the exported text file with the INSERT commands a few times. BUT, it WILL work if you do it correctly and study the exported csv file for errors.
As a test, export just two rows from OO into a text file. Then import it into PMA.
I now have my 1,000s of posts from WordPress in Joomla! Works perfectly! Having my data as a csv in OO also allowed me to do a mass spell check, change other things, like em-dashes, etc etc.
So until the day when you learn PHP, or JaM devs have various conversion scripts, anyone should be able to move posts into JaM with my method. The same should work for the user tables actually. I used WordPress as an example, but if you study your current blog’s content table structure, it should all make sense. Most content tables will have ID field first. Then you have to find what one blog calls the author with the other blog’s author field, the title, the posted date, etc etc.
Tags: CMS, Joomla, Joomla, process, WordPress28 Mar
Joomla Content Management System was forked off Mambo CMS after most of the core Mambo developers disagreed with Mambo Management. The current stable release is 1.0.10. I migrated from Mambo to Joomla to deter hacking efforts on my site.
Note: I could have as well migrated to the latest version of Mambo but I just felt like going Joomla way.
Here are required the steps, simplified and in brief, targeted for command-line users.
Pre-requirement: If you are not on 4.5.2.x versions of Mambo then you need to first upgrade to Mambo 4.5.2.x version.
1. Backup you MySQL database.
For example if your MySQL database is named tango then the command below will create your backup named tango.sql.gz
mysqldump —-opt tango | gzip -9 > tango.sql.gz
2. Extract latest stable version of Joomla to any directory under htdocs. We will assume the name of the directory to be test for simplicity and easy reference. In reality it can be named anything. Only requirement is that it should be somewhere under htdocs.
3. Copy your Mambo configuration.php file (under Mambo root directory) to your Joomla site. Change the $mosConfig_absolute_path and $mosConfig_live_site variables to point to Joomla base / root directory.
4. Copy any custom templates, components, modules, mambots and languages to the same relative locations in the new Joomla directory. Do not copy the default ones.
5. Copy installation/sql/migrate_Mambo4523_to_Joomla_100.sql to your base directory.
cp installation/sql/migrate_Mambo4523_to_Joomla_100.sql .
6. Delete Joomla installation directory
Go to Joomla base directory and type the following. It should delete the installation directory (without any warning; you have been warned).
rm -rf installation
7. Load the migrate_Mambo4523_to_Joomla_100.sql script to your MySQL database
For example if your database name is mambo and your user is root (bad practice):
mysql -u root -p mambo < migrate_Mambo4523_to_Joomla_100.sql
You will be prompted for the password, give it.
8. Open globals.php and change define( ‘RG_EMULATION’, 1 ); to define( ‘RG_EMULATION’, 0 );. This hardens your Joomla installation.
9. If you were using nice url then you should also copy .htaccess from your original directory
cp ../original_directory/.htaccess .
10. Test the new site thoroughly.
11. On success, first archive the old site and then replace the old site with the new site. For example if your old site is name alpha and your new site is named beta and both are placed directly under htdocs, then you can use the following:
tar -cjf alpha.tar.bz2 alpha/
rm -rf alpha
mv beta alpha
12. Test every pages thoroughly, if possible. Test polls and form submission.
Note: I followed the excellent how-to article to aid my migration. However I differed (as described above) where appropriate (and simpler) and where there were little mistakes (like there are no globals.php-off) in the guide. I prefer using MySQL commanline over phpmyadmin, so this guide shows the command-line way. Check the article referenced to do it using phpmyadmin.
Note 2: Use at your own risk. No warranty, implied or otherwise is provided.
Tags: CMS, Joomla, Joomla, Module, variables