IDGLabs.COM - tips, tools and resource

Knowledge Sharing - Want to participate in the discussion?

, and 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 (modules, components, ) 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 related for , and listed in alphabetical order, including tools for search engine friendly URLs, meta tag generation, social bookmarking services, performance tuning, user tracking and statistical analysis. 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 technique, which is creating valuable content.

Modules

  1. Block Cache creates cached versions of each block displayed on your website. For each cached block only one SQL query is executed thus reducing server load resulting in better performance and faster delivery of content.
  2. Find URL Alias is a utility that lets you search for particular URL aliases. This requires the core path which enables search engine friendly URLs for your site. Find URL Alias is especially useful when there are many aliases stored in your database. But keep in mind that changing URLs is something you should avoid.
  3. Google Analytics integrates Google’s powerful web statistics tracking system with your website. The enables you to selectively track users by role.
  4. Meta tags allows you to define site wide meta tags and specific tags for each piece of content (node). If you use the core taxonomy (you really should do) meta tags can be assigned automatically by using the terms (tags) you use to categorize your content.
  5. Pathauto automatically generates path aliases based on the modules settings. A very powerful that lets you define different URL patterns based on content types. In the latest version also allows to filter common words. Requires the core path .
  6. RobotsTxt is useful if you run multiple sites from a single code base and want to have different robots.txt files for each of them.
  7. Service links automatically adds links to social bookmarking and blog search services to your content. You can select which services you want to link to, restrict the display based on content (node) types and whether to display links in teaser and/or full page view.
  8. URLify automatically generates the path alias for a piece of content based on its title using JavaScript. Requires the core path . I lightweight alternative to pathauto.
  9. XML Sitemap generates an XML sitemap which complies with the sitemaps.org specification. The relative priority of each piece of content is calculated based on content type, number of comments, and promotion to front page. The values of each of these factors can be set in the admin section of the .

Modules, Components,

  1. Advanced SEF Bot for Joomla 1.1.x is a plugin that enables search engine friendly URLs. Since ’s standard URLs are not really meaningful this one is a must.
  2. Dynamic gSitemap is a PHP script that dynamically creates an XML sitemap of your site when GoogleBot visits it.
  3. JoomSEO is a plugin that dynamically creates meta tags, changes the title tag on the fly, adds heading tags to content titles and more. Some of the configurable features include: show, hide or override keywords, site name, and content title, adjust element order in the title and heading tag selection.
  4. LinX is a link exchange component that lets you manage a reciprocal link directory. Links that are submitted to your site are automatically checked and only added if there is a link back to your site. A large number of links to your website of course has an effect on the PageRank but what really matters are links from quality and trusted websites that have a similar target audience as your site.
  5. MetaTags NX creates meta description and keyword tags for your content on the fly. Keywords are generated based on their frequency in the content and stopwords can be excluded.
  6. Redirect component lets you redirect old urls to new ones and set their status codes. Remember, changing URLs often is a bad idea.
  7. Simple SEO Plugin uses Yahoo to analyze your content and gives immediate feedback on what Yahoo thinks the content is about. Also creates meta tags.
  8. Website Validators Tool contains links to validation and site information services that help you make your website more standards compliant, see how you rank who links to you and more.

  1. Add to Any adds links to a large number of social bookmarking sites to your posts.
  2. GeneralStats is a statistics components that counts the number of users, categories, posts, comments, pages, words in posts, words in comments and words in pages. Useful for doing keyword research.
  3. Google Sitemap Generator creates an XML sitemap of your website. In the current version homepage, posts, static pages, categories and archives are supported. Priority is automatically assigned based on the number of comments.
  4. Gregarious is a social bookmarking plugin for Digg, Reddit and Feedburner with update checks via AJAX.
  5. Popularity Contest is a counter for posts, categories, archive views, comments, trackbacks, etc. to determine the most popular pages of your site.
  6. Technorati Tagging Plugin adds Techorati tags to your posts and enables you to display a tag cloud.
  7. WP-Cache is a page caching system to improve your websites performance. Cached pages are stored as static files, reducing server load thus making your site faster and more responsive.
  8. X-Valid attempts to convert posts and comments to valid XHTML. Read more on the benefits of Web Standards Compliance.

If you know other related for , and that should be mentioned here simply post links to them in your comments. I’d like to read about your experiences using these .

Tags: , , , , , , , , , ,
  • 0 Comments
  • Filed under: SEO
  • Want to migrate to Mambo / Joomla?

     

    I recently asked in some forums on migrating (back) to /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 , for example , 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 / Mambo on your LAMP install. Make sure all is working. For me, I deleted the sample content that the install provides.

    Next step I did was to create a tree-structure of my site. So create your sections and category in / 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 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 (not all of them have this function), then install your 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 , 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 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 / 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 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 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 / Blog had various sections or categories. For example, in , 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 (ie ).

    Let me explain using my setup:
    Categories (doesn’t use sections)
    1 = news
    2 = postmortems
    3 = interviews
    4 = articles
    6 = reviews

    In my local copy of , 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 , I assigned my content new values for the section ID and category ID for my 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 . 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 blog, I had several authors. I noted all of their IDs. I then created these users in my local install. I made a note of their IDs. Then back in OO, I did find and replace so that John Smith’s ID would match his ’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 in ! 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 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: , , , ,
  • 0 Comments
  • Filed under: Joomla
  • Content Management System was forked off Mambo after most of the core Mambo developers disagreed with Mambo Management. The current stable release is 1.0.10. I migrated from Mambo to 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 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 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 site. Change the $mosConfig_absolute_path and $mosConfig_live_site to point to base / root directory.

    4. Copy any custom templates, components, modules, mambots and languages to the same relative locations in the new 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 installation directory
    Go to 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 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: , , , ,
  • 0 Comments
  • Filed under: Joomla
  • Share Your Score

    Advertise