4 rows per column in Magento Search Results - magento

im having troubles making my search results have 4 products across. I am on Magento version 1.5. I have tried modifying my catalog.xml and catalogsearch.xml using this solution:
<action method="setColumnCount"><count>4</count></action>
It never worked for categories, the only way I got categories to work was using the custom design tab and adding:
<reference name="product_list">
<action method="setColumnCount"><columns>4</columns></action>
</reference>
I have also tried modifying my list.phtml file with this code and it didnt work either:
<?php $_columnCount = 4; ?>
I have no idea what else I can do to make my search results return 4 products across, the only thing that has worked for me is the custom design tab and there is none for search results. Any help would be greatly appreciated. Thank you!

I'm on magento ce 1.7.0.2 and am using a 2 column right layout.
I had to use setColumnCount in catalogsearch.xml like this:
<reference name="content">
<block type="catalogsearch/result" name="search.result" template="catalogsearch/result.phtml">
<block type="catalog/product_list" name="search_result_list" template="catalog/product/list.phtml">
<block type="catalog/product_list_toolbar" name="product_list_toolbar" template="catalog/product/list/toolbar.phtml">
<block type="page/html_pager" name="product_list_toolbar_pager"/>
</block>
<action method="setColumnCount"><columns>4</columns></action>
THEN, I had to edit styles.css around line 804 and change .col2-right-layout .products-grid {width:632px;...} to width:675px I would like to have changed it to 100%, but that created a gray border to the right of the rightmost product, which isn't how the design was intended to work.
Hope this helps you!

may be the possibles you facing magento bug some times
That’s a bug in Magento. Refer to this thread: http://www.magentocommerce.com/boards/viewthread/195932/
You can use “4" instead. Try:
<!-- //Removed due to Magneto bug w/ Layout cache
<action method="addColumnCountLayoutDepend"><layout>empty</layout><count>6</count></action>
<action method="addColumnCountLayoutDepend"><layout>one_column</layout><count>5</count></action>
<action method="addColumnCountLayoutDepend"><layout>two_columns_left</layout><count>4</count></action>
<action method="addColumnCountLayoutDepend"><layout>two_columns_right</layout><count>4</count></action>
<action method="addColumnCountLayoutDepend"><layout>three_columns</layout><count>3</count></action>
-->
<action method="setColumnCount"><count>4</count></action>
or you can see detail Solution at this LINK

To doing this open up catalogsearch.xml
in line 59 and 109 right after this line:
<block type="catalog/product_list" name="search_result_list" template="catalog/product/list.phtml">
add this code:
<action method="setColumnCount"><columns>4</columns></action>

I've had the same problem, this code worked for me in Magento CE 1.9.
Add it to your local.xml and it should work. At least it did for me.
<catalogsearch_result_index>
<block type="catalogsearch/result" name="search.result" template="catalogsearch/result.phtml">
<block type="catalog/product_list" name="search_result_list" template="catalog/product/list.phtml"></block>
<action method="setListOrders"/>
<action method="setListModes"/>
<action method="setListCollection"/>
<reference name="search_result_list">
<action method="setColumnCount"><columns>4</columns></action>
</reference>
</block>
<catalogsearch_result_index>

Adding this to local.xml worked for me:
<catalogsearch_result_index translate="label">
<reference name="content">
<reference name="search_result_list">
<action method="setColumnCount"><columns>2</columns></action>
</reference>
</reference>
</catalogsearch_result_index>
Magento CE 1.9.2.0

Related

Magento creating a custom template from backend category layout

I need to create a custom template with products categories. Which means under one category limited number of related products should be displayed. Under another category that category related products should be displayed. Also there should be a label which display those category names. As well as I need to add a link to view more products.
I am doing this through category layout (backend). I added the below code and tried.
<reference name="header">
<block type="core/template" name="header_nav" as="headerNav" template="page/html/headernav.phtml">
</block>
</reference>
<reference name="content">
<block type="catalog/product_list" name="product_list_flowers" template="catalog/product/list.phtml">
<action method="setData"><key>category_id</key><value>178</value></action>
<action method="setColumnCount"><count>4</count></action>
</block>
<block type="catalog/product_list" name="product_list_cakes" template="catalog/product/list.phtml">
<action method="setData"><key>category_id</key><value>179</value></action>
<action method="setColumnCount"><count>4</count></action>
</block>
</reference>
Category products are displaying. But this is not limiting the number of products. Also the header is not displaying. And I cannot add a link to this page.
Can anyone please help me on this. Thank You.
To be able to set limitation on Product Collection (since this differs from category to category in your case), find below the implementation:
<reference name="content">
<block type="catalog/product_list_flowers" name="product_list_flowers" template="catalog/product/list/flowers.phtml">
<action method="setData"><key>category_id</key><value>178</value></action>
<action method="setColumnCount"><count>4</count></action>
</block>
<block type="catalog/product_list_cakes" name="product_list_cakes" template="catalog/product/list/cakes.phtml">
<action method="setData"><key>category_id</key><value>179</value></action>
<action method="setColumnCount"><count>4</count></action>
</block>
</reference>
The above code will continue to display 4 columns with products.
Create block files (If this differs from category to category)
app/code/local/Namespace/Module/Block/Catalog/Product/List/Flowers.php
app/code/local/Namespace/Module/Block/Catalog/Product/List/Cakes.php
Override List.php (If all the categories require same limitation of products)
app/code/local/Namespace/Module/Block/Catalog/Product/List.php
 
