Category: Web Design Articles


Start with a template


Sure, you can start coding from scratch, but there’s a lot of interesting free templates that will make you save a lot of time. Among others, I recommend Mobile boilerplate, The 1140 grid and Skeleton. There’s a lot more than those ones, so feel free to google “responsive web design template” if you want more.

Working with fluid grid based layouts


Fluid layouts are an important part of a good responsive layout. In order to have a website that can adapt to many different screen resolutions, you have to use a fluid layout with widths defined in percents instead of pixels.

To get the size in percents from a size in pixels, you have to take the element’s width and divide it by the full grid size. For example: 200 px (element size) / 960 px (grid size) = 0.2083. Multiply this by 100, and you’ll get 20,83%.

This is why it is interesting to work with a 1000px grid. 1000 is a round number, and it is easy to calculate that 24% of this size will be equal to 240 pixels. For more info about 1000px grids, I recommend you to check out this article.

Flexible images

A very important aspect of a responsive layout is how images can adapt to the size of their parent container. The basic solution is to define a maximum width of 100%. This will make sure that your images are never wider than the parent container.

.content img{
   max-width:100%;
}

A better solution is to use context-aware image sizing. This technique basically consists of having different sizes of an image, and displaying only the size adapted to the device. Quick example:

<img src="image.jpg" data-src-600px="image-600px.jpg" data-src-800px="image-800px.jpg" alt="">

And the related CSS:

@media (min-device-width:600px) {
    img[data-src-600px] {
        content: attr(data-src-600px, url);
    }
}

@media (min-device-width:800px) {
    img[data-src-800px] {
        content: attr(data-src-800px, url);
    }
}

For more info about this technique, check out this article.

jQuery is your friend

jQuery is definitely a super useful tool when it comes to web development. Lots of jQuery plugins can help you to create better responsive websites.
A quick round up of my personal favorites:

  • FitText: A plugin that makes font-sizes flexible.
  • Elastislide: A responsive jQuery carousel plugin.
  • Supersized: A fullscreen background slideshow plugin.
  • FitVids: A lightweight, easy-to-use jQuery plugin for fluid width video embeds.

Don’t forget Apple’s viewport

The <meta name="viewport""> tag was introduced by Apple for their mobile devices (iPhones, iPads and iPods Touch). This tag allow you to specify the default size of a page when viewed with an iPhone or iPad.

<meta name="viewport" content="width=device-width; initial-scale=1.0">

The code above will ensure that upon opening, your layout will be displayed properly at 1:1 scale. No zooming will be applied.

For more info, feel free to check out Apple developper documentation.

Scalable background images

The CSS3 specification introduced a new attribute named background-size. As you probably guessed, it is used to define the size of background images. It can be a size in pixels, or it can use some of the reserved keywords. The cover keyword scale the background image (while preserving original proportions) to be as large as possible so that the background positioning area is completely covered by the background image.

html {
	background: url(bg.jpg) no-repeat center center fixed;
	-webkit-background-size: cover;
	-moz-background-size: cover;
	-o-background-size: cover;
	background-size: cover;
}

The solution above works perfectly in Chrome, Safari 3+, IE 9+, Firefox 3.6+ and Opera 10+. If you’re looking for a solution that works in older browsers, I highly suggest using this jQuery plugin or one of the alternative CSS tweaks published here.

Get inspired


When designing a website, it is always good to be able to get inspired by what others have done. Since the rise of responsive web design, online galleries have been created to showcase the best responsive websites.

The most complete gallery is definitely mediaqueri.es, but if you need some more inspiration, you can get it here or here.

Test, test, test, and test again!


Indeed, when developing a responsive layout, you have to test it in different resolutions. Of course, you can manually resize your browser, but why not using one of the useful tools created to simplify this task?

Lots of differents tools are available for you to test your website in different screen sizes. At the moment, my favorites are definitely ScreenQueri.es and Resize my browser.

Lots Of New Premium Content!

As Tuts+ Premium continues to sky-rocket, our ability to post better, more frequent, content has improved dramatically as well. This week, we have a variety of fun new things available to members!


Course – How To Be A Terminal Pro

In this fifteen-episode course, you’ll learn how to take advantage of that scary app you never touch: Terminal! We’ll begin with the obligatory “hello world” command, and work our way up to advanced usage.


Course – JavaScript Testing With Jasmine

Admit it: you say that you test your JavaScript, but, in reality, you…don’t. That’s okay; the idea of testing JavaScript is a relatively new thing. And unfortunately, there aren’t too many “hold your hand” resources for getting up and running. Well, that all changes with this course. We start from scratch, and slowly work our way up the testing chain.

Along the way, we’ll take advantage of the fantastic Jasmine BDD (Behavior-Driven Development) framework to make our tests as readable as possible. Upon completion of the course, you’ll not only have a robust test suite at your fingertips, but your tests will also make for fantastic documentation!


eBook - Client Centric Web Design

Other than Internet Explorer, what is the most challenging part of your job? Did you answer clients? If so, this eBook, by Paul Boag, is for you. Discover how to keep your clients happy, maintain your own sanity and produce the most effective websites you have ever built, resulting in happier clients, better websites, and improved job satisfaction.


eBook - Building Websites for Return on Investment

Building Websites For Return on Investment

‘Building Websites for Return on Investment’ uncovers the secrets of sites that successfully generate real return on investment. This book will enable you to transform your website from an expense to a measurable source of income.


Article – Are You Using CoffeeScript?

For those who haven’t yet had the chance to dig into CoffeeScript, this article will get you up and running in no time!


Coming Soon to Tuts+ Premium

Nothing above pique your interest? That’s okay; we have plenty of amazing new content on the near horizon, including the following courses:

  • PHP Fundamentals
  • What’s New in PHP 5.4?
  • Cleaner Code With CoffeeScript
  • Backbone.js Fundamentals
  • The Sublime Text 2 Guide
  • Test-Driven Development in Ruby

Already a member? What requests do you have? Haven’t signed up yet? Well now’s the perfect time!


moodle-lmsMoodle is the world’s most popular learning management system. Moodle is flexible and scaleable software designed to help educators create interactive and collaborative online learning experiences. Moodle originated in Australia around a decade ago and has since been internationalised in more than 200 countries and 100 languages. The official community site has more than a million registered users.

There are numerous ways in which Moodle can be effectively used. These include
workplace assessment, continuing professional development, staff compliance, the delivery of online courses and induction training. Being open source software, there is a large amount of community support toward the development of third-party plugins to extend Moodle’s core functionality.

Moodle is free to use without licensing costs, however, it does take a degree of technical expertise to install, configure and secure the software on a web server. Once deployed, it can be easily managed by a qualified system administrator.

Moodle’s key administrative functions include the ability to control authentication, assign roles and permissions, perform bulk user actions, manage accounts, change site appearance, automate course backups and generate various reports. Moodle enables integration with external systems, e-commerce plugins and SCORM compliance. Moodle is proactive in terms of data security and information privacy of its users, hence, patches are released on a scheduled basis and there are global settings that can be configured by the system administrator.

Course creators can add online activities and resources intended for their students. Moodle’s standard activities include assignment, forum, blog, quiz, chat, messaging and wiki. The learning sequence may be totally non-linear or controlled so learners engage with online course objects in a structured fashion. User activity and course completion tracking are monitored, moreover, assessment grades and feedback can be reported in real-time via the internet.

Moodle enables online content to be shared in several ways. Course participants can quickly upload existing files from their device, disk, or network. Using Moodle repositories, it is possible to import content and media from Cloud-based services such as Google Docs, YouTube, Flickr, Boxnet and Dropbox. On the same token, content can be export from Moodle to third-party services.

Assess, track and report on your learners via the web. Get started now and learn more today about Moodle Sydney, Moodle Brisbane and Moodle Melbourne providers.

 

If this message appears to another site than 1stwebdesigner ,it has been stolen, please visit original source!

You might not realize how important colours are in web design. If a website is green, it might as well be blue; it doesn’t matter. And while I thought this myself for a long time, I recently came to the conclusion that the color is actually going to make a huge difference and express something different to your audience. There are psychological effects behind each color and tone, therefore I decided to tell you more about them today.

Human senses get excited about lots of stuff. One of the most effective ways to excite somebody is to project a red hue color onto the walls of their room. It’s been done before by scientists and they came with a clear conclusion. A person who lives in a red room has a higher heart rate and blood pressure than a person living in a blue room. This is because red symbolizes excitement, we all know this. There is a reason why fast food companies choose red as their main or secondary color. Good examples are Coca-Cola, McDonald’s, Burger King or Pepsi (although blue is their main color).

Colors Stimulate Senses

Colors can stimulate and excite people, increase their appetite, make them feel warm or make them feel tranquil. Red simply makes you excited according to those who study chromodynamics. Coke’s website is red – it gives you a feel of a lazy, hot summer day – just when you feel the need to drink Coke.

Image Source: StockLogos

There’s more to colors in web design than just the emotional factor. People tend to gamble more under red light conditions than under blue light. This is the main reason behind cities like Las Vegas using a lot of red lights. Colors have impact on performance. Red lights make people act quicker and feel more powerful, which is not always beneficial, while blue makes people think more before acting. There is a reason STOP signs are red – you need to act right away and stop the vehicle you drive, otherwise you are in danger.

Mixing Colors

Mixing colors is beneficial if done the right way. Mixing very complementary colors is also something people do, but it should only be done occasionally. It shouldn’t be overdone because it has a bad effect on people’s eyes. You can think of a black website with pink text. Now that’s an image I would like to get out of my head as soon as possible :) .

There is a very good trick behind using complementary colors together. Drawing a thin neutral white, gray or black line around the two colored shapes will make the eyes see both colors separately. Just look at the Pepsi logo below: red and blue are separated by not only a thin layer of white, but by a quite big one. This white shape blends red and blue better then if they would be placed right on top of each other.

Image source: Pepsi

Colors and Cultures

Moreover, colors mean something else in different parts of the world. While red means luck in China, it means a lack of it in Germany. Huge corporations with lots of financial resources will use large amounts of money to study the effects different colors have on different cultures, before entering a new market. Many think it is impossible, but clients can be lost because of using the wrong colors.

