Nothing To Lose

If you don’t have it, how can you lose it!
Subscribe

Archive for the ‘Tutorial’

Getting page and subpage and parent(s) name in title bar with wordpress.

August 20, 2009 By: Dexter Category: Blog, PHP, Tutorial, Web Development, Wordpress

Had been working with wordpress (2.8.1) lately for some web development work. Now there were some section of the site which are sub pages of some parent page again which are sub pages of some category.

lets say you have we have a scenario like this
Products is the main category. Then it has two sub categories say Laptops and Desktops
And Laptops has sub categories 14 inches, 17 inches
Desktops have sub categories Home, Office, Game Station.

When the user browses to a page say Game Station you want to display on the title bar:

Website Name » Products
Website Name » Products » Desktops
Website Name » Products » Desktops » Game Station
or
Website Name » Products » Laptops
etc
I will assume that you already know how to have pages arranged in categories and subcategories in wordpress.

What we need is to do is use few available inbuilt functions of wordpress

1. get_post_ancestors() Read more..

this one get the ancestor of the given page/post id

2. the_ID() Read More..

this get you the current post id

3. get_post() Read More

gets the info of a given post id. Returns an object.

4. the_title()

returns the name of current page.

So here is the code.

Open the header.php (from the selected theme)

and add the following between the <title> and </title>

<title> Website Name: &raquo
<?php
$postsarray = (get_post_ancestors(the_ID()));
krsort($postsarray);
foreach($postsarray as $key=>$postid)
{
$post_ids = get_post($postid);
$title = $post_ids->post_title;
echo “$title &raquo “;
}
the_title();
?>
</title>

This will generate the title with the page and parent categories automatically.

Here is what is happening.

You can directly write you website name i.e hard code it, line

$postsarray = (get_post_ancestors(the_ID()));

get_post_ancestors() returns an indexed array containing the list of all the parent categories. Say if the current page is ‘Game Station’ then my array $postarray will be link (0=>’127′, 1=>’140′). We have used the function the_ID() inside the get_post_ancestors() so that the page id is automatically given accordingly to the current page. Note that the array contains the post id and not the name.

krsort($postsarray);

Since the array is from top category to lower we reverse sort it on the keys.

foreach($postsarray as $postid)
{
$post_ids = get_post($postid);
$title = $post_ids->post_title;
echo “$title &raquo “;
}

The foreach loop picks every post id which we give to a function get_post(), which returns a object. Here the object is in $post_ids. The object contains loads of info about the post, but we are only interested in the title. So $post_ids->post_title; returns the name of the currently created objects. We store this in $tilte;

echo “$title &raquo “;

This line get the categories displayed. Of course parent first.

the_title();

It is used here since the above functionality only returns the ancestors, so to display the name of the current page we use the_title() function.

If you want to display the name of you blog name instead of you website. replace ‘Website Name’ with <?php bloginfo(’name’) ?>
Well that is it for now.

Rubber Stamp Effect Using GIMP

August 13, 2009 By: Dexter Category: GIMP, Tutorial, Web Graphics

It has been a long time since I have posted a GIMP tutorial. So here is one more Which provide a Old rubber stamp effect in some very simple steps. So here we go.

Start with a blank canvas with white background. Write some text which you want to work as your ’stamp’ Use some font which is bold. Also select the text color which will act as your ink color.

Stamp Text

Stamp Text

Add a transparency layer above the text layer. Press Ctrl+L to invoke the layer dialog box, and add a layer using transparency option.
Draw a selection around the text you have just written.

rectangular selection on the transparent layer

rectangular selection on the transparent layer

Goto edit stroke selection — use a line thickness around 5 to 6 px.

stamp text with rectangular boundary

stamp text with rectangular boundary

Working on the same layer use the contiguous selection tool and click the rectangle to select that area only.

Selected outer border

Selected outer border

Goto Filter — noise — pick. In its dialog box increase the randomize to around 25% and repeat to around 40.

outer boundry has be distorted

Now switch to the layer the stamp text (press ctrl+l and then click on the text layer), select the text using contiguous selection (with shift selected) click on all the alphabets of you stamp text. Alternatively you can use select by color tool also.

text selected

