Tuesday, October 30, 2012

Memcache API and Integration - Module

Integration between Drupal and Memcached with the following features:
  • An API for using Memcached and the PECL Memcache or Memcached libraries with Drupal.
  • Memcache backends for the following systems (all drop-in):
    • Caching (memcache.inc)
    • Sessions (memcache-session.inc)
    • Locking (memcache-lock.inc)
  • A module that provides a comprehensive administrative overview of Drupal's interaction with Memcached and stats.
  • A set of tests that can be run to test your memcache setup.
Read More....

Friday, October 26, 2012

Weight - Module

This module adds a weight option to enabled node types. Nodes with lower weight will float to the top of lists, while heavier items will sink. It uses the node table's 'sticky' column to store weights as well as sticky information (so that feature is not lost).
You might be interested in reading Comparison of Node Ordering Modules.
This is useful for sorting non-chronological nodes like bios, e-commerce products, or whatever you would like.
Nodes will be sorted first by stickiness, then by weight, then by creation date.


Wednesday, October 24, 2012

Nodes In Block

Nodes in block makes it possible to add nodes into a block. A number of configurable blocks are generated which you can assign to a region. Visibility settings of this block are automatically set to 'Show on only the listed pages'. On the node content form, you define the weight and visibility per node thus making it easier for content administration as all your content is now in the same place. With this module, you don't have to explain your customers how blocks work but is still able to decide on which pages content must be rendered.
If you set the visibility setting for the block as "Show on every page except the listed pages", multiple paths will not work correct because of the way that Drupal core block visibility works. You'll be better off choosing the default option.

Read More....

Display Suite - Module

Display Suite allows you to take full control over how your content is displayed using a drag and drop interface. Arrange your nodes, views, comments, user data etc. the way you want without having to work your way through dozens of template files. A predefined list of layouts (D7 only) is available for even more drag and drop fun!
By defining custom view modes (build modes in D6), you can define how one piece of content should be displayed in different places such as teaser lists, search results, the full node, views etc.

Read More....

Views Display Tabs - Module

Views Display Tabs exposes the displays of a view as tabs, making it possible to switch displays for a view using AJAX (though it degrades gracefully). This opens up the possibility to make a view even more useful as all overridable settings for a view can be stored in a display. This means that sorting, among many other settings a display can have, can now be exposed to the user through multiple displays with different settings.
New: Module doesn't require an AJAX-enabled browser and will work even with JS turned off, with the added advantage that search engine spiders will index the displays exposed through this module.

Examples of use

Thanks to the configurability offered by a view's displays, Views Display Tabs opens up a lot of possibilities and can be used in many different ways. Here are some ideas:
  • A gallery page view that shows thumbnails or a simple list through separate displays using different style plugins.
  • A sortable page view that has two displays, one with ascending and the other with descending sort.
  • A page view that has one display showing just a few fields and another showing all fields, offering 'basic' and 'detailed' information.
  • A page view that has one display that just lists content and another that offers search through exposed filters.
  • A block view offering related information for a node through an argument handler, with a separate display for each content type.
Read More....

Tuesday, October 16, 2012

Git documentation

Git is the version control system Drupal.org developers use to share code with one another.
Within this section of the site, you will find information on Drupal.org's use of Git, how to download, install, and configure Git, and how to contribute your own code to Drupal.org.
Here's a list of quick links to get you started, depending on your needs.

Git User’s Manual (for version 1.5.3 or newer) 

Understanding Git Conceptually

Friday, October 12, 2012

Drupal Interview Questions - IV

1. What are systems requirements for drupal installation ?
- 3MB of disk space
- If you install many contributed modules and contributed themes, the actual disk space for your installation could easily be 40 MB or more (exclusive of database content, media, backups and other files).
Web Server
Drupal has been deployed successfully on both Apache and IIS.
Drupal is being developed to be web server independent, but we have limited or no reports of successful use on web servers not listed here.
Database server
Recommended: MySQL 4.1 or MySQL 5.0
PostgreSQL 7.4 or higher

2. What are the browser requirements for Drupal ?
Websites built using just Drupal core (i.e. with no additional, contributed modules) are compatible with, and fully functional, in all modern browsers that support CSS and JavaScript. However, browsers have varying levels of compliance with Internet standards such as CSS 2, so there may be minor variations in appearance.
Here is an incomplete list of browsers that are known to work well with Drupal core and support all of its features:
• Internet Explorer 6.x and later
• Firefox 2.x and later
• Opera 7 and later
• Safari 1.x and later
• Camino 1.x and later
• Google Chrome
It’s worth mentioning here that IE6 has an problem with loading more than 30 stylesheets, and it’s fairly easy to run into this problem once you start adding contrib modules.
Recommended: PHP 5.2.x
Required: PHP version 4.3.5 or higher (Contributed modules may not support this version of PHP)

3. What is PDO?
PDO is an acronym for PHP Data Objects. PDO is a lean, consistent way to access databases. This means developers can write portable code much easier. PDO is not an abstraction layer like PearDB. PDO is a more like a data access layer which uses a unified API (Application Programming Interface).

4. How to enable clean urls in drupal ?
The standard Drupal installation contains a sample .htaccess file which supports clean URLs. It is easy to miss copying this file, because of the leading “dot”. So before trying to enable Clean URLs, make sure this file exists in your Drupal installation.
Drupal 6.x
In Drupal 6, the installer tests for compatibility with Clean URLs as a part of the installation process.
Drupal 5.x
Goto the administer >> site configuration >> clean urls section of the administrative interface.
Clean urls can be enabled by following the above two options in respective versions of drupal website.

5. Which are the core required modules in drupal 6.x ?
1. Block — Controls the boxes that are displayed around the main content.
2. Filter — Handles the filtering of content in preparation for display.
3. Node — Allows content to be submitted to the site and displayed on pages.
4. System — Handles general site configuration for administrators.
5. User — Manages the user registration and login system.