And while huge corporations usually hire experts to do this research for them, the results are not always good. Every designer (and every person in general) has a tendency to like colors or combinations of colors and to use them in different situations because it’s what they personally like. I myself love red and black together, pretty obviously because I’ve been supporting Italian outfit A.C. Milan for almost ten years now. This is not such a good asset when working with colors is your way of earning a salary. It is crucially important for designers to tear all their personal favorites apart and only focus on the clients and their needs.

Colors for a Website

Picking a color for a website means much more then picking your favorite color and turning it into a layout. It means picking the right color in order to get the desired response from your audience. If you know your audience well and figured out which color works best for them, you are already halfway there in the creation process. It is also quite unlikely to pick a color that will fit every visitor of your website, therefore it is even more important to be able to determine which color and tone works best for most users you target.

Image source: 123RF Stock Photos

According to different sources, half of the people visiting a website don’t come back because of the color of the design. The first thing people need to recognize when they see your site are the brand colors. If you have multiple colors and they can’t see the most dominant, it means you should consider a redesign.

  • If you have a blue color scheme, people will likely give you a better response when in a good mood. If you want a clean, white design, it’s fine too. But if you want to make it exciting, use bright red or orange here and there. White and green work great together, and if you want to be stylish and modern without using intense colors, go for white and gray. Such a combination illustrates something glamorous, sleek, fresh and clean. Just look at the classy example below.

  • If you like darker shades, pretty much everything works well with black as long as black is not the dominant color. A website with a black background can be fancy and look good, but is not easy to read. The two simplest combinations you can go for are black and white or black and a bright gray. Although a very powerful contrast, black and orange work really well together, but might require white for balance.
  • If you want to combine both black and white with a color, then they work really well with blue; make sure white is dominant, otherwise you need a very bright blue to dominate. Don’t give black a lot of emphasis in this combination. You can see a good example below. The second example is quite poor and shows how this combination can be put into practice. Not only is the design outdated, but the colors make it even more difficult to bear.

  • Black and white work very well with red too, but make sure red is not dominant, as then it gets too powerful and creates an unbearable contrast with black. You can see two good examples below.

  • A third combination I would recommend is black, white and green, and you can see down below why.

Image source: Website Templates Online

Conclusion

Using the right color in your designs is crucial and I am sure you can see why. Although it might sound wrong, by using the right color in accordance to your audience will increase the likelihood of them doing what you want them to do. But wrong or right, this is what all designers work for, sending a message to an audience and then hoping to get a response from them. If you understand how color psychology works and which color fits your audience, you are a step closer to launching a successful website.

If this message appears to another site than 1stwebdesigner ,it has been stolen, please visit original source!

Gadgets such as mp3 players, usb devices, iPhones, iPads, and other tablets and so on have now become an important part of our lives and these are also one of the most favorite subjects for the designing community. This is the reason why you see loads of gadgets being incorporated into web designs. This can be best achieved by using Adobe Photoshop; and there are heaps of Photoshop tutorials to help you improve your skills and techniques. We have compiled 40 gadget design tutorials that will help you create sensible gadget designs using Adobe Photoshop!

In this round up, we’ll showcase 40 of the most excellent gadget design tutorials from different sources. Look into these high quality tutorials and make learning experience more satisfying.


1. How to Create a Detailed Audio Player

In this tutorial, we will show you how to create a detailed audio player from scratch. This tutorial will be a great opportunity for you to practice those Shape Tools and Layer Styles skills, with lots of adding and subtracting of Shapes. Enjoy!

How to Create a Detailed Audio Player in Photoshop

2. Make a Floating in Air USB Key Illustration

In this tutorial, we will show you how to illustrate a USB key floating in the air and reflecting on a surface. We’ll be adding numerous details that will make this illustration shine.

Make a Floating in Air USB Key Illustration

3. Design an MP3 Player

In this tutorial you will learn how to design a product in Photoshop. The product is a RCA Lyra X3030 portable media player, the reason for this tutorial is to teach people the techniques used for mocking up a product design.

Design an MP3 Player

4. Create an USB Portable Audio Speaker Design

In this tutorial we will show you how to create a Photoshop design USB portable speaker logo icon in photoshop.

Create an USB Portable Audio Speaker Design in Photoshop

5. Photoshop Design Bluethoth Logo Icon

In this tutorial we will show you how to create a Photoshop design bluethoth logo icon in photoshop.

Photoshop design bluethoth logo icon in photoshop

6. Designing Canon Digital Camera

In this detailed tutorial we will learn how to design Canon digital camera.

Designing Canon Digital Camera

7. Nokia 5300 Cell Phone Interface

This tutorial shows you how to use multiple vector shapes, layer styles, and various tools to create a mobile phone design. It’s a nice design with multiple small details explained.

Nokia 5300 Cell phone interface

8. Creating a CD Player in Photoshop Tutorial

In this tutorial you will learn how to create a realistic cd player image shown below.

Creating a CD PLayer in Photoshop Tutorial

9. Design a Vintage Radio Icon in Photoshop

In this photoshop tutorial, you will learn how to design an old vintage radio using simple shapes, gradients, patterns and textures.

Design a Vintage Radio Icon in Photoshop

10. Learn to Create a Simple Yet Pleasing Music Player

In this tutorial we will walk you through the steps of creating a simple yet pleasing music player in adobe photoshop. Lets get going…

11. Make a Watch in Photoshop

In this tutorial you will learn how to create a watch from scratch in Adobe Photoshop. We will guide you step by step until it is complete.

Make A Watch In Adobe Photoshop

12. How to Create a Super Retro Style Game Controller

In this tutorial, we’re going to be drawing a retro game console controller. Rather than a perspective look, this one will have an isometric look. This tutorial is extremely detailed, and will be fun for all you classic arcade lovers.

How to Create a Super Retro Style Game Controller

13. Draw a Sound Dock System

In this tutorial we will demonstrate how to draw a Sound Dock System with Photoshop. Let’s get started!

Draw a Sound Dock System With Photoshop

14. Creating an iOS Device Connector in Photoshop

In this tutorial you will see how to make a pixel-perfect iOS Device Connector design from scratch.

Creating an iOS Device Connector in Photoshop

15. 3D Mp3 Player

In this detailed tutorial you will learn how to create an outstanding 3D Mp3 Player.

3D Mp3 Player

16. MP3 Player Illustration

In this tutorial you will learn how to create a beautiful MP3 Player Illustration.

MP3 Player Illustration

17. Create a Motorola Droid Style Phone

Recreating electronic devices in Photoshop is a great way to learn. In this tutorial, we will demonstrate how to create a Motorola Droid style phone in Photoshop. Let’s get started!

Create a Motorola Droid Style Phone in Photoshop

18. Clean Mobile Login Screen Tutorial

Mobile design is getting bigger and bigger as the weeks go by, its only a matter of time before mobile design tutorials start popping up in every tutorial website. So to kick it off we will be showing you how to create a simple mobile login screen.

Clean Mobile Login Screen Tutorial

19. Render a High Detail Leica M8 Camera

Learn how to recreate this stunning image of a limited edition white Leica M8. This is a very lengthy Photoshop tutorial that will show you every step of the process. A PSD with 186 layers is included at the end of the tutorial.

Render a High Detail Leica M8 Camera with Photoshop

20. Strawberry Cell Phone

In this tutorial we will teach you how to create a beautiful Strawberry Cell Phone.

Strawberry Cell Phone

21. Creating a Set of Digital Painting Icons

In this tutorial we will create a pen tablet from scratch, specifically the Wacom 12″ Cintiq tablet. This model combines touch and pressure sensitivity, which allows users to draw directly on the screen. These capabilities make it a favorite for illustrators. Let’s get to work.

Creating a Set of Digital Painting Icons Part 4 – Digital Tablet Icon

22. Bamboo Fun Tablet

In this tutorial you will learn how to create an awesome Bamboo Fun tablet.

Bamboo Fun tablet

23. Create a Sidekick LX Styled Vector Illustration

This tutorial will show you how to make a vector illustration of the Sidekick LX. This tutorial uses mostly the Pen tool, basic shapes, and simple gradients to give this illustration a degree of realism. In this tutorial, you’ll learn quick ways to make stylized vector illustrations.

Create a Sidekick LX Styled Vector Illustration

24. Design a Colorful USB Flash Stick with Tattoo Style Decals

In this tutorial, we’ll explain how to create a semi-realistic flash stick with gradients and simple shapes. We will make our own custom brush to create tattoo style swooshes. Also, we’ll review how to use Global Colors in Illustrator, which allows us to flexibly change the colors of an object on the fly.

Design a Colorful USB Flash Stick with Tattoo Style Decals

25. Draw an MP3 Player

In this detailed tutorial you will learn how to create an MP3 Player.

Draw an MP3 Player

26. USB Stick Tutorial

In this tutorial we are going to teach you how to design an awesome USB device.

USB Stick Tutorial

27. Design a Shiny Photorealistic Apple Remote

Apple has so many beautiful products. Their product designs consistently attain a sought-after status, which distinguishes them as an innovative company. In this tutorial, we will teach you how to make a shiny new apple remote.

Design a Shiny Photorealistic Apple Remote

28. How to Create a Detailed Apple iPad Icon

In this tutorial we will be showing you how to create a Detailed Apple iPad Icon in Photoshop

How To Create a Detailed Apple iPad Icon in Photoshop

29. Design an HTC

With this tutorial we will see how to create a smartphone HTC starting from the beginning. At first sight it seems a long job but, we can assure, it is not difficult at all. We are going to use several simple shapes, such as rectangles and circles and each one will be formatted in different styles.

Design an HTC

30. Learn To Create A Sleek Shiny Mouse

In this tutorial we will be showing you how to create a sleek shiny mouse from scratch using adobe photoshop CS5. Lets get started.

Learn To Create A Sleek Shiny Mouse

31. How to Draw a Realistic Mobile Phone

In this Photoshop tutorial, we will draw a realistic mobile device. Our aim is to make our work appear so realistic that it looks just like a regular product shot.

How to Draw a Realistic Mobile Phone with Photoshop

32. Blackberry Fruit phone

This is step by step photoshop tutorial that teaches you how to create original and nice blackberry glossy device concept design from blackberry photo using simple tools, filters and layer style effects.

Blackberry Fruit phone

33. Create a Sony Playstation 3 (PS3)

This tutorial teaches you how you can create a realistic looking Sony Playstation using Adobe Photoshop. Each stage is simply outlined allowing you to follow along.

Create a Sony Playstation 3 (PS3) in Photoshop

34. Create iPhone From Scratch in Photoshop