repeat the pick filter as above, but decrease the randomize to 10% and repeat to only 20.
merge the layers if required.

finaly Old stamp

finally Old stamp

Rotate the image if required. I have kept a white background, if you want to use this image to be superimposed on other pages etc.. make sure you work on two transparency layers for text and box, and then remove the the white background layer.

Final old stamp.. Stamped

Final old stamp.. Stamped

Adding Vinay’s suggestion here, idea is to show that the stamp was pressed unevenly.
To do that same, take the final image, select Gradient Fill tool, set the options: Opacity to around 50%, Mode to color erase, Gradient Foreground to Transparent, Shape to Linear.
Then just click and drag the effect from one of the corners to other end (diagonally). This will cover the image with some white, giving some side of the ink to be faded. The effect looks like the ink is unevenly placed.

Stamp with uneven ink effect

Stamp with uneven ink effect

Catching email id’s from file(s) using grep and other utils

April 18, 2009 By: Dexter Category: BASH, Linux Commands, Regular Expressions, Shell Scripting, Tutorial

Here is a simple mechanism that you can use to collect all the email id(s) from a file(s) into a single file. To do this we will be using the following command cat , grep, sort and uniq.

This one liner should do the work

cat file | grep -io ‘\<[^-.][0-9A-Za-z\.\-\_]\+@[0-9A-Za-z.]\+\>‘ | sort | uniq

If you want all the id’s in some file then redirect the above command to a file.

cat file | grep -io ‘\<[^-.][0-9A-Za-z\.\-\_]\+@[0-9A-Za-z.]\+\>‘ | sort | uniq > mailid.txt

Now lets convert this into a shell script where we shall accept a directory name from the user. This directory will be the one containing the files having the email ids
You can download the script from here Script to retrieve Email ids form files in a directory
I have noticed the copy paste of the code below is not working because of formatting characters.

#!/bin/bash
clear
echo -n “Enter the name of a DIRECTORY from where you want to pick up email id’s: “;
read dirname;

# check if the entered name is a directory

if [ -d $dirname ];then

cd $dirname; #  if it exists change to the directory

else

echo “+============================+”

echo “| Check your directory name! |”

echo “+============================+”

exit 1;

fi

# Loop through all file  in the given directory

for files in *

do

if [ ! -d $files ];then

# process all files and store them in a temporary file in users home dir

echo “Processing file $files”;

cat $files | egrep -io ‘\<[^-.][0-9A-Za-z\.\-\_]+@[0-9A-Za-z.]+\>‘ >> ~/$$;

echo “Processed”;

fi

done

cd -  # get back to previous working dir, i am assuming it was home

# sort the emails ids in the file, remove duplicates and store in a final file.

sort ~/$$ | uniq >> emailids.$$

# remove the temporary file

rm ~/$$

# tell the user where the mail ids are stored

echo

echo “+=================================================+”

echo ” Your email ids are available in ~/emailids.$$ ”

echo “+=================================================+”

exit 0;

Well I should warn you, the regular expression will catch anything that looks like an email id, so you might end up having lots of things that looks like an email id.
[end]

Jigsaw Sphere With Text

April 13, 2009 By: Dexter Category: GIMP, Tutorial, Web Graphics

Here is a very simple way to have a sphere made out of jigsaw pieces with text on it using GIMP

1) Start with a square canvas, I have taken 256×256 pixels size. Go to filters — Render — Jigsaw. select the curved style from jigsaw options and increase number of vertical and horizontal pieces to 9, or whatever you like. You should get something similar to IMAGE 1

Jigsaw Pattern

IMAGE 1 Jigsaw Pattern

2) Add required text in few of the pieces, Since you have to place text in different pieces you will have to put each character one at a time. You should have something similar to IMAGE 2

IMAGE 2 - Jigsaw with text in it

IMAGE 2 - Jigsaw with text in it

3) Finally on this image run filters — Map — Map Objects - Select Sphere as the object to be mapped to. Play around with the orientation tab to move the sphere in x y or z axis etc. Once you are satisfied with the settings click ok. You should get you sphere ready. See IMAGE 3

IMAGE 3 - mapped to sphere

IMAGE 3 - mapped to sphere