<reference name="content">
<block type="catalog/product_list" name="product_list_flowers" template="catalog/product/list/flowers.phtml">
<action method="setData"><key>category_id</key><value>178</value></action>
<action method="setColumnCount"><count>4</count></action>
</block>
<block type="catalog/product_list" name="product_list_cakes" template="catalog/product/list/cakes.phtml">
<action method="setData"><key>category_id</key><value>179</value></action>
<action method="setColumnCount"><count>4</count></action>
</block>
</reference>
Below line no: 87, In this public function _getProductCollection()
...
$this->_productCollection = $layer->getProductCollection();
$this->_productCollection->setPageSize(10); //this will display only 10 products
...
Let me know if I was able to understand it correctly.
Happy Coding...

CMS page with layered navigation not working

I've added a CMS page wich shows all the products listed under the "All Products" category by creating a CMS page with a "two column with left sidebar" layout, and in the content tabs, I've added the following code:
{{block type="catalog/product_list" category_id="2" template="catalog/product/list.phtml"}}
I was reading about it and the layered navigation should be showing already. However, I've set "Is anchor" to yes, but it doesn't work. I can't make it to appear. What am I missing here? Is there a better way to create this catalog page?
Thanks in advance.
To display layered navigation on cms page you have to set root category to Is Anchor=Yes.
Please check the below link for calling layer navigation in CMS Page
http://www.webdesign-gm.co.uk/news/web-design/magento-web-design/layered-navigation-on-home-page-or-any-cms-page-magento.php
Or you can try this Design tab->Page Layout->Layout Update XML:
<reference name="left">
<!-- Layered Navigation Block -->
<block type="catalog/layer_view" name="catalog.leftnav" template="catalog/layer/view.phtml" >
<action method="setCategoryId"><category_id>40</category_id></action>
</block>
</reference>
<reference name="content">
<block type="catalog/product_list" name="home" template="catalog/product/list.phtml">
<!-- Product List View -->
<action method="setCategoryId"><category_id>40</category_id></action>
<block type="catalog/product_list_toolbar" name="product_list_toolbar" template="catalog/product/list/toolbar.phtml">
<block type="page/html_pager" name="product_list_toolbar_pager"/>
</block>
<action method="setToolbarBlockName"><name>product_list_toolbar</name></action>
</block>
</reference>
Open CMS->Pages->[your page] in Magento Admin Panel.
Add the following layout instructions to Design tab->Page Layout->Layout Update XML
<block type="catalog/product_list" name="product_list"
template="catalog/product/list.phtml">
<action method="setCategoryId"><category_id>3</category_id></action>
<block type="catalog/product_list_toolbar" name="product_list_toolbar"
template="catalog/product/list/toolbar.phtml">
<block type="page/html_pager" name="product_list_toolbar_pager"/>
</block>
<action method="addColumnCountLayoutDepend">
<layout>empty</layout>
<count>6</count>
</action>
<action method="addColumnCountLayoutDepend">
<layout>one_column</layout>
<count>5</count>
</action>
<action method="addColumnCountLayoutDepend">
<layout>two_columns_left</layout>
<count>4</count>
</action>
<action method="addColumnCountLayoutDepend">
<layout>two_columns_right</layout>
<count>4</count>
</action>
<action method="addColumnCountLayoutDepend">
<layout>three_columns</layout>
<count>3</count>
</action>
<action method="setToolbarBlockName"><name>product_list_toolbar</name></action>
</block>
<block type="catalog/layer_view" name="cms_layer" as="cms_layer" before="-">
<action method="setCategoryId"><category_id>3</category_id></action>
</block>
Also insert ID of desired category in 3 (2 times).
Open desired category of your store through Catalog->Manage Categories. Make sure that Is Anchor=Yes on Display Settings tab.
One possible reason layered navigation does not show is because you also need to configure your attributes to show in layered navigation.

Magento $this->getChild('product_list_toolbar_pager') returns false