In this tutorial you will learn how to create iPhone from Scratch in Photoshop.

Create iPhone from Scratch in Photoshop

35. Make an Apple iPod Classic in Photoshop

In this tutorial you will be learning how to create an iPod classic but also you can use the same technique to make an iPod nano.

Make an Apple iPod Classic in Photoshop

36. MP3 Player Photoshop Tutorial

In this tutorial you will design an interface for a modern MP3 player.

MP3 Player Photoshop Tutorial

37. Create a Realistic Blackberry Style Mobile Phone From Scratch

In this tutorial you will learn how to create a Realistic Blackberry Style Mobile Phone From Scratch.

Create a Realistic Blackberry Style Mobile Phone From Scratch

38. Create a Vector-Based Zune with Photoshop

In this tutorial you will learn how to create a Vector-Based Zune with Photoshop.

Create a Vector-Based Zune with Photoshop

39. How to Create a Realistic Nintendo Game Boy

In this tutorial we will be creating a realistic water text effect that is sure to catch someones eyes. This tutorial requires some basic knowledge of Photoshop and how to work in it’s environment.

How to Create a Realistic Nintendo Game Boy

40. iPod Shuffle From Scratch

In this tutorial you will learn how to re-create an Apple iPod Shuffle by using the original image from apple’s website as a reference and using the gradient tool, layer masks and basic selection and guide techniques.

iPod Shuffle From Scratch

If this message appears to another site than 1stwebdesigner ,it has been stolen, please visit original source!

Are you in the process of managing multiple websites powered by WordPress, and feel lost somewhere? Perhaps you can never be sure whether you’ve updated that plugin on this site or this plugin on that site. After all, if you have multiple websites, each with its own share of plugins, themes and settings, how exactly can you be expected to have time for anything other than website management?

If the above mentioned situation seems apt for you, InfiniteWP is one tool that you should try!

To Begin With…

Well, let’s leave the definition to InfiniteWP itself:

“InfiniteWP simplifies your WordPress management tasks into a quick click of a button, so you can spend your time on more important things.”

In other words, InfiniteWP is a tool that can be used to manage multiple installations of WordPress, irrespective of the domain and/or server that those installations are on. You can install InfiniteWP on your own server, have one master login for its admin panel, and update as well as manage all your existing WP installations from that panel itself. No need to manually update each and every plugin across multiple installations. Further more, you can also use InfiniteWP for backup and restore – all using one Master login.

InfiniteWP

Sounds interesting, doesn’t it?

And it doesn’t cost you a penny! Yes, you read that right. InfiniteWP is free, though there are certain Premium addons in the pipeline (but the product overall is free to download).

With the introduction out-of-the-way, let us now take a deeper plunge and see what InfiniteWP can really accomplish.

Under the Hood

To begin with, you will need to download and install InfiniteWP on your server. Of course, there is a Tour that you can take before you decide whether the tool is worth the efforts or not.

Once installed, and logged in, you are greeted with a nimble and neat Admin Panel that lists all your stuff in an easy to use manner.

InfiniteWP Interface

InfiniteWP Interface

Obviously, the first thing that you will need is the ability to add your WP sites. You’ll find a small button at the lower left section of the screen, that proclaims “Add your WordPress sites here”.

Adding a new site

Adding a new site

You will be required to enter details such as website URL, admin user name and an activation key (which is displayed once you install the InfiniteWP plugin on your site).

Once the site has been added, you will find it mentioned in the admin panel.

Different Views in InfiniteWP

Different Views in InfiniteWP

In the Updates view, you can choose to view on the basis of website, plugins, themes or WP version, all neatly followed by the handy ‘Update All’ link.

InfiniteWP lets you update your WP sites with ease

InfiniteWP lets you update your WP sites with ease

The second view is the Plugins and Themes view, wherein you can manage and install new plugins and themes. Taking a closer look, in the Install Themes pane, you need to select the website, decide whether to automatically activate the new theme, and then specify the source – the WP repository, ZIP file upload, theme URL, and so on. You can install the same theme across multiple sites too.

Installing a theme using InfiniteWP

Installing a theme using InfiniteWP

You can perform backups on your sites – just select the website (single or multiple, as you wish), then decide whether to backup just the files or the database as well, and specify any additional measures (exclusions, inclusions, etc.). That’s it! You’re good to go.

Performing backups using InfiniteWP

Performing backups using InfiniteWP

InfiniteWP also keeps a handy activity log, as shown below.

Activity Logs in InfiniteWP

Activity Logs in InfiniteWP

Final Words

So, is InfiniteWP worth it? Definitely yes! If you are running WordPress across multiple websites and need an easy solution to manage all your installations, InfiniteWP should be your safest bet! Further more, if the current set of features doesn’t impress you, the premium features that are in the making will surely leave a mark – integration with Google Analytics, backup to Amazon S3 and Dropbox, front-end editor and the ability to manage users.

InfiniteWP has its own support forum where you can seek help, if so needed.

With that said, we leave you with a video of InfiniteWP in action.

What do you think of this tool? Will you be using it to manage your WP sites? Feel free to share your thoughts!

This tutorial will cover the process of creating a basic Joomla module from an existing widget. We’re going to take a widget from Mixcloud, learn how to convert it into a Joomla module and, finally, distribute the extension to JED (Joomla Extension Directory).

If you’ve never created a Joomla module before, this article is the best place to start!


Step 1: Setting up Our Files

Basic Files

For every module created for Joomla, there are two files that absolutely need to be present. One file is a configuration XML file that will hold the module details and parameters and a PHP file that will control our module. For the purpose of this tutorial, we will create a folder called mod_mixcloud_widget and, within it, using your favorite code editor, create mod_mixcloud_widget.php and mod_mixcloud_widget.xml. Before we move on to the next step, create a single HTML file named index.html.The index.html file that was created will be used to hide the contents of the module folder when viewing via a browser.

Template Files

Now that you’ve added the core files, it’s time to add the template files. We do this by creating a folder called tmpl. Within that folder, we create default.php and index.html. The file default.php will be the module template that will take generated information and output them into clean HTML format on the page.

Language Files

Lastly, while inside our root module folder, we create a new folder called language. This folder will have two files: en-GB.mod_mixcloud_widget.ini and en-GB.mod_mixcloud_widget.sys.ini which will be used to make our module internationable with the option of having different languages.

Final File Structure

After following each step, you should have the following file structure

  • language/en-GB.mod_mixcloud_widget.ini
  • language/en-GB.mod_mixcloud_widget.sys.ini
  • tmpl/default.php
  • tmpl/index.html
  • index.html
  • mod_mixcloud_widget.php
  • mod_mixcloud_widget.xml

Step 2: Setting Up Our XML File

Each Joomla Extension installed has an XML file, which is referred to as a manifest or Install file. This file contains metadata details, such as author, version, description etc. It is also used as a configuration file for module prameters. For the purpose of this tutorial, we will be creating a manifest file for a Joomla 2.5 module. Add the following snippet to your XML file.

<?xml version="1.0" encoding="utf-8"?>
<extension 	type="module"	version="2.5"	client="site"	method="upgrade">
	<name>MOD_MIXCLOUD_WIDGET</name>
	<author>B4ucode</author>
	<creationDate>May 2012</creationDate>
	<copyright>Copyright (C) 2011 - 2012. All rights reserved.</copyright>
	<license>GNU General Public License version 2 or later;</license>
	<authorEmail>info@b4ucode.com</authorEmail>
	<authorUrl>www.b4ucode.com</authorUrl>
	<version>1.0.0</version>
	<description>MOD_MIXCLOUD_WIDGET_XML_DESCRIPTION</description>

The primary tag extension has a few attributes:

  • type: Tells Joomla what type of extension is being installed, in this case module.
  • version: Instructs the installer what version of Joomla we are creating the module for.
  • method: There are two options: new and upgrade. We will be using upgrade, in case of any future updates to the module, it will simply upgrade what is currently there.
  • client: Instructs whether the module is a front-end or back-end module.

The other set of tags are metadata tags which hold information about the module which will be used during installation and the administration of the module.

Module Files

As mentioned before, the manifest file holds information about the files used in the module. During installation, Joomla checks the manifest file for all the files that should be added to the system. If any of the files are missing, then Joomla will give an error explaining the files that are missing. Any files found in the module, that aren’t listed in the XML file are not added to the system with the others. Add the following snippet to your manifest file.

	<files>
		<filename module="mod_mixcloud_widget">mod_mixcloud_widget.php</filename>
		<folder>tmpl</folder>
		<filename>index.html</filename>
		<filename>mod_mixcloud_widget.xml</filename>
	</files>

Instead of writing a line for each file in a folder, we simply use the folder element. This element will instruct the installer to install all the files in this folder.

Language Files

This element holds the language files that are to be installed with the module. For the purpose of this tutorial, only one language will be used. When there are more languages, you can simply change the prefix of the files and the tag attribute to the exact language based on the Joomla framework.

	<languages>
		<language tag="en-GB">language/en-GB.mod_mixcloud_widget.ini</language>
		<language tag="en-GB">language/en-GB.mod_mixcloud_widget.sys.ini</language>
	</languages>

Adding Parameters

Some extensions don’t work right out of the box, but need certain settings added: these settings are called, parameters, and are defined in the manifest file.