6. Is it possible to disable the core required modules through drupal admin ?
No, it is not possible to disable the core required modules.

7. Which are the core optional modules in drupal 6.x ?
1. Aggregator Aggregates syndicated content (RSS, RDF, and Atom feeds).
2. Blog Enables keeping easily and regularly updated user web pages or blogs.
3. Blog API Allows users to post content using applications that support XML-RPC blog APIs.
4. Book Allows users to structure site pages in a hierarchy or outline.
5. Color Allows the user to change the color scheme of certain themes.
6. Comment Allows users to comment on and discuss published content.
7. Contact Enables the use of both personal and site-wide contact forms.
8. Content translation Allows content to be translated into different languages.
9. Database logging Logs and records system events to the database.
10. Forum Enables threaded discussions about general topics.
11. Help Manages the display of online help.
12. Locale Adds language handling functionality and enables the translation of the user interface to languages other than English.
13. Menu Allows administrators to customize the site navigation menu.
14. OpenID Allows users to log into your site using OpenID.
15. Path Allows users to rename URLs.
16. PHP filter Allows embedded PHP code/snippets to be evaluated.
17. Ping Alerts other sites when your site has been updated.
18. Poll Allows your site to capture votes on different topics in the form of multiple choice questions.
19. Profile Supports configurable user profiles.
20. Search Enables site-wide keyword searching.
21. Statistics Logs access statistics for your site.
22. Syslog Logs and records system events to syslog.
23. Taxonomy Enables the categorization of content.
24. Throttle Handles the auto-throttling mechanism, to control site congestion.
25. Tracker Enables tracking of recent posts for users.
26. Trigger Enables actions to be fired on certain system events, such as when new content is created.
27. Update status Checks the status of available updates for Drupal and your installed modules and themes.
28. Upload Allows users to upload and attach files to content.

8. what a module is in Drupal and what the process of writing one involves?
When developers learn that modifying Drupal’s core code is a no-no, they often have a panic moment. “How, then will I bend Drupal to do my will?,” they ask. Easy: by writing a module. The first part of writing a module is writing a .info file, where you describe your module to Drupal. Here’s an example from the Forum Module:
; $Id: forum.info,v 1.6 2007/06/08 05:50:54 dries Exp $
name = Forum
description = Enables threaded discussions about general topics.
dependencies[] = taxonomy
dependencies[] = comment
package = Core – optional
core = 6.x
This gives Drupalenough information to list the module on the modules administration page, and to tell whether the module is compatible with the version of Drupal being run (in this case, 6.x). Drupal will also make sure the dependent modules are present.
A module may have a .install file containing code that runs when the module is first installed. For example, some database tables may be needed, or some values may need to be initialized in Drupal’s persistent variable system.
Finally, the .module file itself contains the code that does whatever it is that your module will do. And that’s just about anything. There were 3,430 modules in the repository last time I checked, so it’s a good idea to check if the module you’re thinking about writing is already written. Drupal Modules is a good place to do that.
New Drupal developers are also often stymied by the question “When does my code run? I put it in a module, but when does the module run?” Answering that question requires understanding of the Inversion of Control design pattern that Drupal uses, often called “hooks” or “callbacks”. You name your functions in a certain way, and Drupal will automatically call your code at the appropriate time, depending on how you’ve named the functions.