I have a problem with pagination in one of magento shops.
Magento 1.7.0.2
I was digging, and digging deeper, and then i found a problem that i can't go through.
In core/Mage/Catalog/Block/Product/List/Toolbar.php:808
$this->getChild('product_list_toolbar_pager')
Return: bool(false)
(I checked it by returning it in getPagerHtml and then var_dump it in frontpage).
I can't find what *getChild('product_list_toolbar_pager')* exactly stands for.
Thanks for your suggestions!
Remove the block code from the edit cms page for the home page and add this to your local.xml
<cms_index_index>
<reference name="content">
<block type="catalog/product_list" name="product_list" template="catalog/product/list.phtml">
<block type="catalog/product_list_toolbar" name="product_list_toolbar" template="catalog/product/list/toolbar.phtml">
<block type="page/html_pager" name="product_list_toolbar_pager" />
</block>
<action method="setToolbarBlockName"><name>product_list_toolbar</name></action>
</block>
</reference>
</cms_index_index>
The location for the pager block class is : app/code/core/Mage/Page/Block/Html/Pager.php
The pager template file is at: app/design/frontend/base/default/template/page/html/pager.phtml
Hope it helps.

Display Products on Home Page with Pagination in Magento

I am new to magento.
I am creating a products page which will contain large number of products.
I am trying to display them on my CMS page, But i am able to show only 20 records per page. I just want to show pagination, So that user can navigate through the products easily.
I have searched over the net and found this code and updated in Layout Update XML
<reference name="content">
<block type="catalog/product_list" name="featured" template="catalog/product/list.phtml">
<action method="setCategoryId"><category_id>2</category_id></action>
</block>
</reference>
But it's not working.
Are there any default paging mechanisms in Magento?
i found the solution for my question
here Layout Update XML
<reference name="content">
<block type="catalog/product_list" name="home" template="catalog/product/list.phtml">
<action method="setCategoryId"><category_id>2</category_id></action>
<action method="addColumnCountLayoutDepend"><layout>one_column</layout><count>5</count></action>
<block type="catalog/product_list_toolbar" name="product_list_toolbar" template="catalog/product/list/toolbar.phtml">
<block type="page/html_pager" name="product_list_toolbar_pager"/>
</block>
<action method="setToolbarBlockName"><name>product_list_toolbar</name><count>5</count></action>
</block>
</reference>
just change category id you want to paginate.

How to remove std div in magento

I was trying to remove the "std div" from my magento home page, but unable to find the same any suggestion.
The div you are looking for is a page/html_wrapper block being added via the cms.xml layout file.
Here is the excerpt taken from app/design/frontend/base/default/layout/cms.xml:
<cms_page translate="label">
<label>CMS Pages (All)</label>
<reference name="content">
<block type="core/template" name="page_content_heading" template="cms/content_heading.phtml"/>
<block type="page/html_wrapper" name="cms.wrapper" translate="label">
<label>CMS Content Wrapper</label>
<action method="setElementClass"><value>std</value></action>
<block type="cms/page" name="cms_page"/>
</block>
</reference>
</cms_page>
So, there are a couple of ways to remove the div depending on how you develop your themes.
First option would be applicable if you use local.xml:
<cms_page>
<reference name="content">
<action method="unsetChild">
<alias>cms.wrapper</alias>
</action>
<block type="cms/page" name="cms_page"/>
</reference>
</cms_page>
Second option would be applicable if you copy the base layout files over:
Copy cms.xml from app/design/frontend/base/default/layout/cms.xml to app/design/frontend/your_package/your_theme/layout/cms.xml and edit the first layout snippet from above to the following:
<cms_page translate="label">
<label>CMS Pages (All)</label>
<reference name="content">
<block type="core/template" name="page_content_heading" template="cms/content_heading.phtml" />
<block type="cms/page" name="cms_page" />
</reference>
</cms_page>
This code helped me to remove "std" div from a single cms page,
put it to "Layout Update XML" section:
<reference name="content">
<action method="unsetChild">
<alias>cms.wrapper</alias>
</action>
<block type="cms/page" name="cms_page"/>
</reference>
EDIT:
Drew asked a question which makes me realize that your questions was how to remove the div (not just remove the class of the div). Ideally it's like any other "move" operation in layout XML, which means unsetting a parent-child relationship (in this case the one between the cms.wrapper and cms_page) and setting the child to another block (content):
<?xml version="1.0"?>
<layout>
<cms_page>
<reference name="content">
<action method="unsetChild">
<alias>cms.wrapper</alias>
</action>
<action method="insert">
<alias>cms_page</alias>
</action>
</reference>
</cms_page>
</layout>
My original response is below:
Drew has a lot of good information in his answer. I'll just point out that the block API has some nuance that can make the layout XML very clean.
In your local.xml:
<?xml version="1.0"?>
<layout>
<cms_page translate="label">
<reference name="cms.wrapper">
<action method="unsetElementClass" />
</reference>
</cms_page>
</layout>
Ref Mage_Page_Block_Html_Wrapper->_toHtml() and Varien_Object->__call()
Here is the solution you are finding :)
Put this xml code in Page -> Design -> Layout Update XML
<block type="page/html_wrapper" name="cms.wrapper" translate="label">
<label>CMS Content Wrapper</label>
<action method="setElementClass"><value>your_class_name</value></action>
<block type="cms/page" name="cms_page"/>
</block>
Cheers!
Saran

Resources