The first element is config which holds other elements that will be displayed in HTML format. The element called field is the meat of our parameters where you can define what type of form data you wish to display. This element at its basic level is made up of some core attributes:

  • type: Type of form field like text, textarea, checkboxes, radio and calendar.
  • name: The name element of the form field to displayed.
  • default: Default value of the field.
  • label: Text displayed at the beginning of our form field.
  • description: Description that will be shown in a tooltip when hovering on our form field
  • There are different attributes as they vary per form field type like size, filter, exclude, directory and more.

    	<config>
    		<fields name="params">
    			<fieldset name="basic">
    				<field type="text" name="feed" default="" label="MOD_MIXCLOUD_WIDGET_FEED_TITLE" description="MOD_MIXCLOUD_WIDGET_FEED_DESC" />
    				<field name="color" type="color" default="" label="MOD_MIXCLOUD_WIDGET_COLOR_TITLE" description="MOD_MIXCLOUD_WIDGET_COLOR_DESC" />
    				<field name="width" type="text" default="300" size="40" label="MOD_MIXCLOUD_WIDGET_WIDTH_TITLE" description="MOD_MIXCLOUD_WIDGET_WIDTH_DESCRIPTION" />
    				<field name="height" type="text" default="300" size="40" label="MOD_MIXCLOUD_WIDGET_HEIGHT_TITLE" description="MOD_MIXCLOUD_WIDGET_HEIGHT_DESCRIPTION" />
    			</fieldset>
    			<fieldset
    				name="advanced">
    				<field
    					name="layout"
    					type="modulelayout"
    					label="JFIELD_ALT_LAYOUT_LABEL"
    					description="JFIELD_ALT_module_LAYOUT_DESC" />
    				<field
    					name="moduleclass_sfx"
    					type="text"
    					label="COM_moduleS_FIELD_moduleCLASS_SFX_LABEL"
    					description="COM_moduleS_FIELD_moduleCLASS_SFX_DESC" />
    				<field
    					name="owncache"
    					type="list"
    					default="1"
    					label="COM_moduleS_FIELD_CACHING_LABEL"
    					description="COM_moduleS_FIELD_CACHING_DESC">
    					<option value="1">JGLOBAL_USE_GLOBAL</option>
    					<option	value="0">COM_moduleS_FIELD_VALUE_NOCACHING</option>
    				</field>
    			</fieldset>
    		</fields>
    	</config>
    </extension>
    

    You may notice that we have written labels and description in some uppercase characters like MOD_MIXCLOUD_WIDGET_FEED_TITLE. These are strings that we will make translatable when creating our language files.

    Finished XML File

    If you’ve followed thus far, you should have a completed XML File like following

    <?xml version="1.0" encoding="utf-8"?>
    <extension 	type="module"	version="2.5"	client="site"	method="upgrade">
    	<name>MOD_MIXCLOUD_WIDGET</name>
    	<author>B4ucode</author>
    	<creationDate>May 2012</creationDate>
    	<copyright>Copyright (C) 2011 - 2012 Open Source Matters. All rights reserved.</copyright>
    	<license>GNU General Public License version 2 or later;</license>
    	<authorEmail>info@b4ucode.com</authorEmail>
    	<authorUrl>www.b4ucode.com</authorUrl>
    	<version>1.0.0</version>
    	<description>MOD_MIXCLOUD_WIDGET_XML_DESCRIPTION</description>
    	<files>
    		<filename module="mod_mixcloud_widget">mod_mixcloud_widget.php</filename>
    		<folder>tmpl</folder>
    		<filename>index.html</filename>
    		<filename>mod_mixcloud_widget.xml</filename>
    	</files>
    	<languages>
    		<language tag="en-GB">language/en-GB.mod_mixcloud_widget.ini</language>
    		<language tag="en-GB">language/en-GB.mod_mixcloud_widget.sys.ini</language>
    	</languages>
    	<config>
    		<fields name="params">
    			<fieldset name="basic">
    				<field type="text" name="feed" default="" label="MOD_MIXCLOUD_WIDGET_FEED_TITLE" description="MOD_MIXCLOUD_WIDGET_FEED_DESC" />
    				<field name="color" type="color" default="" label="MOD_MIXCLOUD_WIDGET_COLOR_TITLE" description="MOD_MIXCLOUD_WIDGET_COLOR_DESC" />
    				<field name="width" type="text" default="300" size="40" label="MOD_MIXCLOUD_WIDGET_WIDTH_TITLE" description="MOD_MIXCLOUD_WIDGET_WIDTH_DESCRIPTION" />
    				<field name="height" type="text" default="300" size="40" label="MOD_MIXCLOUD_WIDGET_HEIGHT_TITLE" description="MOD_MIXCLOUD_WIDGET_HEIGHT_DESCRIPTION" />
    			</fieldset>
    			<fieldset
    				name="advanced">
    				<field
    					name="layout"
    					type="modulelayout"
    					label="JFIELD_ALT_LAYOUT_LABEL"
    					description="JFIELD_ALT_module_LAYOUT_DESC" />
    				<field
    					name="moduleclass_sfx"
    					type="text"
    					label="COM_moduleS_FIELD_moduleCLASS_SFX_LABEL"
    					description="COM_moduleS_FIELD_moduleCLASS_SFX_DESC" />
    				<field
    					name="owncache"
    					type="list"
    					default="1"
    					label="COM_moduleS_FIELD_CACHING_LABEL"
    					description="COM_moduleS_FIELD_CACHING_DESC">
    					<option value="1">JGLOBAL_USE_GLOBAL</option>
    					<option	value="0">COM_moduleS_FIELD_VALUE_NOCACHING</option>
    				</field>
    			</fieldset>
    		</fields>
    	</config>
    </extension>
    

    Step 3: Creating mod_mixcloud_widget.php

    The first thing you want to with your module is to add your copyright notice. If you intend to submit your module to JED [Joomla Extension Directory], you should add some GPL license information.

    This is one of the checks done before approving a module into the directory. Directly below this, I use the statement defined('_JEXEC') or die; which is used in most PHP files to protect against hackers. This is also another requirement for approval on JED.

    <?php
    /**
     * @package		B4ucode
     * @subpackage	mod_mixcloud_widget
     * @copyright	Copyright (C) 2011 - 2012 B4ucode, Inc. All rights reserved.
     * @license		GNU General Public License version 2 or later;
     */
    // no direct access
    defined('_JEXEC') or die;
    

    Next, we define our paramaters as variables. Developers sometimes define their paramaters as variables in order to have cleaner template files. In order to call a paramaters we use the $params->get() function and get the param name defined in our manifest file. Finally, we call the module Helper function, getLayoutPath, which will render our module template. The first argument of the function takes the module name that we are trying to call, then the second argument looks for the template we intend to render for that module. In this case, we get the parameter layout and in the second argument we set the default layout to be default. This layout is the exact name of the file that we have in our tmpl folder.

    $width = $params->get('width',300);
    $height = $params->get('height',300);
    $feed = $params->get('feed');
    $color = $params->get('color');
    $moduleclass_sfx = htmlspecialchars($params->get('moduleclass_sfx'));
    require JmoduleHelper::getLayoutPath('mod_mixcloud_widget', $params->get('layout', 'default'));
    ?>
    

    Finished File

    	<?php
    /**
     * @package		B4ucode
     * @subpackage	mod_mixcloud_widget
     * @copyright	Copyright (C) 2011 - 2012 B4ucode, Inc. All rights reserved.
     * @license		GNU General Public License version 2 or later;
     */
    // no direct access
    defined('_JEXEC') or die;
        $width = $params->get('width',300);
        $height = $params->get('height',300);
        $feed = $params->get('feed');
        $color = $params->get('color');
        $moduleclass_sfx = htmlspecialchars($params->get('moduleclass_sfx'));
        require JmoduleHelper::getLayoutPath('mod_mixcloud_widget', $params->get('layout', 'default'));
    ?>
    

    Step 4: Creating default.php

    At this point, we have created our manifest file with paramaters, took those same parameters and turned them into variables. In this step, we are going to use those variables in our template file. The template file will render all of our HTML for the module. Edit default.php from your tmpl folder and add the following snippets:

    Copyright Notice and Restricted Access Script

    <?php
      /**
     * @package		B4ucode
     * @subpackage	mod_mixcloud_widget
     * @copyright	Copyright (C) 2011 - 2012 B4ucode, Inc. All rights reserved.
     * @license		GNU General Public License version 2 or later;
     */
     // no direct access
    defined( '_JEXEC' ) or die( 'Restricted access' );
    

    It is recommended that you add the Copyright Notice and Restricted Access line to your PHP files.

    Adding our HTML

    For this tutorial, we will need the embed code from Mixcloud. Here is an example on getting the code . Our module’s purpose is to make the code reusable without having to get the embed each time we want to create or modify a Mixcloud Widget on our site. The default embed code comes with some extra information about the widget content which we don’t need. So for this tutorial, I have stripped it down to just the embed script. Paste this embed code to your default.php file.

    <div><object width="480" height="480"><param name="movie" value="http://www.mixcloud.com/media/swf/player/mixcloudLoader.swf?feed=http%3A%2F%2Fwww.mixcloud.com%2FMaryAnneHobbs%2Fthom-yorke-moneyback-mix-xfm-music-response-150911%2F&amp;embed_uuid=5d6c18a4-a837-409e-8cec-23ab44372842&amp;stylecolor=&amp;embed_type=widget_standard"></param><param name="allowFullScreen" value="true"></param><param name="wmode" value="opaque"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.mixcloud.com/media/swf/player/mixcloudLoader.swf?feed=http%3A%2F%2Fwww.mixcloud.com%2FMaryAnneHobbs%2Fthom-yorke-moneyback-mix-xfm-music-response-150911%2F&amp;embed_uuid=5d6c18a4-a837-409e-8cec-23ab44372842&amp;stylecolor=&amp;embed_type=widget_standard" type="application/x-shockwave-flash" wmode="opaque" allowscriptaccess="always" allowfullscreen="true" width="480" height="480"></embed></object></div>
    

    Making the Script Configurable

    If we wanted to embed one widget permanently, we could just zip up the module right now. However we don’t, so we are going to replace some of the attributes with our module params . We’re going to change the width, height, color and feed. Paste the following snippet over your embed script.

    	<div><object width="<?php echo $width; ?>" height="<?php echo $height; ?>">
    <param name="movie" value="http://www.mixcloud.com/media/swf/player/mixcloudLoader.swf?feed=<?php echo $feed; ?>&amp;embed_uuid=&amp;stylecolor=<?php echo $color; ?>&amp;embed_type=widget_standard"></param><param name="allowFullScreen" value="true"></param><param name="wmode" value="opaque"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.mixcloud.com/media/swf/player/mixcloudLoader.swf?feed=<?php echo $feed; ?>&amp;embed_uuid=&amp;stylecolor=<?php echo $color; ?>&amp;embed_type=widget_standard" type="application/x-shockwave-flash" wmode="opaque" allowscriptaccess="always" allowfullscreen="true" width="<?php echo $width; ?>" height="<?php echo $height; ?>"></embed></object>
    </div>
    

    Take note of how we are just calling the variables from our controller file.


    Step 5: Creating Language Files

    In step one, you might have noticed that we created a folder, called language, with two files. Then, in step two, we added some translatable text. In this section, we are going to translate that text to English. Insert the following snippet to the ini files, en-GB.mod_mixcloud_widget.sys.ini and en-GB.mod_mixcloud_widget.ini.

    ; B4ucode
    ; Copyright (C) 2011 - 2012 B4ucode. All rights reserved.
    ; License GNU General Public License version 2 or later;
    ; Note : All ini files need to be saved as UTF-8 - No BOM
    
    MOD_MIXCLOUD_WIDGET="Mixcloud Widget"
    MOD_MIXCLOUD_WIDGET_XML_DESCRIPTION="This module displays the Mixcloud Widget using feed and other paramaters"
    MOD_MIXCLOUD_WIDGET_ITEMS_LAYOUT_DEFAULT="Default"
    MOD_MIXCLOUD_WIDGET_FEED_TITLE="Feed Url"
    MOD_MIXCLOUD_WIDGET_FEED_DESC="Add the link to single/cloudcast"
    MOD_MIXCLOUD_WIDGET_COLOR_TITLE="Color"
    MOD_MIXCLOUD_WIDGET_COLOR_DESC="Add Style color"
    MOD_MIXCLOUD_WIDGET_WIDTH_TITLE="Width"
    MOD_MIXCLOUD_WIDGET_WIDTH_DESCRIPTION="Width of Widget"
    MOD_MIXCLOUD_WIDGET_HEIGHT_TITLE="Height"
    MOD_MIXCLOUD_WIDGET_HEIGHT_DESCRIPTION="Height of Widget"
    

    If you look closely, you will notice that the text I used for the parameters now have an English translation. You can add other files and create translations in other languages!


    Step 6: Packaging the Module

    After following all the steps thoroughly, your module is now installable, but we’d like to make a checklist of things to do before installation and distribution.

    Add index.html to Folders

    It is recommended that you add a index.html file to each folder. This file, as mentioned previously, stops users from viewing the contents of a module folder directly in a browser. Add the following snippet to your files:

    	<html><body bgcolor="#FFFFFF"></body></html>
    

    Comparing our File Structure to the Manifest File

    At this stage, it is recommended that you look at the files and folder defined in your manifest file, and make sure they exist in your module folder. Any file that does not exist can stop the installer from installing files, or, it may throw an error.

    Packaging

    After our little checklist, we can package the module into a zip file, and install it.

    By navigating to the modules manager, and selecting the module, you can modify the paramaters with your desired width, height, color and song feed.

    Enable the module and check to see if it operates the way that it should.


    Step 7: Submitting to JED

    Locating the Category

    After registering to JED, one of the main things to note is that you cannot add an extension to multiple sections. So, choosing the appropriate section is very important. Find a suitable section by browsing the site then looking at the top left cornder you will see Submit Extension

    Filling Out the Details

    Once you’ve chosen to submit an extension, there will be a form to fill in all the details about your submission. Review the screenshots below to see the different fields to be filled out, and read the instructions carefully.

    Success Image

    Once all the appropriate fields and files have been submitted, you will see a message like the screenshot above; it will explain how many submissions are in the queue to be checked prior to yours.


    Conclusion

    Now that you’ve learned how to create a Joomla module from a widget, go forth and code. With the basics of this tutorial, the same idea can be applied to Facebook plugins, Twitter widgets, Social bookmarkers, Youtube video embeds, and so much more. Happy Coding!


