Tuesday, February 9, 2016

Are WordPress Themes Killing Web Design?

Every so often, somebody writes a post claiming something is dead. Email is dead. SEO is dead. Facebook is dead. Web Design has not been spared, and we’ve seen bold claims of the imminent death of web design on Mashable. They claim that ready-made themes are killing the industry:

"Most of the content that you see on the web today is run by some framework or service — WordPress, Blogger, Drupal, you name it. Frameworks provide you a foundation and shortcuts so you spend less time struggling with the creation of a web site, and more time creating content. As a consequence of the ubiquity of these frameworks, a whole world of free and paid templates lets you get started with a professional-looking design in minutes."

They feel threatened by the sheer number of themes available. Since it is “easy” to setup a website and a ready-made theme - anybody can do it.

I beg to differ.

wordpress-logo-simplified-rgb

If you’re threatened by platforms like WordPress and ready-made themes, I hate to break it to you - but you’re doing web design wrong. You’re missing a fundamental piece of providing any service. You’re not providing enough value to the client.

Continue reading %Are WordPress Themes Killing Web Design?%


by David Attard via SitePoint

Quick Tip: Sync a Fork with the Original via GitHub’s Web UI

I often find myself having to update my fork of someone else’s repo to include the changes made to the original since the fork. In fact, we use this approach often in SitePoint’s Peer Review System as well.

Purely by accident, I’ve recently discovered a way to quickly and easily sync a fork with the original repo through the Github web UI, so no need to go commando (use the command line).

Continue reading %Quick Tip: Sync a Fork with the Original via GitHub’s Web UI%


by Bruno Skvorc via SitePoint

Live To Change The World

opl-small

Colorful One Pager filled with illustrations promoting how "social entrepreneurship" can unleash the potential of young people.

by Rob Hope via One Page Love

Using Customer Surveys to Make Your Product UX Better

Net Promoter Score

Back in the days of shrink-wrapped software, it took months to hear customer feedback. That's not the case anymore. Modern day startups achieve product/market fit through a constant stream of iterations and releases.

A customer feedback score reveals what a product team is doing right – and what it can improve. Like revenue for a sales team, the score reflects the quality of their work.

Net Promoter Score

The Net Promoter Score is a popular method because it correlates with revenue growth. Even if you've never heard of it, I'm sure you've seen it.

NET PROMOTER SCORE - 0-10 score

The survey asks one question, "How likely is it that you would recommend our product/service/company to a friend or colleague?" The user can respond with a score of 1-10 (1 being low, 10 being high) and provide an additional comment to support their response.

To calculate a Net Promoter Score, separate the respondents into 3 groups: Promoters, Detractors and Passives. Promoters respond with a score of 9-10, Passives 7-8, and Detractors 0-6.

Subtract the percentage of Detractors from the percentage of Promoters to get the Net Promoter Score, or NPS. Passives are only included as part of the overall number of respondents that the two percentages are based on.

NPS results can then be divided up by user groups. Due to the way NPS is calculated, scores range from -100 to +100, with anything above 0 regarded as healthy and +50 considered excellent.

What do you do with the scores?

In addition to running analysis on the data, there are user email addresses and comments associated with each response. Team leads and managers reach out to Promoters and Detractors over email. Again, Passives are not as relevant.

Promoters provide insight about the product's strengths, whereas Detractors show how the product can improve. In both cases, it's important to research the user before contacting them.

Study analytics

Whether you use Mixpanel, Google Analytics, or Kissmetrics, it's smart to do a deep dive into the user's behavior. It can be surprising to see where a customer drops off in a workflow...

Google Analytics - Mixpanel - Kissmetrics

When responding to users, it's important to know what kind of computer they use. Do they access your site on a tablet? A Windows machine? Webpages are rendered in different ways, based on many factors, so it's good to understand the use case.

Read support requests

All online chats and support tickets are archived. Zendesk, Freshdesk, Desk.com, and Help Scout all keep a history of customer interactions.

Zendesk - freshdesk - Help Scout - Salesforce Desk

Dig in and see if there is a reoccurring theme. Do they forget their password on a regular basis? Are they upbeat and warm, or distraught? All of this information will impact the way you contact the customer and what you contact them about.

Review their account

Log into the app and look at the user's account. This sounds intrusive, but it's the same as talking to a customer support representative about your car insurance. This is what it means to "pull up your account."

A photo-sharing company would have data on the user's photos, how many people are in their network, and if they filled out their profile. These clues can explain the score they gave.

For instance, that photo-sharing site may find that most poor scores are delivered by beginner users trying to upload photos. Their photo upload flow may well need some refinement.

Okay, I've gathered my research. Now what?