9. Drupal is flexible at handling events automatically and employing triggers. How do developers make use of these features?
There are really two answers here. At the code level, that’s always what Drupal has been about: having your code run when a certain event happens. For example, the following code would send a tweet to my Twitter account every time someone logs in to the Drupal site (it requires the third-party Twitter Module to be installed to do the dirty work).
function mymodulename_user($op, &$edit, &$account) {
if ($op == ‘login’) {
// Bring twitter-related functions into scope.
module_load_include(‘inc’, ‘twitter’);
// Use t() for proper localization.
$text = t(‘@username logged in’, array(‘@username’ => $account->name));
// Post to twitter using the twitter module.
twitter_set_status(‘clouseau’, ‘secret’, $text);
That’s fine if you are a programmer. But what if we took the whole idea of “Send a message to Twitter” and abstracted it? Then we could use a nice user interface to associate the action “Send a message to Twitter” with one of Drupal’s common events, such as when a user logs in, or posts content, or creates a new account. That is what the new features in Drupal 6 provide: the user interface for doing such associations between actions and events. A trigger is an event that has been exposed in the user interface.
You can also create your own triggers. Perhaps you want to go the other way: you want actions to happen in Drupal when a new tweet is posted to your Twitter account! Chapter 3 of the book tells you how to make your own triggers.

10. The search features in Drupal are excellent, as compared to search in other content management systems. What makes these so good?
Drupal’s search is so good because Drupal doesn’t treat its content as a big bucket of text; rather, all of the fine-grained semantic information that Drupal knows about can be used to fine-tune search results. That includes the type of content, any classification information from the taxonomy system, and the usual content metadata. Inside the search engine is an extensible indexer that can accept pretty much anything. In the book, one of the examples uses Drupal to index an external non-Drupal database.
And as usual, you can tweak and override the search system to adjust the user interface, the way content is ranked, and the way results are displayed. That said, Drupal integrates well with external search engines such as Apache Solr, Xapian, and Sphinx if the built-in Drupal search does not meet your needs.

Drupal Interview Questions - III

1. How To Define New Regions in Drupal
To add regions for Drupal 5.x
ADD this code in its entirety to the bottom of your template.php file:
/** Define the regions **/
function framework_regions() {
return array(
‘left’ => t(‘left sidebar’),
‘right’ => t(‘right sidebar’),
‘content’ => t(‘content’),
‘header’ => t(‘header’),
‘footer’ => t(‘footer’),
‘newregion’ => t(‘new region’),
Replace “newregion” with what you would like to call that region instead. Note that the name on the left before the = is the machine readable format, and cannot have spaces. the name after the = is the human readable format, and can have spaces, capital letters etc. You may add as many regions as you like in the same manner that “newregion” has been added in the example above.
Then, in your page.tpl.php file, define where you would like you regions to be using a print call like so:
You need to replace “newregion” with what you named your region. The id, class and any other html can be changed to anything.
To add regions for Drupal 6.x
ADD the following code to you themename.info file:
regions[left] = Left sidebar
regions[right] = Right sidebar
regions[content] = Content
regions[header] = Header
regions[footer] = Footer
regions[newregion] = New Region
The internal “machine” readable name in square brackets and the human readable name as the value, e.g., regions[theRegion] = The region label.
The contents of the .info file is cached in the database so altering it will not be noticed by Drupal. To clear it, do ONE of the following:
1. Clear button located at “Administer > Site configuration > Performance”.
2. With devel block enabled (comes with devel module), click the “Empty cache” link.
3. Simply visit the theme select page at “Administer > Site building > Themes”.
Then, in your page.tpl.php file, define where you would like you regions to be using a print call like so:
You need to replace “newregion” with what you named your region. The id, class and any other html can be changed to anything.

2. Explain the function and working of Dashboard module ?
The Dashboard module provides a Dashboard page in the administration menu. The intention of the Dashboard page is to give administrators a quick overview of important information on the website.

3. List the modules required for building a social networking website in Drupal.
• Activity
• Advanced Forum
• Advanced Profile Kit
• Application Toolbar (Appbar)
• Author Pane
• Buddylist2 Package
• Buddylist: list your social network
• CiviCRM: manage community contacts, relationships, and activities
• CiviNode and CiviNode CCK: Tools For Integrating CiviCRM Contacts Into Drupal Content
• Comment Notify
• FOAF: friends of a friend
• Facebook-style Statuses
• Family: Record, display, and analyze genealogical data.
• Flag Friend
• Friend
• FriendList
• Front: Show group membership and events
• Gigya Socialize Module
• Invite: send invitations to join your site
• Notice Feed
• Organic Group
• Profile Setup
• Radioactivity
• Sports Pickem
• Tellafriend Node
• User Invite
• User Relationships
• UserTag:Tag users with taxonomy terms
• meetü: The Social Networking Game from the OPL @ RIT

4. List the SEO modules available in Drupal.
1. Pathauto
2. Nodewords/ Meta tags
3. Service links
4. Google analytics
5. Related Links
6. Search 404
7. Site map
8. Url list

5. How to post videos from mobile to Drupal website ?
Posting video from mobile phone to drupal website via email requests from user to configure a mobile phone with smtp settings and reasonable Internet connection (3g). Costs depends from your mobile phone provider: at some networks you pay only for transfer volume, at others you might pay for “event” of establishing connection.
On server side you will probably need to setup smtp server and provide access to it to users of your website. Transcoding of posted video employs ffmpeg, its standard software on proper hosting server.
Process Overview
1. Email with video attachment from mobile phone is sent to a defined mailbox
2. Drupal website downloads Mail on cron (mailhandler module)
3. Emails are turned into nodes with videos as attachments
4. Media Mover runs on cron, trans-coding mobile video formats and creating thumbnails
5. Transcoded flash video files are added to cck file field
6. Thumbnail added to file field
7. Nodes are themed using swftools to display video using “JWplayer”
Modules used
• Mailhandler
• Mailssave
• Mediamover
• SWFTools
• FFMPEG_wrapper
• cck
• filefield
• imagefield

6. What is a patch?
A patch is a file that consists of a list of differences between one set of files and another. All code changes, additions, or deletions to Drupal core and contributed modules/themes between developers are done through patches.
The differences are presented in a structured, standard way, which means that a program (also named patch) can be used to apply the changes to another copy of the original file.

7. What is difference between Diff and Patch ?
diff creates patch
In simple terms, the diff command is used to compare differences between two versions of a file. The resulting file is called a patch, and typically is given (by the user) a “.patch” suffix.
This patch file then can be used on other copies of the “old” file by using the patch command, thus updating their “old” file(s) to match the “new” file(s).
Why you would use diff
When might one use diff to create a patch file? Let’s say you are customizing a module to fix a bug, and have saved a new version of the module. How will you pass on your bug fix to others? Simply passing on your version of the module may not work, because it’s quite possible someone else has modified some other aspect of the code at the same time and you both would be overwriting each others’ changes.
So instead, what you do is run diff between the two files, and then upload the resulting patch — which others can then apply to their files using the patch command. (And you can apply other people’s patches against your files, without losing your own changes.)
The added benefit of this type of workflow is that changes to the code can easily be tracked — and undone, if necessary — which is essential in a community-developed project such as Drupal.

8. List the features of Drupal ?
1. Rock solid & high quality platform
2. Powerful templating system. Any XHTML or CSS template can be easily converted to Drupal
3. Real multi-site-feature (only one installation for several sites)
4. Any Kind of user groups & user permissions, OpenId compliant in Version 6
5. Can run membership and community sites, not only CMS etc
6. Clear, high quality code and API (easy to integrate with other solutions etc)

9. How to port a joomla template to drupal ?
For explanation please visit

10. Explain the capabilities of views module.
The Views module provides a flexible method for Drupal site designers to control how lists and tables of content (nodes in Views 1, almost anything in Views 2) are presented. Traditionally, Drupal has hard-coded most of this, particularly in how taxonomy and tracker lists are formatted.
This tool is essentially a smart query builder that, given enough information, can build the proper query, execute it, and display the results. It has four modes, plus a special mode, and provides an impressive amount of functionality from these modes.
Among other things, Views can be used to generate reports, create summaries, and display collections of images and other content.

Drupal Interview Questions - II

1. Explain the menu system in Drupal ? Purpose of menus ?
Define the navigation menus, and route page requests to code based on URLs.
The Drupal menu system drives both the navigation system from a user perspective and the callback system that Drupal uses to respond to URLs passed from the browser. For this reason, a good understanding of the menu system is fundamental to the creation of complex modules.
Drupal’s menu system follows a simple hierarchy defined by paths. Implementations of hook_menu() define menu items and assign them to paths (which should be unique). The menu system aggregates these items and determines the menu hierarchy from the paths. For example, if the paths defined were a, a/b, e, a/b/c/d, f/g, and a/b/h, the menu system would form the structure:
Note that the number of elements in the path does not necessarily determine the depth of the menu item in the tree.
When responding to a page request, the menu system looks to see if the path requested by the browser is registered as a menu item with a callback. If not, the system searches up the menu tree for the most complete match with a callback it can find. If the path a/b/i is requested in the tree above, the callback for a/b would be used.
The found callback function is called with any arguments specified in the “page arguments” attribute of its menu item. The attribute must be an array. After these arguments, any remaining components of the path are appended as further arguments. In this way, the callback for a/b above could respond to a request for a/b/i differently than a request for a/b/j.
For an illustration of this process, see page_example.module.
Access to the callback functions is also protected by the menu system. The “access callback” with an optional “access arguments” of each menu item is called before the page callback proceeds. If this returns TRUE, then access is granted; if FALSE, then access is denied. Menu items may omit this attribute to use the value provided by an ancestor item.
In the default Drupal interface, you will notice many links rendered as tabs. These are known in the menu system as “local tasks”, and they are rendered as tabs by default, though other presentations are possible. Local tasks function just as other menu items in most respects. It is convention that the names of these tasks should be short verbs if possible. In addition, a “default” local task should be provided for each set. When visiting a local task’s parent menu item, the default local task will be rendered as if it is selected; this provides for a normal tab user experience. This default task is special in that it links not to its provided path, but to its parent item’s path instead. The default task’s path is only used to place it appropriately in the menu hierarchy.
Everything described so far is stored in the menu_router table. The menu_links table holds the visible menu links. By default these are derived from the same hook_menu definitions, however you are free to add more with menu_link_save().

2. How to interact with Drupal search system ?
There are three ways to interact with the search system:
Specifically for searching nodes, you can implement nodeapi(‘update index’) and nodeapi(‘search result’). However, note that the search system already indexes all visible output of a node, i.e. everything displayed normally by hook_view() and hook_nodeapi(‘view’). This is usually sufficient. You should only use this mechanism if you want additional, non-visible data to be indexed.
Implement hook_search(). This will create a search tab for your module on the /search page with a simple keyword search form. You may optionally implement hook_search_item() to customize the display of your results.
Implement hook_update_index(). This allows your module to use Drupal’s HTML indexing mechanism for searching full text efficiently.
If your module needs to provide a more complicated search form, then you need to implement it yourself without hook_search(). In that case, you should define it as a local task (tab) under the /search page (e.g. /search/mymodule) so that users can easily find it.

3. What is a Module in drupal ?
A module is software (code) that extends Drupal features and/or functionality. Core modules are those included with the main download of Drupal, and you can turn on their functionality without installing additional software. Contributed modules are downloaded from the Modules download section of drupal.org, and installed within your Drupal installation. You can also create your own modules; this requires a thorough understanding of Drupal, PHP programming, and Drupal’s module API.

4. Explain User, Permission, Role in drupal.
Every visitor to your site, whether they have an account and log in or visit the site anonymously, is considered a user to Drupal. Each user has a numeric user ID, and non-anonymous users also have a user name and an email address. Other information can also be associated with users by modules; for instance, if you use the core Profile module, you can define user profile fields to be associated with each user.
Anonymous users have a user ID of zero (0). The user with user ID one (1), which is the user account you create when you install Drupal, is special: that user has permission to do absolutely eveything on the site.
Other users on your site can be assigned permissions via roles. To do this, you first need to create a role, which you might call “Content editor” or “Member”. Next, you will assign permissions to that role, to tell Drupal what that role can and can’t do on the site. Finally, you will grant certain users on your site your new role, which will mean that when those users are logged in, Drupal will let them do the actions you gave that role permission to do.
You can also assign permissions for the special built-in roles of “anonymous user” (a user who is not logged in) and “authenticated user” (a user who is logged in, with no special role assignments). Drupal permissions are quite flexible — you are allowed to assign permission for any task to any role, depending on the needs of your site.

5. Explain the concept of node in drupal.
A node in Drupal is the generic term for a piece of content on your web site. (Note that the choice of the word “node” is not meant in the mathematical sense as part of a network.) Some examples of nodes:
• Pages in books
• Discussion topics in forums
• Entries in blogs
• News article stories
Each node on your site has a Content Type. It also has a Node ID, a Title, a creation date, an author (a user on the site), a Body (which may be ignored/omitted for some content types), and some other properties. By using modules such as the contributed Content Construction Kit (CCK) module, the core Taxonomy module, and the contributed Location module, you can add fields and other properties to your nodes.

6. Concept of Comment in Drupal .
Comments are another type of content you can have on your site (if you have enabled the core Comment module). Each comment is a typically small piece of content that a user submits, attached to a particular node. For example, each piece of discussion attached to a particular forum topic node is a comment.

7 explain Taxonomy in drupal .
Drupal has a system for classifying content, which is known as taxonomy and implemented in the core Taxonomy module. You can define your own vocabularies (groups of taxonomy terms), and add terms to each vocabulary. Vocabularies can be flat or hierarchical, can allow single or multiple selection, and can also be “free tagging” (meaning that when creating or editing content, you can add new terms on the fly). Each vocabulary can then be attached to one or more content types, and in this way, nodes on your site can be grouped into categories, tagged, or classified in any way you choose.

8 . How database system of drupal works ?
Drupal stores information in a database; each type of information has its own database table. For instance, the basic information about the nodes of your site are stored in the Node table, and if you use the CCK module to add fields to your nodes, the field information is stored in separate tables. Comments and Users also have their own database tables, and roles, permissions, and other settings are also stored in database tables.

9. Explain the path system of drupal ?
When you visit a URL within your Drupal site, the part of the URL after your base site address is known as the path. When you visit a path in your Drupal site, Drupal figures out what information should be sent to your browser, via one or more database queries. Generally, Drupal allows each module you have enabled on your site to define paths that the module will be responsible for, and when you choose to visit a particular path, Drupal asks the module what should be displayed on the page.
For instance, this site (drupal.org) is (of course) built with Drupal. The page you are now viewing is http://drupal.org/node/19828, whose path is “node/19828″. The module that is responsible for this path is the core Node module, so when you visit this page, Drupal lets the Node module determine what to display.
To determine the path to a particular page on your site, for purposes of creating a link, go to the page you want to link to and look at the URL in the address bar. By default the URL, after the base address of your site, will begin with ‘?q=’. When ‘Clean URLs’ are enabled you will see a directory structure in the URL. The “path” for use in a menu item is the part of the URL after the site’s base address and without the “?q=”.

10. Explain Region, Block, Menu in drupal ..
Pages on your Drupal site are laid out in regions, which can include the header, footer, sidebars, and main content section; your theme may define additional regions. Blocks are discrete chunks of information that are displayed in the regions of your site’s pages. Blocks can take the form of menus (which are concerned with site navigation), the output from modules (e.g., hot forum topics), or dynamic and static chunks of information that you’ve created yourself (e.g., a list of upcoming events).
There are three standard menus in Drupal: Primary Links, Secondary Links, and Navigation. Primary and Secondary links are built by site administrators, and displayed automatically in the page header of many themes (if not, you can enable their blocks to display them). Navigation is the catch-all menu that contains your administration menus, as well as links supplied by modules on your site. You can also create your own custom menus, and display them by enabling their blocks.
You can customise menus in several ways, such as reordering menu items by setting their “weight” or simply dragging into place, renaming menu items, and changing the link title (the tooltip that appears when you mouse over a menu item). You can move a menu item into a different menu by editing the Parent property of the menu item.
You can also add custom menu items to a menu, from the Add menu item tab of the Menu administration screen. To create a menu item, you will need to provide the path to the content (see above).
In all cases a menu item will only be shown to a visitor if they have the rights to view the page it links to; e.g., the admin menu item is not shown to visitors who are not logged in.

Drupal Interview Questions - I

1. What is CMS?
A content management system (CMS) is a collection of procedures used to manage work flow in a collaborative environment. These procedures can be manual or computer-based. The procedures are designed to:
* Allow for a large number of people to contribute to and share stored data
* Control access to data, based on user roles. User roles define what information each user can view or edit
* Aid in easy storage and retrieval of data
* Reduce repetitive duplicate input
* Improve the ease of report writing
* Improve communication between users
In a CMS, data can be defined as almost anything – documents, movies, pictures, phone numbers, scientific data, etc. CMSs are frequently used for storing, controlling, revising, semantically enriching, and publishing documentation. Content that is controlled is industry-specific. For example, entertainment content differs from the design documents for a fighter jet. There are various terms for systems (related processes) that do this. Examples are web content management, digital asset management, digital records management and electronic content management. Synchronization of intermediate steps, and collation into a final product are common goals of each.
cms,drupal,drupal cms,interview questions,technical,joomla,joomla cms,drupal interview question,content management system

2. What is a web content Management system ?
A Web content management system (WCM, WCMS or Web CMS) is content management system (CMS) software, implemented as a Web application, for creating and managing HTML content. It is used to manage and control a large, dynamic collection of Web material (HTML documents and their associated images). A WCMS facilitates content creation, content control, editing, and essential Web maintenance functions.
The software provides authoring (and other) tools designed to allow users with little knowledge of programming languages or markup languages to create and manage content with relative ease.
Most systems use a database to store content, metadata, or artifacts that might be needed by the system. Content is frequently, but not universally, stored as XML, to facilitate reuse and enable flexible presentation options.
A presentation layer displays the content to Web-site visitors based on a set of templates. The templates are sometimes XSLT files.
Most systems use server side caching boosting performance. This works best when the WCMS is not changed often but visits happen on a regular basis.
Administration is typically done through browser-based interfaces, but some systems require the use of a fat client.
Unlike Web-site builders, a WCMS allows non-technical users to make changes to a website with little training. A WCMS typically requires an experienced coder to set up and add features, but is primarily a Web-site maintenance tool for non-technical administrators.

3. Which are commonly used PHP based CMSs ?

4. What is Drupal ?
Drupal is an open-source platform and content management system for building dynamic web sites offering a broad range of features and services including user administration, publishing workflow, discussion capabilities, news aggregation, metadata functionalities using controlled vocabularies and XML publishing for content sharing purposes. Equipped with a powerful blend of features and configurability, Drupal can support a diverse range of web projects ranging from personal weblogs to large community-driven sites.

5. What is an Open source software ?
Open-source software (OSS) is computer software for which the source code and certain other rights normally reserved for copyright holders are provided under a software license that meets the Open Source Definition or that is in the public domain.This permits users to use, change, and improve the software, and to redistribute it in modified or unmodified forms. It is very often developed in a public, collaborative manner.
Open source doesn’t just mean access to the source code.
The distribution terms of open-source software must comply with the following criteria:
1. Free Redistribution
The license shall not restrict any party from selling or giving away the software as a component of an aggregate software distribution containing programs from several different sources. The license shall not require a royalty or other fee for such sale.
2. Source Code
The program must include source code, and must allow distribution in source code as well as compiled form. Where some form of a product is not distributed with source code, there must be a well-publicized means of obtaining the source code for no more than a reasonable reproduction cost preferably, downloading via the Internet without charge. The source code must be the preferred form in which a programmer would modify the program. Deliberately obfuscated source code is not allowed. Intermediate forms such as the output of a preprocessor or translator are not allowed.
3. Derived Works
The license must allow modifications and derived works, and must allow them to be distributed under the same terms as the license of the original software.
4. Integrity of The Author’s Source Code
The license may restrict source-code from being distributed in modified form only if the license allows the distribution of “patch files” with the source code for the purpose of modifying the program at build time. The license must explicitly permit distribution of software built from modified source code. The license may require derived works to carry a different name or version number from the original software.
5. No Discrimination Against Persons or Groups
The license must not discriminate against any person or group of persons.
6. No Discrimination Against Fields of Endeavor
The license must not restrict anyone from making use of the program in a specific field of endeavor. For example, it may not restrict the program from being used in a business, or from being used for genetic research.
7. Distribution of License
The rights attached to the program must apply to all to whom the program is redistributed without the need for execution of an additional license by those parties.
8. License Must Not Be Specific to a Product
The rights attached to the program must not depend on the program’s being part of a particular software distribution. If the program is extracted from that distribution and used or distributed within the terms of the program’s license, all parties to whom the program is redistributed should have the same rights as those that are granted in conjunction with the original software distribution.
9. License Must Not Restrict Other Software
The license must not place restrictions on other software that is distributed along with the licensed software. For example, the license must not insist that all other programs distributed on the same medium must be open-source software.
10. License Must Be Technology-Neutral
No provision of the license may be predicated on any individual technology or style of interface.

6. What are GNU Licenses ?
Does free software mean using the GPL?
Not at all—there are many other free software licenses. We have an incomplete list. Any license that provides the user certain specific freedoms is a free software license.

7. Why are so many Drupal versions available – 4.x, 5.x …? Which one should I use?
It is recommended that you run the most current stable release. This can always be found at the Drupal Project page. However, if there are no compelling features in the latest version, a contrib module that is important to you isn’t ready or you don’t have time, there is no need to rush your upgrade as long as security updates are available for the version you are running.

8. Can I use Drupal on the command line?
Yes, you can use drush –
drush is a command line shell and Unix scripting interface for Drupal

9. What are hooks in Drupal ?
Allow modules to interact with the Drupal core.
Drupal’s module system is based on the concept of “hooks”. A hook is a PHP function that is named foo_bar(), where “foo” is the name of the module (whose filename is thus foo.module) and “bar” is the name of the hook. Each hook has a defined set of parameters and a specified result type.
To extend Drupal, a module need simply implement a hook. When Drupal wishes to allow intervention from modules, it determines which modules implement a hook and calls that hook in all enabled modules that implement it.

10 what is Database abstraction layer in Drupal ?
Allow the use of different database servers using the same code base.
Drupal provides a slim database abstraction layer to provide developers with the ability to support multiple database servers easily. The intent of this layer is to preserve the syntax and power of SQL as much as possible, while letting Drupal control the pieces of queries that need to be written differently for different servers and provide basic security checks.
Most Drupal database queries are performed by a call to db_query() or db_query_range(). Module authors should also consider using pager_query() for queries that return results that need to be presented on multiple pages, and tablesort_sql() for generating appropriate queries for sortable tables.

A List of the Best Drupal SEO & Social Media Modules

There are many lists for the best Drupal SEO modules if you search Google. However, many of these lists do not cover modules that are used for increasing internal page relevance, strength, and even user-generated actions. In the list below I'll describe a few Drupal SEO modules that we've used that will not only enhance your site for search engines but for your valued users. We've also included a great list of social media modules to spice up your Drupal website. Enjoy!

The Most Common Drupal SEO Modules

  1. Page Title Module - The page title is the one found in the HTML head inside the <title> tag. It is also used on SERPs (Search Engine Result Pages) and can greatly enhance your websites SEO. This is perhaps the most under-utilized aspect to web page creation, as the creator does not add valuable keywords to the <title> tag.
  2. Nodewords - This SEO modules allows you to add meta tags to Drupal pages, both manually and automatically based on various settings. Paying attention to meta tags, such as keywords, description and canonical URL, may help obtain better search engine positioning.
  3. Nodewords Page Title - This modules lets you leverage the power of nodewords custom pages to set the page title using wildcard paths and global tokens. Great for tough-to-reach page titles in Views, Panels, and other non-node paths. This module marries the best features of nodewords and page_title modules.
  4. Related Content - This nifty SEO module enables site maintainers to easily select on a per-node basis what nodes should be displayed along with it. Nodes that are available for selection are provided by one or more views, provided by the Views module. How the nodes are displayed is configurable, as well as themeable. The module also provide a small but powerful API for advanced users.
  5. Pathauto - The Pathauto module automatically generates path aliases (search engine friendly URLs) for various kinds of content (nodes, categories, users) without requiring the user to manually specify the path alias. This allows you to get aliases like /category/my-node-title.html instead of /node/123. The aliases are based upon a "pattern" system which the administrator can control.
  6. Sitemap - This module provides a site map that gives visitors an overview of your site. It can also display the RSS feeds for all blogs and categories. Drupal generates the RSS feeds automatically but few seems to be aware that they exist. The site map can display the following items: A message to be displayed above the site map, the latest blogs, any books, any menus that will be displayed fully expanded, any categories, i.e vocabulary, with all the terms expanded. Optionally with node counts and RSS feeds.
  7. Path Redirect - This module allows you to specify a redirect from one path to another path or an external URL, using any HTTP redirect status. This redirect module is great for 301 redirects, 302 (temporary redirects), and several other types of redirects when you may need to remove or move pages within your Drupal site.
  8. Google Analytics Module - Adds the Google Analytics web statistics tracking system to your website. This module allows you to add Google's rich statistics features to your Drupal site.
  9. XML Sitemap - The XML sitemap module creates a sitemap that conforms to the sitemaps.org specification. This helps search engines to more intelligently crawl a website and keep their results up to date. The sitemap created by the module can be automatically submitted to Ask, Google, Bing (formerly Windows Live Search), and Yahoo! search engines. The module also comes with several submodules that can add sitemap links for content, menu items, taxonomy terms, and user profiles.

Other Very Useful Drupal SEO Modules

The SEO modules above are definitely recommended if you're wanting to get the most optimization out of your Drupal website. However, there are many other SEO and content modules that can really improve your Drupal site. Some of these are listed below.
  1. Content Optimizer - This module enables a quick SEO analyzer that provides instant analysis of any site content as a quick and easy guide to assure SEO best practices are consistently followed. The analysis displays vital content statistics and recommendations for improving search engine rankings.
  2. Glossify Internal Links Auto SEO - What does it do for SEO? This module generates internal node links and on a per node base external http links (crosslinks) automatically - ideal for SEO of your site's pages and partner pages. It is currently node-based and looks for node titles in node bodies and makes them to links. There are plans to extend it to taxonomy terms, too.
  3. Scribe SEO - Scribe SEO is an search engine optimization software service for Drupal and other CMS platforms - think of it as a content optimization assistant - that analyzes web pages, blog posts, and online press releases at the click of a button. Scribe then tells web writers of any kind how to tweak their content to get more search engine traffic, all while maintaining quality reader-focused copy.
  4. SEO Watcher - SEO Watcher is a module that searches specified keywords with major search engines and checks the rank of your site and competitive sites once a day and creates the reports.
  5. QA Checklist - This module provides a checklist of good Drupal QA (Quality Assurance) best practices. It provides a checklist that helps you keep track of what QA tasks need to be done. First, it will look to see what modules you already have installed. Then, all you have to do is go down the list of unchecked items and do them.
  6. SEO Friend - SEO Friend shows a summary of all available reports and a list of Drupal SEO-related modules and if they have been installed and enabled, such as Meta Tags (nodes), Meta Tags (path), Page Title report, and Referrer Report - shows a summary of referrers to your site.
  7. Related Block - This does a search for nodes that are closely related to the title and content of the current node. It provides for display only on specific node types. Words in the title are given a slightly heavier weight than those in the content. Strips out highly used words (currently only for English), and ignores words under 3 characters.
  8. Similar by Terms - This Drupal module attempts to provide context for content items by displaying a block with links to other similar content. Similarity is based on the taxonomy terms assigned to content. Blocks are available based on similarity within each of the defined vocabularies for a site as well as a block for similarity within all vocabularies.

Social Media and Social SEO Modules

Here is a list of some of our favorite Drupal social media and networking modules. Increasing brand, user-retention, customer support, and Twitter/Facebook or other followers should all be part of the bigger SEO picture!
  1. Gigya Social Optimization - Gigya provides a single API that aggregates authentication and social APIs from Facebook Connect, MySpace ID, Twitter, and OpenID webmail providers including Google, Yahoo, and AOL.
  2. Facebook Social Integration - Drupal integration of facebook social plugins http://developers.facebook.com/plugins. The following plugins are currently implemented: Like Button, Comments, Like box.
  3. Twitter Module - This module provides API integration with the Twitter microblogging service and API-compatible alternatives like Identi.ca. Out of the box, it allow users to: 1. Associate one or more Twitter accounts with their Drupal user account. 2. Have their tweets displayed in a sidebar block or on their user profile, and; 3. Post to their own Twitter account or a site-wide Twitter account whenever they create new content.
  4. Tweet Module - This module provides links to post pages to twitter in a new window or tab. The tweet will be in focus and will contain customizable text that can hold the relevant URL, title and anything else you need it to (like hashtags). The URL can be automatically abbreviated at the administrator's choice of service by integration with the Shorten URLs module.
  5. Shorten URLs - This module provides an API to shorten URLs via almost any service (over 25 services are available by default), as well as a block and a page that provide an interface for easily shortening URLs, and a block that displays a shortened URL for the current page for easy copying.
  6. ShURLy - This URL shortener is intended to be fast, clean, simple, self-contained, user-friendly, flexible, and easy to set up. New URLs are created by going to /shurly and entering the long URL and an optional custom short URL. Short URLs have ownership and each user can track click statistics for his/her URLs.
  7. Tweetmeme - Provides third-party integration with the TweetMeme web service, used to track popular links on Twitter. As it it right now, this module just adds the TweetMeme button to nodes.
  8. Twitter Tweet Button - Adds the Twitter Tweet Button to node teasers & pages. You can configure which types of nodes should use the button, and control the display differently for teasers and nodes.
  9. Tweet Board - This module will integrate Tweetboard with your Drupal site without having to install any code (it'll do it for you).
  10. Socialite - Add your favorite external networking sites to a block. Features: Clean, minimalist design! Uses native Drupal 6 API, supports drag and drop ordering, supports automatic favicons, favicon caching, outputs clean, CSS list.
  11. Facebook Share - The Facebook Share module enables Drupal site administrators to add a Facebook Share button to selected content type nodes in their website(s). The motivation behind this module was the TweetMeme module which allows users to retweet about a given website node.
  12. Service links - Service links allow to add links of social bookmarking sites, blog search engines, social networks and similiar, including Buzz Yahoo, del.icio.us, Digg, Facebook, Furl, Google, IceRocket, LinkedIn, ma.gnolia.com, MySpace, Newsvine, Reddit, StumbleUpon, Technorati, Twitter, Yahoo and many more.
  13. ShareThis - Integration with the ShareThis social bookmarking utility on selected node types.
  14. AddtoAny Share/Bookmark - AddToAny's Share/Bookmark widget helps readers share, bookmark, and email your pages and articles (stories) using any service, such as Facebook, Twitter, Delicious, Digg, and over 100 more sharing and social bookmarking sites. Services are updated automatically.
  15. SexyBookmarks - The SexyBookmarks module is a port of the WordPress plug-in by the same name. The goal was to stray away from the "in the box" thinking behind most social bookmarking plugins, and add a little flair that would entice your readers, rather than deterring them with microscopic icons that get lost in pages heavy laden with content.
We will add any more to the list above that users have found useful and beneficial for optimizing their Drupal websites. Please list your favorite in the comments or let us know why you love Drupal and the incredible SEO or social media modules that help us all make our Drupal sites better for users and search engines.

jQuery - jQuery()


Description: Accepts a string containing a CSS selector which is then used to match a set of elements.

Read More....

jQuery - .attr()

Read More

Monday, October 8, 2012

Form API Validation - Module

This module drastically increase the validation power of Drupal Form API (FAPI).
You can use the existent filters and rules or create your own. Is up to you.

Why not Validation API ?

The Validation API module is focused on Drupal end users and not module developers. There is no documentation so I guess that you can only set validations on admin interface.
So FAPI Validation come to give you, developer, more facility on your development process.
If you have any consideration to do, fill free for it at #637598: Merge with validation API?

Modules using FAPI Validation

Available Rules

Rule Usage Description
numeric numeric Must contains only numbers.
length length[<total>]
length[<min>, <max>]

chars chars[<char 1>, <char 2>, ..., <char N>] Accept only specified characters.
email email Valid email
url url
Valid URL. If absolute parameter is specified, the field value must have to be a full URL.
ipv4 ipv4 Valid IPv4
alpha_numeric alpha_numeric Accept only Alpha Numeric characters
alpha_dash alpha_dash Accept only Alpha characters and Dash ( - )
Checks wheter a string consists of digits only (no dots or dashes).
decimal decimal

regexp regexp[/^regular expression$/] PCRE Regular Expression

Available Filters

Filter Description
numeric Remove all non numeric characters.
trim Remove all spaces before and after value.
uppercase Transform all characters to upper case.
lowercase Transform all characters to lower case.


$form['myfield'] = array(
'#type' => 'textfield',
'#title' => 'My Field',
'#required' => TRUE,
'#rules' => array(
'length[10, 50]',
'rule' => 'alpha_numeric', 'error' => 'Please, use only alpha numeric characters at %field.')
'#filters' => array('trim', 'uppercase')


If any of this rules was what you need, you can use your own with hook_fapi_validation_rules and hook_fapi_validation_filters.
* Implementation of hook_fapi_validation_rules
function mymodule_fapi_validation_rules() {
  return array(
'rule_name' => array(
'callback' => 'mymodule_validation_rule_name',
'error_msg' => 'Invalid value for %field'
* Implementation of hook_fapi_validation_filters
function mymodule_fapi_validation_filters() {
  return array(
'filter_name' => array(
'callback' => 'mymodule_validation_filter_name',

mymodule_validation_rule_name($value) {
  if (
preg_match('/^[a-z]+$/', $value)) {
  else {

mymodule_validation_filter_name($value) {
preg_replace('/\d+/', '', $value);
And now you can use on your Form API.
$form['myfield'] = array(
'#type' => 'textfield',
'#title' => 'Email',
'#required' => TRUE,
'#rules' => array('rule_name'),
'#filters' => array('trim', 'filter_name')

Read More....

Friday, October 5, 2012

Drupal 7 Documentation

Hosting note

To install and run Drupal your web host must meet certain minimum requirements. Most web hosts meet these requirements. However, a few stand out by also supporting the Drupal community. If you need a host, consider selecting one of our reviewed web hosts.

Introduction to installation

Drupal provides an installation script that automatically populates database tables and configures the correct settings in the settings.php file. This section covers preparing for installation, running the installation script itself, and the steps that should be done after running the installation script has completed. It also explains how to do a "multi site" installation, where a number of different Drupal sites run off the same code base.
Before proceeding with your first Drupal installation, you should also review the best practices section. For help with Drupal terms, see the glossary page.

Other tools

Some of the steps in the installation process can be performed with tools such as graphical applications for moving files and managing databases or tools that are provided by your hosting service. This documentation focuses on performing tasks at the command line. For information on using other tools, see the documentation that accompanies the application or is provided by your hosting service.

Creating a test site on a local computer

It is considered a good practice to do all development work on a separate test site before making changes to a production site. A test site allows you to evaluate the impact of upgrades, new modules, modifications to themes etc. without causing disruption to your live site. For information about setting up a web server on a local computer, see the Local Server Setup section of the Developing for Drupal guide.

Alternative methods for installation

Some web hosting companies offer "one-click" installations of Drupal, or specific Drupal support. You may be able to locate one on the Drupal hosting page (these hosting companies also support the Drupal project).
There is also information about Drupal distributions, which include installation profiles and pre-packaged distributions of Drupal and modules. These may be of help as well.


only show translated menu items into current language (Drupal 8)

function MY_THEME_preprocess_menu(&$variables) {   if ($variables['menu_name'] == 'brancott-header-menu') {    $langu...