If this message appears to another site than 1stwebdesigner ,it has been stolen, please visit original source!

Responsive websites are hot right now, and they will be a requirement for every website in the coming months as the shift from browsing the internet through desktop computers to mobile devices increases. We know that many of you don’t have the time to code your own responsive website, and we also know that cheap premium solutions is always welcome. As such, we present to you 30 of the most highly rated Responsive WordPress Themes!

1. Good Space $35

Features:

  • SEO Optimized
  • Unlimited Color
  • 6 Footer Layouts
  • 4 Blog styles
  • 450+ Fonts Available
  • Drag Drop Page Builder
  • Drag Drop Slider Manager
  • Built-in Translator
  • Built-in Shortcodes
  • Font Uploader
  • Logo Uploader
  • Background Uploader
  • 15 Pre-Defined Background Patterns
  • Thumbnail Options

More Info & Live Demo

2. Look $35

Features:

  • Unique tile system with many compositions to select from
  • Extensive theme options, everything is styleable over the interface, easy to customize
  • Unlimited color and background options
  • Creates re-colored versions of icons and layout images automatically (no need to fire up Photoshop)
  • Dynamic stylesheet generated from theme options
  • Modular front page with categories and tile groups
  • Many individual settings for every single post or static page
  • Streched or boxed layout
  • Navigation centered or at the top
  • Smart picture resizing, define the direction of cropping for each image (no Timthumb)
  • Dynamic sidebars inside tile system
  • Full width slider

More Info & Live Demo

3. Reason WP

Features:

  • Filterable Portfolio/Gallery system
  • The Skeleton Slider: A Responsive Slider system – Powerful, customizable carousel slider with 7 transition effects and
  • complete control over timing, auto play, etc.
  • Custom post/page features: captions, sliders, galleries, etc.
  • Responsive Videos… at last!
  • 30 “core” shortcodes (the usual: buttons, videos, maps, documents, tables, accordions, tabs, sliders, elves, trolls,
  • wizards, etc.)
  • The Basix: lightbox, image overlay effects, compliantly coded CSS3 (coded to work or degrade gracefully on old
  • browsers), form elements, brandable admin panel, etc. Everything you would expect from a premium HTML framework…
  • A Host of new responsive features not seen in previous SS themes (including a new Skeleton Slider system).
  • Dynamic Sidebar spaces.
  • A brand new, responsive “To the Top” plugin, perfect for long pages on cell phones.

More Info & Live Demo

4. Confidence

Features:

  • Responsive layout
  • 80+ theme options
  • Unlimited skin colors
  • Shortcodes with preview
  • Unlimited sidebar for posts, portfolios and pages with drag & drop sidebar manager
  • 3 layout options (left sidebar, right sidebar & fullwidth) for each pages including contact page, portfolio and gallery
  • 3 post formats (audio, video & image)
  • Portfolio Post Type
  • 2 Gallery Styles
  • Automatically generated vimeo and youtube video thumbnails
  • jQuery jPlayer
  • 2 WP 3 .0+ menus
  • 11 custom widgets

More Info & Live Demo

5. Arcadia $35

Features:

  • Responsive Layout
  • Unlimited Color
  • Post Formats Supported
  • 5 Custom Widgets
  • 27+ Background Pattern
  • SEO Optimized
  • Unlimited Sidebars
  • HTML 5 Ready
  • Audio & Video Support
  • Awesome Contact Form Builder
  • Filterable Portfolio 2,3 and 4 Columns Supported
  • Shortcode Generator (Columns, Buttons, Toggles, Tabs, Alerts)
  • Localisation Support
  • 200+ Google Fonts
  • 1,2,3 and 4 Footer Columns

More Info & Live Demo

6. Sentence

Features:

  • 15 predefined skins, easy to edit and modify. Any number of skins possible
  • Supports Videos from any major video hosting service
  • Visual Shortcode editor with preview function
  • Custom Widgets like: Combo Widget, Recent News, Recent Portfolio entries, Advertising, Twitter, Twitter + RSS follower
  • count
  • Color picker options for any number of gorgeous color settings.
  • Unqiue Sidebars for each page/category possible
  • Extensive User Manual and professional theme support by me and my team to fix any kind of problems!
  • jQuery 100% unobtrusive wich degrades gracefully if javascript is turned off
  • Code built with SEO best practice in mind
  • PSDs included

More Info & Live Demo

7. Website $35

Features:

  • 8 Custom Widgets
  • Translation to 4 languages
  • FIlterable portfolio
  • Galleries + Fancybox
  • 500+ fonts
  • Indpenedent menus for desktop and mobile versions
  • 11 shortcodes
  • Smart images loading
  • 110 social media icons + 100 special icons

More Info & Live Demo

8. Alyeska $35

Features:

  • HTML5 and CSS tableless design
  • Responsive design for all screen resolution sizes
  • Option to turn special stylesheet that targets tablets and mobile devices off or on.
  • Unbranded Theme Options Panel
  • Layout Builder
  • Slider Manager
  • Widget Area Manager
  • 6 Sidebar Layouts
  • Tons of shortcodes with shortcode generator

More Info & Live Demo

9. Core Minimalist Photography Portfolio $35

Features:

  • 3 Homepage styles
  • Full Screen slideshow for Photo Gallery
  • Built-in Font Manager. You can upload your own font
  • Extensive galleries admin. Support multiple images upload
  • 4 Portfolio styles
  • 8 Custom Widgets
  • Styled typography and flexible page columns
  • Built-in Many Shortcodes
  • Style shortcodes ex. dropcap etc.
  • Media shortcades ex. video, slideshow, image gallery etc.
  • Column shortcodes ex. 2, 3, 4, 5, 6 columns
  • Built-in Shortcode Generator plugin

More Info & Live Demo

10. Reaction WP $35

Features:

  • Fully Responsive WordPress Theme and Theme-Options Manager
  • SEO / SEM – Search Engine Optimized and Ready for Marketing
  • The Super Skeleton UI Kit (Exclusive Freebie PSD )
  • Fully internationalized and ready for translation!
  • 3 Minimal skins and 2 fontstacks to start with. (Adding 100+ skins is really silly if you ask me )
  • Individual Skinnable PSD files for all major UI elements
  • Organized CSS files, including easy to use Media-Queries sections.
  • Filterable Portfolio/Gallery system
  • Non-Obtrusive Javascript. All major site elements work even on old browsers.
  • The basics: lightbox, image overlay effects, CSS3 (coded to work or degrade gracefully on old browsers), form elements,
  • brandable footer, etc. Everything you would expect from a premium HTML framework.
  • Extensive Documentation

More Info & Live Demo

11. Angular $35

Features:

  • Translation ready with mo/po files
  • Responsive designs that addapts to smaller devices (iphone, ipad)
  • Responsive Slideshow that is optimized for mobile devices (hardware accelerated CSS3 slider)
  • Post Format Support: Standard, Gallery, Link, Quote
  • Multiple Slideshows possible. YOu can add one to each post, page or portfolio entry
  • Forum plugin ready:bbpress forum plugin
  • 28 predefined skins, easy to edit and modify. Any number of skins possible
  • Greyscaleing feature for portfolio entries (can of course be deactivated from the backend)
  • Supports Videos from any major video hosting service as well as self hosted HTML5 Videos with flash fallback
  • Template Builder for unique page layouts (Landing Pages, Frontpages, Videopages etc)
  • Visual Shortcode editor with preview function
  • Custom Widgets like: Combo Widget, Recent News, Recent Portfolio entries, Advertising, Twitter, Twitter + RSS follower
  • count