Now it's time to reach out to the customer. It makes sense to use an editable template. There are just too many respondents to write a unique email each time.

Continue reading %Using Customer Surveys to Make Your Product UX Better%


by Alex Walker via SitePoint

So You’ve Got a Facebook Page for Your Business. Now What?

So you've got a Facebook page for your business. Now what?

Merely having social media accounts isn't enough to get new clients or grow your revenues. Luckily, marketing expert Jerry Banfield is up for a little hand-holding. Grab his course, the Complete Facebook Ads and Marketing Course for $14.99—SitePoint readers save 92%.

Banfield's packed 26 hours of expert content and 207 easy-to-follow lectures into this course, all with the goal with teaching you how to profit from Facebook. You'll learn how to put together Facebook ads that work and how to lower your post per click. You'll find out how you can generate B2B leads with Facebook messages. And you'll get a handle on affiliate marketing with Facebook groups. Best of all, you'll get all of it for a lifetime, with new lectures added every month.

Turn your Facebook account into cash. Get the Complete Facebook Ads and Marketing Course for $14.99 at SitePoint Shop.

Continue reading %So You’ve Got a Facebook Page for Your Business. Now What?%


by SitePoint Offers via SitePoint

Checklist for Delivering a WordPress Project

When you finish coding and designing a website, it doesn't necessarily mean that your job is over and ready to be delivered. You need to make sure that your client doesn't have a hard time with the website in the future. So, you need to take some last steps.

In this tutorial, I'm going to show you what to do before handing over the finished website to your client.

Finishing Touches Before Handing Over to the Client

It's not just me: Every freelance WordPress developer could face the problems that I have. It may be tougher, it may be lighter, but encountering these kinds of situations is in the nature of being a freelancer.

Now, let's look at what I could have done right and how can you avoid facing those problems.

Check the Content

The first thing you should do is check the content your client sent to you. In some cases, clients tend to send bizarre formats of content like scanned photos, all text in a single Word file, or a zip file containing all your client's photo archive including his or her hiking trips and silly pictures of a pet. (If you think these are weird, I could start telling the story of a client of mine, sending a photo of napkin scribblings for homepage content over WhatsApp.)

If your client sees that one of the pages is missing, he or she might create a big fuss about it and your client will be right, for the most part. Or, if your client is one of the good kind, you could get together with him or her and go through the content together.

Prepare for revisions, though.

Go Over the Options of the Theme & Plugins

Chances are, your theme settings panel will have loads of different options, which will sometimes confuse even the smartest web designers. Header over to the settings panel to check every option against what your client wants. 

When in doubt, make some quick calls like "Which color do you want the links to be?" or "How many items do you wish to have in the 'Latest Posts' sidebar widget?" and such. It could seem like unnecessary effort, but it's better to finish them before your client sends a revision asking for two more items in the "Latest Posts" widget, and then one less.

When everything's set, export the theme options (if the settings panel has that function) and keep it for a couple of months, in case your client messes it up.

Simplify the Admin Interface

Speaking of clients messing up your settings... How about not showing them at all?

If all your client wants is to add new posts or edit the pages and maybe, occasionally, throw in an extra slide in the front-page slider, it would be a good idea to create a new user for your client with an "Editor" role. That way, he or she won't be able to access any kind of settings that may break the website like changing theme options, changing WordPress options, playing with the plugins or trying on a new theme (believe me, they would try that). Ask your client what he or she will want to do with the website after you're done, and create an Editor account if it's okay.

Alternatively, you can simplify the administration panel by using a plugin like Adminimize by Frank Bueltge. It allows you to "deactivate" parts of the administration screens by user role. If your client wants more capabilities than an Editor account has, simply use this plugin to at least hide the Plugins and Themes screens.

Change the Master Email Address

The famous "five-minute WordPress installation" allows us to install WordPress even shorter than five minutes, but most of the time we may choose a personal email address in the process, just to get it over with.

If your contract states that you don't have to update WordPress or plugins and themes, or moderate incoming comments, it's safe to change the "master email address" to an address that you won't check every day (or an address that doesn't exist). If you want to get the updates, though, leave it as is or change it to something like webmaster@awesomefreelancer.com and check that inbox periodically.

Back Up Before Delivering the Website

This one's a no-brainer, really: Before handing the website over to the client, be sure to create a backup of your work. If your client breaks the website beyond repair, like deleting some attachments or uninstalling a plugin (why haven't you used Adminimize?), the backup could come in handy.

The internal "export" tool of WordPress is kind of useless in this case, because it doesn't include attachment files or widget configurations. If you have cPanel installed on your server, you could create a full backup including the public_html directory and the website's database. Or you could make use of backup plugins to get the job done. Your call.

Get Paid!

