If it's too complex, than fake the feature.
1) You could try to have a multi-select attribute.
The options in admin should be padded. Padding spaces are levels to that node. Like categories in multi-select but with +1 space before childs categories. Or you can have a custom renderer in admin for that attribute which is not hard to make.
On frontend you can render in layer navigation all values in a html/js tree. Values can be expandable and selectable.
The values of this multiselect are searchable.
If you want urls for this attribute have an extension that creates attribute_value.html pages like 'Shop by Brand' extensions. It will be a hassle to customize it for your exact needs.
A variation of the attribute solution is to use a custom source table. In this table you can have a hierarchy of rows defined as you see fit.
2) A real solution would be to define a whole new module with a new EAV entity. Try to use Varien_Data_Tree. Plenty of examples in Category module. You'd not have to duplicate Category module entirely. This implementation is very complex in my opinion. It is a Magento developer nightmare - mine at least.
3) A simpler variation of 3) is to have a new entity (not EAV). Have it like the classic way of creating categories in sql tables. (parent_id, child_id) table or a column with parents of the current row. Products will be linked through an additional table with the taxonomy entity (taxonomy_id, product_id). Do use indexers and do cache most of the blocks for this taxonomy entity. Their data won't change too often.
4) I don't see customers using two trees that are in fact 2 different ways of reaching a product. The ones that don't know what to look for will have a harder time navigating in both trees.
I guess you can have 2 'main' categories. One will be used in navigation and the other for 'taxonomy'. For all categories products ca be assigned. You'd have to make sure to use in navigation and layered navigation only the categories from the first 'main category'.
People that take decisions lose touch with reality now and than. Magento is a complex eCommerce platform. Merchants tend to bring their complex business logic in customers minds. Magento is a complex eCommerce platform. Implementing an extremely complex feature takes time and resources. A successful Magento store is a fast one and easy to use. If you approach this matter they'll come to their senses. Look for a different feature that addresses the main concern and that would replace the original feature (taxonomy tree).
This is easily done, but the javascript functions that trigger the minicart show/hide will "break", since you are reloading content into the DOM, which was instantiated at page load or document ready.
I'll show you how to achieve the result first, then we'll tackle the javascript issue.
Answering The Question
The block you want is called minicart_head, so your layout code in the controller addAction should be as follows:
> if (!$this->_getSession()->getNoCartRedirect(true)) {
if (!$cart->getQuote()->getHasError()){
$message = $this->__('%s was added to your shopping cart.', Mage::helper('core')->htmlEscape($product->getName()));
$response['status'] = 'SUCCESS';
$response['message'] = $message;
$this->loadLayout();
$minicart = $this->getLayout()->getBlock('minicart_head')->toHtml(); // <-- here's the block
$response['minicart'] = $minicart;
}
}
You can use the minicart data to replace the DOM object from your javascript function.
try {
jQuery.ajax({
url: url,
dataType: 'json',
type : 'post',
data: data,
success: function(data){
var json = eval(data);
jQuery('#ajax_loader').hide();
if (jQuery('.header-minicart')) {
jQuery('.header-minicart').html( json.minicart );
}
}
});
} catch (e) {
}
If you observe the DOM, using Web Inspector, for example, you will see that the content updates now via AJAX, but your show/hide feature will no longer work, since the javascript that acts on the #header-cart link has not been triggered for the new content.
Javascript Issue
By using jQuery's .on(), the theme developers at magento are on the right track (although they use a convoluted procedure to update the cart via AJAX).
In order for the show/hide feature to work, you need to use .on() delegation, or bubbling. In app.js, find the following:
File: app/skin/frontend/rwd/default/js/app.js
var skipContents = $j('.skip-content');
var skipLinks = $j('.skip-link');
skipLinks.on('click', function (e) {
...
}
And replace it as follows:
var skipContents = $j('.skip-content');
var skipLinks = $j('.skip-link');
$j('.skip-links').on('click', '.skip-link', function (e) {
...
}
And there you have it. Now your content reloads via AJAX, and the links still work after the cart changes.
Best Answer
To make changes for your first question i.e. Remove the header image you need to follow the following steps.
1) Login to admin.
2) Navigate Catalog->Manage Categories.
3) Select your Category.
4) under general information you will find a field for image like below.
select delete image checkbox and save the category your image will get removed.
Now for second question i.e. move the 5 images ABOVE the descriptive text/copy. follow the following steps.
1) locate the file at
app\design\frontend\<YOUR_PACKAGE>\<YOUR_THEME>\template\catalog\category\view.phtml
if you are not using any custom theme then you will get this file at
app\design\frontend\base\default\template\catalog\category\view.phtml
orapp\design\frontend\rwd\default\template\catalog\category\view.phtml
2) in this file you will find a code like
near line no 56, just relocate this code at the bottom of file and your are done.
if you want this change for only this category then you need at the category condition over here so you file will become like
Where 3 is the category id which you can find out from admin when you click on category. like.
Hope this will help you.