More Info & Live Demo

12. Super Skeleton $35

Features:

  • Fully Responsive WordPress Theme and Theme-Options Manager
  • SEO / SEM – Search Engine Optimized and Ready for Marketing
  • 20 Bonus HTML Template Files (showcasing the flexibility of the framework)
  • The Super Skeleton UI Kit (Exclusive Freebie PSD )
  • 3 Minimal skins and 2 fontstacks to start with. (Adding 100+ skins is really silly if you ask me )
  • Fully internationalized and ready for translation!
  • Individual Skinnable PSD files for all major UI elements
  • Organized CSS files, including easy to use Media-Queries sections.
  • Filterable Portfolio/Gallery system

More Info & Live Demo

13. Propulsion Business & eCommerce

Features:

  • Responsive designs that addapts to smaller devices (iphone, ipad)
  • 3 different responsive Slideshows (Adaptavia, Fade Slider, Moving Slider) that are optimized for mobile devices
  • (hardware accelerated CSS3 slider)
  • Post Format Support: Standard, Gallery, Link, Quote
  • Multiple Slideshows possible
  • Buildt on top of the woocommerce shop plugin
  • Forum plugin ready:bbpress forum plugin
  • 21 predefined skins, easy to edit and modify. Any number of skins possible
  • Supports Videos from any major video hosting service as well as self hosted HTML5 Videos with flash fallback
  • Translation ready with mo/po files
  • Template Builder for unique page layouts (Landing Pages, Frontpages, Videopages etc)
  • Visual Shortcode editor with preview function

More Info & Live Demo

14. Swagger $35

Features:

  • HTML5 and CSS tableless design
  • Responsive design for all screen resolution sizes
  • Option to turn special stylesheet that targets tablets and mobile devices off or on.
  • Unbranded Theme Options Panel
  • 6 Sidebar Layouts
  • Tons of shortcodes with shortcode generator
  • prettyPhoto lightbox integration
  • Dynamic typography with Google Font Directory support
  • 100% child theme compatible with sample child theme included

More Info & Live Demo

15. Office Responsive Business Theme $35

Features:

  • 7 Custom Post Types
  • Unlimited FIlterable Portfolio Pages
  • 4 Header Styles
  • Unlimited Theme Highlight & Menu Colors
  • Background Options
  • Image Sliders

More Info & Live Demo

16. Zig Zag $35

Features:

  • All pages are W3C Valid
  • Responsive (tested on iPad 2 & Android smartphone)
  • Fully tableless design
  • 3 styles X 11 colors X 11 patterns (try out panel with all these options on Live Preview)
  • Streched background image
  • Several Pages templates (also on separate page from v1.1)
  • Shortcodes panel
  • Admin panel
  • Menu created from pages (no WP Menu and no submenus)
  • Documentation file: HTML

More Info & Live Demo

17. ELOGIX $35

Features:

  • Fully Responsive WordPress Theme
  • Great SEO base already built-in
  • Theme-Options Manager (unbranded!)
  • Easily Customizable Design (use ANY COLOR you want)
  • Ready for translation (.po / .mo files included)
  • Custom Backgrounds on every Page
  • Multiple Sidebars for each page/category possible
  • Tons of Shortcodes – even Pricing Tables and Slideshows
  • Unlimited Filterable Portfolio (you can enable or disable lightbox for every item)
  • Video, responsive Sliding Gallery, Image Portfolio Items
  • Multilevel Navigation
  • Notification Bar with Cookies
  • Gorgeous jQuery Enhancements
  • Built-in Custom Widgets

More Info & Live Demo

18. Locus $30

Features:

  • Responsive layout
  • 3 skins: Dark, darklight, light
  • 3 backgrounds for each skin
  • Filtered portfolio
  • One page news
  • jQuery enhanced
  • Working contact form
  • Thorough HTML documentation

More Info | Demo

19. Radius $35

Features:

  • Super Clean, Responsive Design
  • Fully Scalable Gallery Images
  • Portfolio Sorting and Filtering
  • Mobile Swipe Support
  • Localized (.mo and .po files included)
  • Fully Scalable Embedded Video
  • Drop Down Menu
  • Social Dashboard Page (featuring Instagram, Twitter, Flickr, Dribbble and Recent Photos widgets)
  • Unique Home, Blog and Portfolio Pages
  • Theme Options via the Options Framework Plugin

More Info & Live Demo

20. Lulu $35

Features:

  • Fully Responsive
  • Foundation Responsive Framework
  • Flex Slider
  • 4 Custom Post Types: Slider, Info, Logos, & Gallery
  • 3 Different Color Schemes, including different colored icons
  • Easy Shortcodes for Symbol Replacement
  • Filterable Portfolio/Gallery (Also, responsive)
  • Sweet Shortcodes
  • jQuery Tooltips through the theme
  • Flickr, Twitter, Recent Posts Widgets
  • Built-in jQuery contact form
  • Easy-to-use admin area
  • Great Support!

More Info & Live Demo

21. Rewrite $35

Features:

  • Super Clean, Responsive Design
  • Localized, Includes .mo and .po Files
  • Fully Scalable Galleries
  • Swipe Support on Galleries
  • Fully Scalable Embedded Video
  • Twitter and Flickr Widgets
  • Drop Down Menu (on all sizes)
  • Custom Archive Page
  • Theme Options
  • Beautiful Typography

More Info & Live Demo

22. Size Mttrs $35

Features:

  • Responsive Design (tested on iPhone and iPad)
  • 4 Skins: Dark/Light, Light/Dark, Dark and Light
  • WordPress 3.3 Ready (Menus & Featured Images)
  • Custom Portfolio Posts, with Image, Video Service Support (Youtube, Vimeo, etc.)
  • Touch gestures on Slider
  • 2 Portfolio Layout (Mosaic & Full)
  • Filterable Portfolio
  • 2 Custom Widgets (Networks & Twitter)
  • Theme Options (Fully Customizable)
  • Page Templates (Full Width, jQuery Contact Form)
  • Shortcodes (Columns, Buttons, Toggles, Tabs, Alerts)
  • Web Elements: PSDs for Customization
  • Localisation Support (contains .po/.mo files)

More Info & Live Demo

23. Modulo $35

Features:

  • Advanced and unbranded admin panel with 120+ options (inbuilt optiontree)
  • Colorpickers for almost every aspect of the site (top border, header, footer, links etc.)
  • Many background patterns (for header and footer) available with one click
  • Custom post type for Portfolio and testimonials
  • 4 portfolio page templates (including unique booklet)
  • Shortcodes buttons available directly from WYSIWYG editor
  • Widgets ready sidebars (for Home page, pages, posts, archives & footer)
  • Custom widgets

More Info & Live Demo

24. Webworks $35

Features:

  • 4 Featured Menu Style
  • Pretty “Cards” layout – Resume and FAQs
  • Unique look of a classic menu
  • 9 Portfolio Looks: 6 Sliders and 3 Grid Layouts
  • Every menu item can be styled separatly
  • Supports Video( prettyPhoto Plugin – Vimeo, YouTube, flash )
  • 4 Built-in Widgets
  • Unlimited custom sidebars for every page
  • Custom Logo Autofit
  • Custom css class for every page/post – Create unique look for pages!
  • Code samples from demo built-in admin panel
  • PSD Files Included
  • Browser Compatibility

More Info & Live Demo

25. Flare $35

Features:

  • Change the size of the slider with theme options without touching the code
  • Change image sizes with theme options without touching the code
  • Custom Post Types for Works and FlexSliders
  • Special custom taxonomy – Relation Tags – to relate various content
  • 60+ shortcodes and Shortcode Generator
  • 10+ Custom Widgets
  • Unlimited Sidebars
  • Ready for translation (contains .po/.mo files)
  • Documentation Included
  • Demo content included
  • PSD files included
  • HTML5 ready

More Info & Live Demo

26. Attracto WP $35

Features:

  • Responsive Design to adapt to smaller devices (ipad, iphone)
  • 2 prepared styles: light and dark
  • Change colors with colorpickers
  • jQuery Powered
  • Sortable and masonry style Portfolio
  • 50 prepared backgrounds to choose and place to upload your own background
  • Self-Hosted Video and Audio support
  • Support for embedded video and audio files
  • 6 Custom Page Templates

More Info & Live Demo

27. Symple $35

Features:

  • 12 Home Page Sections
  • Drag & Drop Home Page Layout
  • 4 Slider Options
  • 5 Post Templates
  • 5 Blog Templates
  • 6 Blog Templates

More Info & Live Demo

28. SmartStart WP $35

Features:

  • Responsive HTML5 and CSS3 tableless design
  • Unbranded Theme Options Panel
  • Custom Shortcodes with Shortcode Generator
  • Custom Slider Manager
  • Custom Widgets
  • Custom Post Types
  • Local HTML5 Video/Audio Support
  • Post Formats Support
  • Theme Update Notifier
  • Pricing Tables
  • jQuery enhanced
  • 500+ Google Web Fonts with Preview Option (automatically updating)
  • CSS -based dropdown navigation
  • Easy to use Google Maps (Google Maps made Simple Plugin)
  • AJAX /PHP contact form (Contact From 7 plugin)

More Info & Live Demo

29. Apex Responsive Portfolio $35

Features:

  • Compatible with the Latest WordPress Version (3.3)
  • Localizable with .po .mo translation files included for english and german.
  • With Detailed instructions on how to add your own language.
  • Responsive Layout (Tested on iPad, iPhone and Android)
  • Various Post Formats With Image, Slideshow, Youtube & Vimeo Video Support
  • Site Layout Switcher (Column, Full-With Footer, Full-Width Content)
  • Individual Background Image For Pages/Posts (Background Tiles Also Supported)
  • Unlimited Portfolios
  • Customizable Portfolio Effect
  • Unlimited Sidebars (Individual Sidebars For Each Page / Post / Homepage) & Widgetized Footer
  • Homepage Builder

More Info & Live Demo

30. Grizzly $35

