The Acumen software design blog provides you with helpful articles about eCommerce.

Several web sites provide a good overview.

Basic eCommerce Overview

eCommerce Wikipedia

Magento

Magento

Service Temporarily Unavailable
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.

Many people will say that this is because the file exists: /var/www/html/maintenance.flag
Our ecommerce development team found that this will occur if you are using APC for PHP optimization, disable APC, and forget to remove:

<cache>
<backend>apc</backend>
<prefix>my_magento_</prefix>
</cache>

from /var/www/html/app/etc/local.xml file.
You can remove the from the local.xml file with comments:

<!—
<cache>
<backend>apc</backend>
<prefix>my_magento_</prefix>
</cache
–>

For help with your Magento site right now, call right now. 314.333.3330

 

 

Our ecommerce team discovered that there’s a strange little feature in the Cart Viper shopping cart category listing that caused me about half-an hour worth of frustration. It’s actually documented in the tool itself but it was difficult to fully understand.

In this case I wanted the DNN Menu module to be available to non-authenticated and unverified users. It’s easy to make the module header appear in the sidebar but the Categories list proved more difficult.

Cart Viper

Solution

Within the documentation for the tool it tells you to leave all Role Options for the module blank to have it show up for all users. I didn’t want the Menu List to show up for all users, just select User Roles including Unverified and Non-Authenticated. Thus I checked those two Roles and several others. The Category list showed up when I was logged in as an administrator but once I logged out the categories vanished.

Finally I simply followed directions by unchecking all roles and it worked. Not that big a deal but somewhat frustrating. Apparently there is a bug somewhere in the viewing for Unverified and Non-Authenticated users. Easy to fix in the end.

Keywords

DNN, dotnetnuke, cart viper, shopping cart, ecommerce

 

Take a look at our CMS Web Development Page and see if we can help you!

Our ecommerce team was having trouble with Magento cron jobs, so we researched the various mechanisms to test and debug them.  The jobs did not run at the expected time and we couldn’t see why.

Magento

The Magento cron jobs run as apache.  You can see them by typing:

crontab -u apache -l

You can edit them with

crontab -u apache –e

 

To see if they are running without errors:

tail /var/log/cron

 

Also, the results of cron jobs are emailed to your apache user.  You can check that account with:

mail -u myApacheAccount

If you have problems with the cron job permissions, you will see them in the cron log or the mail messages.

 

References

http://www.adminschoice.com/crontab-quick-reference/

For more information about how Acumen can help with your other IT needs, contact us today!

 

Magento is a powerful and open-source ecommerce platform that has gained a lot of popularity and has been the system of choice for many developers and online stores. Magento allows developers to extend the platform with custom payment options to allow them to make requests APIs and payment processing providers of their choice, such as PayTrace, iATS Payments or Stripe, to process their store’s orders. To do this, we will be inheriting and extending multiple classes such as:

  • Mage_Payment_Model_Method_Cc
  • Mage_Core_Helper_Abstract
  • Mage_Core_Controller_Front_Action
  • Mage_Payment_Block_Info
  • Mage_Payment_Block_Form_Ccsave

Most of the configuration work is just knowing what to hook up, so rather than go into detail I’ve provided the XML files and PHP files in this post. To build your own module, simply swap out the words “Acumen” with your project name (or namespace you want to use) and “Pay” with whatever you want to name the extension.

The real work is done in our extending of the Mage_Payment_Model_Method_Cc class inside of the app/code/local/Acumen/Model/Pay.php file. This is used when the order is submitted. You will see the capture and authorize functions, two of the functions called on submission.

Capture is to actually accept the payment for the sale. You will see that inside of that function, we use callApi and pass it the type of “Sale”. We can use that value to determine what API call to make (sale or authorize), or to simply pass it to the API.

Authorize is to check that the payment can be made, but it does not actually process the sale. Similarly to Capture, we pass a type parameter, this time using the string “Authorization”. Again, we can use this to manipulate our API call accordingly.

CallApi is where the request to the API is to be made, using a cURL request or otherwise. If the API successfully completed the authorization or sale, set $approved to true; otherwise, set it to false.

To view the source code, check out my GitHub repository.

If you’re looking for a custom extension for your Magento store or you need help setting up a Magento store and start selling, we can help. Check out our Magento page for more information.

A Magento theme is essentially a group of files that define the look, feel and overall layout of your store. Magento allows the use of multiple concurrent themes, and is not restricted to a single, active theme like WordPress. In this way, you can customize every aspect of your store while not having every page adhere to the same theme. This guideline will help you better understand the aspects and elements of a theme, as well as the basics of building your own.

NOTE: This tutorial does not cover theme installation. For instructions on how to install a theme please refer to this post.

Basic Model (In Hierarchal Order)

  1. Website Level – One or more store of the same customer/order information, shopping cart, etc.
  2. Store Level – A collection of store views. A container to group all related products.
  3. Store View Level – Essentially Store Level, but slightly different. Typically used to display Stores in different languages. (French, German, etc.)

*Multiple sites and stores can be run off of one single Magento installation.

Blocks

Magento uses “blocks” in order to represent different components and functionality. These blocks make it easier for developers and theme designers to customize the functionality/look and feel of their store. There are two types of blocks in Magento:

Structural Blocks – These are the containers for the Header, Footer, Right/Left Columns and Primary Area (or Main Content Area). Some examples of structural blocks have been highlighted below in red.

Pix 1

Content Blocks – These are blocks within structural blocks. Site navigation, callout, category listing, etc. These can be static images, widgets, etc. Some examples of content blocks have been highlighted below in green.

Pix 2

File Types

Skins – This file type contains your CSS/images/JavaScript files.

/skin/frontend/package-name/theme-name

Pix 3

Layouts – This file type defines structural blocks and can be edited via the .xml files it contains.

/app/design/frontend/package-name/theme-name/layout/

Pix 4

Templates – This file type defines content blocks and can be edited via the .phtml files it contains.

/app/design/frontend/package-name/theme-name/template/

Pix 5

Locales – This file type defines the language of your Magento store. For example a locale might translate store elements to Spanish. Locale files are stored as .csv.

/app/design/frontend/package-name/theme-name/locale/

Pix 6

Design Package/Themes

Base Theme – The bottom level theme and final place that Magento looks to.

/app/design/frontend/base/

Custom Theme – Your own custom theme. Magento looks here first.

/app/design/frontend/package-name/theme-name/

Package – A group of related themes. You can create your own or use the already available ‘default’ package.

/app/design/frontend/default/

Disabling the Cache

To prevent your store from being slow to load, Magento has a built-in caching system which reduces the number of files needed to be reloaded every time a page is requested. While this is useful while your store is live, it can prove to be an inconvenience when developing.

To disable this feature temporarily log in to the admin panel and go to System | Cache Management. Here you can select/deselect any cache types that you wish to disable. For our purposes you can disable them all by selecting each one and selecting ‘Disable’ from the Actions drop-down menu.

Setting a Theme

You can set the package and individual themes that you wish to display in the backend of Magento by going to System | Configuration and clicking Design in the left-hand sidebar. Under Package you have your current package. Under Themes you will see each file type and which theme it’s being generated from.

* Themes can be changed for each individual page as well. CMS > Pages and then click the page you want and select Design from the left-hand sidebar.

Customizing Your Theme

When you want to edit a particular file, simply copy it from the base theme, paste it in your current theme and edit it from there. Any files copied in this manner will override the base files. Be sure to copy any folders that contain the files as well. For example, if we wanted to edit the login.phtml page used for our check out (located in app/design/frontend/base/default/template/persistent/checkout/onepage/login.phtml) we would need to create or copy the folder persistent and paste it in our custom theme template file.

This is the preferred method for changing files in Magento. Editing the base files directly is not a good practice because it can cause conflict when trying to upgrade Magento. Plus, if you make a mistake that is beyond repair you won’t be able to revert back to any older files.

Template Path & Block Name Hints

Two useful tools that Magento provides for locating file paths are Template Path Hints and Block Name Hints.

Template Path Hints – Displays the relative path to each block within the theme directory structure.

Block Name Hints – Shows you how the block is classed within the framework.

To enable these hints simply navigate to System | Configuration | Advanced | Developer. Make sure ‘Main Website’ or ‘Default Config’ is selected from the Current Configuration Scope drop-down in the top-left corner as the option is unavailable in the Default Config scope. Open up the Debug section in the right-hand column. From here you can switch Template Path Hints and/or Block Name Hints to Yes or No. Click Save Config at the top-right of your screen, and refresh the frontend of your store to view the changes. The hints should appear in little red boxes surrounding the elements they lead to.

Theme

Conclusion

Editing a Magento theme can be done easily and effectively once you know where to go for files, how to disable the cache and how to enable the template and block hints. I recommend setting up a development installation and trying your hand at making changes to the store views in your theme. For more information on Magento Theming, please see the following resources:

Resources

LevelUpTuts

  • Good tutorials on Magento from the ground up. Specifically, #25 – #44.
  • Magento 1.4 Themes Design by Richard Carter.
  • This book covers a lot of material on theming in Magento. Specifically chapters two through six if you aren’t interested in reading the whole book.

See our CMS Web Development Page for more ways we can help you!

Nav Menu

There’s an interesting little quirk to Magento.

In Magento, the Navigation menu does not display even when you’ve told the particularly categories to show. There’s a quick fix to the problem but it’s good to know before you create an extensive category system.

The problem is that the Navigation menu relies on a particular Root category and if you change the default category or create a new Root category the Navigation menu doesn’t recognize it without a little tweak. Here’s how you can fix it.

  1. From the Catalog Menu select Manage Categories
  2. Click Add Root Category
  3. Name your Root Category (root-SITENAME)
  4. On the General Information Tab ensure Is Active equals Yes
  5. On the General Information Tab ensure Include in Navigation Menu equals Yes
  6. Click Save Category
  7. With the new Root Category Selected click Add Subcategory
  8. Create the subcategory of the main category making sure it is Active and Included on the Nav Menu
  9. From the Main Menu Systems – Manage Stores
  10. Click the Main Website Store link
  11. From the Root Category drop-down choose the Root Category you created earlier (root-SITENAME)
  12. Click Save Store

Any new categories you create should appear on the Navigation Menu.

As a side note, remember when you create Products on the Inventory tab add a number to the Qty field and change Stock Availability to In Stock otherwise products will not display in their Categories.

I hope that was helpful to people struggling with this issue. If you need help with your eCommerce Magento site we can. See our Magento Page and give us a call.