6
6
protected $ store ;
7
7
protected $ sitemapHelper ;
8
8
protected $ xmlSitemaps = false ;
9
+ protected $ _flatEnabled = array ();
9
10
10
11
public function __construct (array $ args )
11
12
{
@@ -20,6 +21,36 @@ public function __construct(array $args)
20
21
parent ::__construct ($ args );
21
22
}
22
23
24
+ /**
25
+ * Retrieve Catalog Product Flat Helper object
26
+ *
27
+ * @return Mage_Catalog_Helper_Product_Flat
28
+ */
29
+ public function getFlatHelper ()
30
+ {
31
+ return Mage::helper ('catalog/category_flat ' );
32
+ }
33
+
34
+ /**
35
+ * Retrieve is flat enabled flag
36
+ * Return always false if magento run admin
37
+ *
38
+ * @return bool
39
+ */
40
+ public function isEnabledFlat ()
41
+ {
42
+ // Flat Data can be used only on frontend
43
+ if (Mage::app ()->getStore ()->isAdmin ()) {
44
+ return false ;
45
+ }
46
+ $ storeId = $ this ->getStoreId ();
47
+ if (!isset ($ this ->_flatEnabled [$ storeId ])) {
48
+ $ flatHelper = $ this ->getFlatHelper ();
49
+ $ this ->_flatEnabled [$ storeId ] = $ flatHelper ->isAvailable () && $ flatHelper ->isBuilt ($ storeId );
50
+ }
51
+ return $ this ->_flatEnabled [$ storeId ];
52
+ }
53
+
23
54
/**
24
55
* @return Creare_CreareSeoSitemap_Helper_Data
25
56
*/
@@ -123,15 +154,24 @@ public function buildCategoryTreeHtml($parentId, $isChild = false)
123
154
{
124
155
if ($ this ->sitemapHelper ->getConfig ('showcategories ' )) {
125
156
$ categories = Mage::getModel ('catalog/category ' )->getCollection ()
126
- ->addAttributeToSelect (array ('url ' , ' name ' ))
157
+ ->addAttributeToSelect (array ('name ' ))
127
158
->addAttributeToFilter ('is_active ' , 1 )
128
159
->addAttributeToFilter ('parent_id ' , array ('eq ' => $ parentId ));
129
160
161
+ if (!$ this ->isEnabledFlat ()) {
162
+ $ categories ->addAttributeToSelect ('url ' );
163
+ }
164
+
130
165
$ class = ($ isChild ) ? "subcategories " : "top-level " ;
131
166
132
167
$ this ->categoryTreeHtml .= '<ul class=" ' . $ class . '"> ' ;
133
168
foreach ($ categories as $ category ) {
134
- $ this ->categoryTreeHtml .= '<li><a href=" ' . $ category ->getUrl () . '" > ' . $ category ->getName () . "</a> " ;
169
+ if ($ this ->isEnabledFlat ()) {
170
+ $ url = Mage::helper ('catalog/category ' )->getCategoryUrl ($ category );
171
+ }else {
172
+ $ url = $ category ->getUrl ();
173
+ }
174
+ $ this ->categoryTreeHtml .= '<li><a href=" ' . $ url . '" > ' . $ category ->getName () . "</a> " ;
135
175
$ children = $ category ->getChildren ();
136
176
if ($ children ) {
137
177
$ this ->categoryTreeHtml .= $ this ->buildCategoryTreeHtml ($ category ->getId (), true );
0 commit comments