Features:

  • Unlimited Styles
  • 3 Way to Showcase your App : Slide, Magnify and Video (currently support Youtube & Vimeo)
  • Sidebar Generator
  • 179 Ready to Use Icons from Picons
  • Subscribe Form integrated with MailChimp API
  • Feedback Form for sending Comment, Request and Bug Report
  • Contact Form with jQuery Validation
  • Custom Login Logo & Favicon
  • 7 Custom Widgets (Ads, Contact Info, Contact Form, Twitter, Flickr, Social, Sub Nav)
  • Ready for Multi Language Translation (.POT provided)

More Info & Live Demo

There’s a new player in town, and he brought new toys: The PHP World welcomes FLOW3, an enterprise application framework written and backed by the community of the TYPO3 CMS. FLOW3 can be used as standalone full-stack framework for your applications. It’s interesting, because it introduces some concepts of software development that haven’t been adapted to PHP before.

Among these new concepts is “Aspect Oriented Programming”. We will have a look on the theory of the pattern, and will set up a basic FLOW3 Application and weave in our own aspect!


Why Should I Care?

If a new framework hits stable, an excellent question to rise might be: What can it do that the tools that I love can’t?

PHP already has an armada of excellent frameworks and most of them claim to be written with separation of concerns in mind. So does FLOW3.

In terms of software development this means, that the classes that are implementing the logic of your application should only care about one thing. For example, a mailer class should send mails. It should not retrieve potential receivers from a database.

All modern frameworks (including FLOW3) push a lot of patterns into the software stack that do a great job at separating the concerns of your business logic; among them the famous MVC that is separating your logic into different layers.

However, an application is not only built on business logic alone. As it grows, you may want to implement additional services, features, plugins or plugins of plugins. You surely don’t want this stuff in your business logic! But what are your options?

Let’s say you want to implement a logging service that writes some stuff to a text file every time a specific set is deleted from the database. Naturally, the logging service is not part of your database layer. But in order to make it work, you have to place some code right there, like this:

/**
 * Delete a user
 * @param UserModel $user
 * @return void
 */
public function deleteUser(UserModel $user) {
$this->loggingService->log('removing user ' . $user->getName());
$this->users->remove($user);
}

Horrible, isn’t it? Let’s face it: The logging service adds dirt to your code. You have to touch the original code in order to implement it and you add an additional dependency, in this case an instance of the LoggingService.

Hence, you’re adding complexity. And you likely will have to add it all over your app (depending on what else you want to log).

You may come up with an pattern like an event dispatcher or a hook system like it’s implemented in Drupal and WordPress and then have your logger listen for events:

/**
 * Delete a user
 * @param UserModel $user
 * @return void
 */
public function deleteUser(UserModel $user) {
$this->eventDispatcher->dispatch(self::USER_DELETED);
$this->users->remove($user);
}

This is better, but it’s still not cool. You’re code is still dependency aware: it has some code with the sole purpose of informing other parties that something happens.

This has some bad side-effects: What if you want to log something, but there’s not an event dispatched at that time? What if you haven’t written that code because you are writing a plugin? You’d have to change the original code – not once, but every time an update is available.

Let’s call the logging service an aspect and see how FLOW3 takes care of the problem.


Aspect Weaving

Our logging service is only interested in one thing regarding the existing code: It wants to intercept it in some classes at various points (e .g. when something is deleted). With the implementation discussed above, the existing code controls the points of execution.

Wouldn’t it be nice if the service could define a set of rules at which point it would want to inject itself into the class?

This is a software development concept named Inversion of control. It decouples classes from another, because there’s no need to change existing code when you’re changing the service. The service takes care of this itself.

Let’s say we simply want to execute logging on every method in every class that starts with delete, like deleteUser(), deleteEntry() or whatever. A convenient way would be to write a rule into the logging service and let the framework take care of the correct execution of the code. This is remarkably easy in FLOW3:

/**
 * An aspect that is executed on all methods that start with "delete".
 *
 * @FLOW3\Before("method(.*->delete.*())")
 */
 public function logginMethod() {
// Do some logging here.
 }

FLOW3 performs some really advanced PHP techniques under the hood.

The rule is named pointcut in AOP and there are some easy-to-learn ways to define them. The one above tells FLOW3 to inject the logging code in every class before every method that starts with delete.

It does so by using the method keyword and by adding wildcards (*) for the class and for parts of the method name. If you’re adding this code in an Aspect Class (as we do later), you’re good to go. You will be able to access properties of the class that you are targeting as well. The targeted class itself remains untouched. It may not yet be written – if it’s added to your app in the future, the rule will then match and the code will be injected.

Maybe you have read the above paragraph twice and are asking yourself: Is this magic? What’s the damn trick? – I sure did, when I was first introduced to AOP!

Well, AOP has been around for some time in the Java world. FLOW3 is heavily inspired by the AOP implementation of Spring, a Java Framework. The word was on the street, that the pattern can’t be transferred to interpreted languages, because it requires compilation.

The trick is, that the framework – or some tools like JAspect – intercepts the compilation process (from Java code to bytecode, that can be executed by the Java runtime) and do an analysis of the defined aspects. Whenever a set of rules (aka the pointcut) matches a method, it is weaved directly into the compiled code. Hence, the framework takes care of merging the code parts together:

FLOW3 did adapt that concept to the world of PHP by introducing an advanced cache. While most frameworks offer caching to increase performance, FLOW3 additionally uses the cache to weave aspects into the original classes.

If you are running your app, FLOW3 delivers the cached classes instead the ones you’ve written. Hence, your original code remains untouched.

This sounds complex – and it is: FLOW3 performs some really advanced PHP techniques under the hood, that are well worth to be explored! But: To you as an application developer, it’s not complicated at all. You don’t have to care, if you don’t want to: FLOW3 monitors your files for changes and if you make some, FLOW3 auto-commits them to the cache upon your next request. If an aspect matches to a method, it’s automatically weaved in – no further configuration needed.

It’s a complex pattern conveniently at your service!


A Few Words About the Cache

Every cool feature comes with a downside – so does FLOW3. At the moment, we just scratched the surface of what FLOW3′s caching-mechanism is capable of, but I want to give you an idea.

Take a look at the following code:

/**
 * @FLOW3\Inject
 * @var \YourApp\MailerServiceInterface
 */
 protected $mailer;
/**
 * Sends a mail.
 *
 * @param \YourApp\Model\User $user
 * @param string $message
 */
 protected function sendMail(\YourApp\Model\User $user, $message) {
     // Sends a mail.
 }

The consequence is that PHP is to some degree no longer an interpreted language.

This may look like some code that is just well documented. But it’s much more.

The first property annotation (FLOW3\Inject) tells FLOW3 to look for some class in your app that implements the MailerServiceInterface and injects it here (and maybe configure it before). This pattern is known as Dependency Injection.

The second class defines some type definitions in its comment’s annotations – and FLOW3 uses them. If you’re giving the method some data that can be used to build a User object of your model (for example an array with pure strings from a HTML form), FLOW3 auto-transforms the data safely to a User object and applies some security and validation rules to the second parameter (in this case a string).

This is (among some other tricks) done by weaving in some code into the cache.

The consequence is that PHP is to some degree no longer an interpreted language. The process of caching is somewhat similar to compiling and it has the same downsides: You can’t just save & refresh your browser, you have to wait for the cache to be warmed up during development. If you are committing code to your production environment, you have to flush the cache in order to see the changes.

On top of that, FLOW3 adds some kind of type-validation at runtime: You can’t pass an integer as second argument in the example above – it’ll throw an error. I really like this, because I have a background in strictly typed languages like Java and ActionScript. It also adds a lot of security to your application. But if you’re a PHP purist, this may be something that you don’t want.


Setting Up Flow3

Alright, enough with theory. Let’s get our hands dirty.

Setting up FLOW3 is pretty straightforward, if you already have a PHP-capable server like XAMP or MAMP installed. Just grab a copy of the framework from FLOW3′s download site (or clone from git) and unpack it into your htdocs directory.

You should already be done now on Windows machines. Unix-based systems like MAC or Linux need to grant the required rights for building the cache. FLOW3 ships with a powerful command line tool, that packs this task into a one-liner:

# On linux:
./flow3 core:setfilepermissions chris www-data www-data
# On Mac:
./flow3 core:setfilepermissions chris _www _www

Please replace chris with your username! This should be enough. However, I’ve installed FLOW3 on
various machines and have run into some problems. The most common ones are:

  • If you’re on MAC and FLOW3 complains “index.php not found “, open the .htaccess in the webdir and add a # before the line Rewrite Base /“–
  • If you’re on Windows and the command line tool does not work, open Settings.yaml.example in FLOW3′s configuration directory, uncomment and adjust the phpBinaryPathAndFilename variable to the correct path (e.g. C:\xampp\php\php.exe) and save the file as Settings.yaml

  • On some machines, if FLOW3 is very slow, you have to increase the memory limit of PHP in the php.ini

If you run into problems, that are not listed here, please post them in the comments!

Now fire up your favorite browser and navigate to http://localhost/flow3/Web! FLOW3 should welcome you with an introduction screen:

The first run may take a while, as FLOW3 has to index your code and build all caches.

This is the Welcome Package. Every application in FLOW3 (and FLOW3 itself) is a package and packages can share code with each other. For example, once the new TYPO3 Version is finished, you can add it as a package and your application will then have an enterprise-ready CMS on top!

Let’s start our own package. It’s an easy task, because FLOW3′s command line tool will handle most of the work! Type in the following command:

# On linux / MAC
./flow3 kickstart:package Nettuts.AspectDemo
# On Windows
flow3 kickstart:package Nettuts.AspectDemo

This will create a ready-to-go package named Nettuts.AspectDemo in FLOW3′s Packages/Application folder. If you review the file structure, you will find many folders that do follow a specific convention.

The important ones are:

  • Classes: The home of your PHP Code, a first Controller is already created in the Classes/Controller Folder: the StandardController!
  • Resources/Private: The home of all templates that are fired into Fluid, FLOW3′s powerful Templating Engine. It hosts some other stuff like localization files as well.
  • Resources/Public: This has not been created yet, but every file in the Resources/Public folder will be directly accessible from the web. This is a good place for images, CSS, Javascript etc.

Building a full-featured app is beyond the scope of this tutorial, so we’ll go with the defaults. Please open the following URL: http://localhost/flow3/Web/index.php/Nettuts.AspectDemo

This is not much, but it’s a start. We want to write something to a logfile, every time this site is called. We do this by weaving in an aspect into the StandardController!