This is a sensitive issue, and you and your client may already have settled this in the contract, but do not trust the contract and do not trust your client. Even if the contract is air-tight or your client is a friend or a relative, be sure to get paid before launching the website.

Word of advice: Make the website in an environment that if you don't get paid, your client won't be able to use the website. You can develop the website in a subdomain of your own website, for example. That way, if the client doesn't pay, you can shut it down until you get paid. And be sure to get paid partially before finishing the website, so you can cut losses.

Wrapping Everything Up

It's natural to encounter difficulties with your client, but acting proactively to save your client from dealing with the website after delivery is always a good idea.

Have you encountered any problems with your clients, and if you have, how did you square things up? Tell us your story in the Comments section below. And if you liked this article, don't forget to share it with your friends!

For anything else unrelated to this article, you can get in touch with me at @BarisUnver_EN (English) and @BarisUnver (Turkish) on Twitter. See you there!


by Barış Ünver via Envato Tuts+ Code

How to Create a Custom Library in OpenCart

Although OpenCart provides lots of features in the core itself, you'll often find yourself in the situation in which you'll want to integrate a third-party library with it. OpenCart has a concept of the library which provides a common set of APIs for day-to-day operations like interacting with the configuration system or database system, dealing with an email system, etc. Today, we'll see how you could implement your own custom library in OpenCart.

In this article, we're going to create a custom library which will allow you to make CURL calls. We'll try to keep things simple and straightforward, as the important thing to understand is the concept itself—the implementation may vary based on the complexity.

We'll use the latest version of OpenCart. I also assume that you're aware with the module structure of OpenCart.

What Is a Library in OpenCart?

So, what exactly is a library in OpenCart? In simple terms, it's a set of utility scripts providing us the functionality used commonly in the framework. In OpenCart, you'll find all the libraries under the system/library directory. For example, an incoming request is handled by the Request library, and for response handling there's the Response library. Similarly, there are libraries for caching, customer, database, and the configuration system, just to name a few.

Generally, you'll load the required libraries in your controller/model code as needed. You need to do something like this to load any library:

In the above example, we've loaded the cache library. So from now on, you'll be able to use the $cache object to call the methods defined in that library. As you can see, it's really a flexible way to load the objects as needed.

Today, we'll implement a curl library so that you can use it to make CURL calls using that library. It'll be helpful to avoid the code duplication in the controllers, as for every CURL request you'll need to instantiate the object and set up the common headers. We'll wrap it up in the common library so that it's reusable and avoids code duplication across the modules.

Before we go ahead and start our custom library implementation, let's have a quick look at one of the core libraries of OpenCart.

Explore the Core Library Code

As, we've already discussed the cache library in the previous section, let's explore the code of that library. Go ahead and open system/library/cache.php in your favorite text editor.

Pretty easy stuff, isn't it? It provides a simple class-based implementation with the required methods. Although it's a very simple example, it could be fairly complex for your use case! Go ahead and explore a couple more libraries to get yourself familiar with the concept.

Create a Custom Library: Curl

So now, you're aware with the core libraries, let's create our own! Create a system/library/curl.php with the following contents.

We've defined a Curl class with a handful of methods.

Starting with the get_instance method, it allows us to create an object of the class itself. It'll also make sure that at any given time we'll have a single instance of the class.

Next, we've defined the constructor with the $registry argument. Of course, you don't need any argument, but for example purposes I've used it to demonstrate how to load other libraries using the $registry object. In our example, we're loading the Log library and assigning it to the logger property. We'll use this library to log the curl requests for debugging purposes!

Finally, there's a do_request method which does all the heavy lifting for us! There are two arguments: $url holds the URL to which we'll make the curl request, and $params holds an optional array of parameters in case we need to POST any data. The code following that is fairly straightforward to understand: it makes a curl call and returns the response!

So we've almost finished with our custom library set up. We'll see it in action in the next section.

How to Use Our Custom Library

Most of the time, you'll end up calling libraries from the controller itself. So, let's see how to load and use our library from the controller.

The $this->load->library('curl') statement will load our custom library. In the next statement, we've called the get_instance method and passed the $registry object as a constructor argument. Finally, we've used the do_request method to make the curl calls!

So, as you can see, it's quite easy to create your own libraries in OpenCart! Similarly, you could integrate any third party library in OpenCart library format and use it throughout the framework as needed.

Conclusion

Today, we've discussed the concept of a library in OpenCart. 

If you're looking for additional libraries to use or to explore, don't forget to see what we have available in our marketplace.

We've explored the core libraries and created our own library for curl. I hope you've enjoyed it! Share your thoughts and queries using the feed below!


by Sajal Soni via Envato Tuts+ Code