Writing a First Aspect

Take a look at the StandardController in theClasses/Controller Folder in your Nettuts.AspectDemo Package.

It implements a method, named indexAction(). FLOW3 has automatically configured our app in a way, that this method inside the StandardController gets called when we enter the URL above.

For the moment, we see that this method assigns some strings to the view:

/**
 * Index action
 *
 * @return void
 */
public function indexAction() {
$this->view->assign('foos', array(
'bar', 'baz'
));
}

If you open the file index.html of this view in Resources/Private/Templates/Standard inside our package, you’ll see how these strings are processed by the templating engine.

However, our goal is to intercept the code execution before this method gets called.

At first, create an empty file named Access.log in FLOW3′s Log folder at flow3/Data/Logs. You may save this file wherever you want, but this is a nice place for log files.

Next, create a folder named Service in your Nettuts.AspectDemo/Classes Folder and inside of it, create another folder, and name it Logging. Then create a PHP file named LoggingAspect.php inside of it. It should have the following content:

<?php
namespace Nettuts\AspectDemo\Service\Logging;
use TYPO3\FLOW3\Annotations as FLOW3;
/**
 * @FLOW3\Aspect
 */
class LoggingAspect {
   /**
    * Log a message if this site is called.
    *
    * @param \TYPO3\FLOW3\AOP\JoinPointInterface $joinPoint
    * @FLOW3\Before("method(Nettuts\AspectDemo\Controller\StandardController->indexAction())")
    * @return void
    */
   public function logSiteAccess(\TYPO3\FLOW3\AOP\JoinPointInterface $joinPoint) {
           $filePath = '/home/chris/www/flow3/Data/Logs/Access.log';
     $message = 'The site has been accessed at ' . time() . '.' . PHP_EOL;
     file_put_contents($filePath, $message, FILE_APPEND);
   }
}
?>

This is a very basic class, and if you’d like to have an advanced logger, you may want to separate the logging from the intercepting aspect.

What’s going on here? At first, we define a namespace, which is your package name and the path to the actual class (without the class folder itself). Next, we import FLOW3′s annotation namespace. Thus, we can use FLOW3′s powerful annotation parser to configure our class.

That’s exactly what we do in the class comments. We define the class as aspect with the following annotation:

/**
 * @FLOW3\Aspect
 */

From now on, FLOW3 is aware that this class may define rules for the interception of the code flow and watches our codebase for matches.

This is the rule:

@FLOW3\Before("method(Nettuts\AspectDemo\Controller\StandardController->indexAction())")

We could use regular expressions or some other techniques to match multiple methods or classes, but we know exactly where we want to go: Before the indexAction() Method in the StandardController – and that’s exactly what we’re telling FLOW3.

Note the $jointInterface Parameter of the logSiteAccess() Method, that is provided to us by FLOW3. We don’t use it here, but it contains some useful data about the actual context. For example, if the intercepted method would have arguments, that we may want to use, we could access them like this:

$argument = $joinPoint->getMethodArgument('argumentName');

The code in our logSiteAccess() method, itself, is fairly simple. Just adjust the path to the Access.log to your environment and you’re good to go!

Now, again, open http://localhost/flow3/Web/index.php/Nettuts.AspectDemo – nothing should have changed. But when you open the Access.log file, you should see the following entry:

The site has been accessed at 1335715244.

If you can read this, the aspect has been weaved into the cache. Let’s have a look at the magic!

FLOW3 stores the cache at flow3/Data/Temporary/Development/Cache/Code/FLOW3_Object_Classes.

You will find a class named Nettuts_AspectDemo_Controller_StandardController_Original.php. This is the original class from our codebase.

But there is another class: Nettuts_AspectDemo_Controller_StandardController.php. This class extends our original class and it is build up purely by generated code. Among the many lines you’ll find something like this:

$this->FLOW3_Aop_Proxy_targetMethodsAndGroupedAdvices = array(
   'indexAction' => array(
      'TYPO3\FLOW3\Aop\Advice\BeforeAdvice' => array(
         new \TYPO3\FLOW3\Aop\Advice\BeforeAdvice(
         'Nettuts\AspectDemo\Service\Logging\LoggingAspect', 'logSiteAccess'
         $objectManager, NULL),
         ),
      ),
);

This is were FLOW3 initiates the aspect and it’s weaved in directly into your class. The aspect gets executed right where we want it – without touching the original controller.

The code snippet initiates an instance of the BeforeAdvice class, with our aspect, the respective method and the $objectManager as arguments. The object manager contains the needed information to build the jointInterface, that is passed to the aspect.

If you’re interested in the details, have a look at the AOP Folder in the FLOW3 package!


Conclusion

The aspect oriented approach has many advantages waiting to be discovered.

The aspect oriented approach has many advantages waiting to be discovered. For example, FLOW3 uses AOP to intercept its own bootstrap to build up a firewall if you choose to use FLOW3′s security framework. Apart from that, we haven’t yet discussed the specific terminology that is commonly used in AOP.

However, FLOW3 ships with some other unique concepts like Domain-Driven-Design. It has a powerful Doctrine integration and a smart Templating Engine. We have only seen the tip of the iceberg!

What’s your opinion? Are you eager to learn more about the philosophy behind FLOW3? What’s your impression of AOP? Are you excited to have a robust port for the PHP world or do you think it’s too much overhead for an interpreted language?


If this message appears to another site than 1stwebdesigner ,it has been stolen, please visit original source!

Do you ever compare your work to the work of other designers? Are you afraid to ask clients for money?

If you are a freelance web designer, you know how difficult this lifestyle can be. From scheduling, to dealing with crazy clients, to managing your own work/life balance—there is a lot to juggle!

So to simplify your life a little, I am letting you in on my 10 Commandments of Freelancing that have helped me through many tough times. I hope they help you too!

Freelance Web Designers Commandments

1. Thou Shalt Start Small, but Dream Big

Whether you are just starting out or have been freelancing for a while, remember, everyone starts small. If you keep working diligently at building your freelance career and believe you can succeed, you will notice positive growth over time. Don’t ever give up!

2. Thou Shalt Not Beat Yourself Up and Compare Yourself to Others

Compare-to-Others-10-Commandments-Web-Designer-Freelancers

Image by Nighthawk

Low self confidence will impede your progress as a freelancer. Don’t let anyone ever tell you that what you do is easier than working a 9 to 5 job. Yes, you create your own schedule and there are many perks, but the mental battle can be fierce! You must constantly put yourself out there and you become vulnerable every time you submit work to a client.

Have you ever had these thoughts?

Will they like my work?
Will they reject it and think I am not qualified?
What if they don’t like it? Will I ever make a living doing this?

First, remember that your work is not a direct reflection of who you are as a person. Separating your personal worth from your work is half the battle. It’s OK to make mistakes and work through them. Mistakes do not define you; they make you stronger.

3. Thou Shalt Not Forget How Much You Know

You do not have to be the award-winning, perfect, millionaire-making designer to provide your clients valuable services. This doesn’t mean you should stop learning and growing in your craft. But, most web designers fail to realize how MUCH they actually know because they are so busy comparing their knowledge to other successful designers instead of serving their clients.

And if you have been working as a freelancer for a long time, it is easy to forget how much knowledge you have because your skills have become so commonplace to you. It is NOT common knowledge to your clients, if it was, they would not be coming to you for help! You have something to offer!

4. Thou Shalt Not Feel Guilty About Asking for Money

Asking-for-money-10-Commandments-Web-Designer-Freelancers

Image by johnridley

This commandment ties into the last one. If you know the value you offer, you will not feel guilty about invoicing a client. Your clients are paying you for your service and time and if you gave the project your all, you deserve every penny owed to you.

5. Thou Shalt Keep a Schedule or Face Procrastination

Procrastination is like our evil sidekick that vies for our attention. For me, it attacks when I hit an obstacle with a project. It’s much easier to check Facebook or respond to a friend’s email then to tackle an obstacle head on.

To avoid procrastination, create a weekly/daily schedule and assign hourly tasks. When I create a schedule the night or week before, I know exactly what needs to be accomplished and how much time it should take. If you do not create a schedule, you will be tempted to push a project back another day and convince yourself you will have time to finish it tomorrow.

6. Thou Shalt Not Work Yourself to the Bone

Some freelancers have the opposite problem of procrastination. If you stay up late at night and take on more projects than you know you can handle, you may need a reality check. The extra stress is not healthy, even if you need the money. Your health is not worth it!

If you feel like you are working too much, it may be time to raise your rates. Never underestimate what you are worth.

Don’t think that no one will pay you what you are worth. When you have this mindset, you take the low-paying projects and work harder than you have to. There are plenty of clients who pay for quality work. You just have to know how to brand yourself to look like the expert that you are and market your services accordingly. If you are confident in your services, your clients will be as well.

7. Thou Shalt Change Out of Your Pajamas

Work-in-Pajamas-10-Commandments-Web-Designer-Freelancers

Image Credit

I know I am not the only one who, from time to time, stays in my PJ’s all day! Raise your hand or leave a comment if you are equally guilty! It’s way too easy for freelancers to roll out of bed and go straight to your desk.

On days when I am not leaving my office, I find it productive to get ready as if I am leaving for a meeting. When you remain in your pajamas, you will stay in “sleep mode.” When you get dressed for the day, you become energized and more ready to face the day.

8. Thou Shalt Get Up and Move Every Hour

Have you ever sat at your computer in a comatose state for more than 10 hours at a time?

For health reasons it’s good to get up and walk around every hour, even if for just a few minutes.

It gets your blood circulating. It’s not good to stay in a sedentary state for longer than an hour at a time.

9. Thou Shalt Say No!

Say-No-10-Commandments-Web-Designer-Freelancers

Image by Oddball27

Remember that it is OK to say “no” to a project if it doesn’t line up with your skillset or your desired budget. You are hiring your clients just as much as they are hiring you. If you are not comfortable with a task or the nature of the work, pass on it. You will be happy you did.

10. Thou Shalt Not Work for Free

If you are just starting on your first few projects, you can offer free work in exchange for exposure, but most of the time it is not worth it. Clients will give you every reason to work with them for next to nothing and promise you grand exposure even though their website doesn’t even have enough traffic to track. Do your research and just say no!

Do you have other commandments you live by? I would love to hear more!

Powered by WordPress | Theme: Motion by 85ideas.