[ - Search Plugin - ] - Itemid & Multilanguage
13 years 10 months ago #74109
by likandev
Eduardo Chongkan - Likan Development
likandevelopment.com
[ - Search Plugin - ] - Itemid & Multilanguage was created by likandev
My site has to be in 2 languages ( or could be more.. ) and, I noticed in the default language that SEF URL's weren't working on the search results.
1. The all said: component/hikashop/product/... /category_pathaway_2?Itemid=###
I fixed that by specifying a Menu Item ID as mentioned in this other thread: www.hikashop.com/en/forum/2-general-talk...b/post.html?do=reply
That seemed to work for a second...
If I only can specify 1 menu item id, the URLs will all be in one language only. ( that's my new problem ) and also, the links won't work because I have the menus set for one language each one.
My Menu configuration looks like this:
When I change the Itemid to the other menu language, I'm able to click and get correct URL's for the other language as well.
Note: doing the same for the checkout does the same in terms of language, it forces all users to certain SEF URL and language and in my case I get broken URLs.
1. The all said: component/hikashop/product/... /category_pathaway_2?Itemid=###
I fixed that by specifying a Menu Item ID as mentioned in this other thread: www.hikashop.com/en/forum/2-general-talk...b/post.html?do=reply
That seemed to work for a second...
If I only can specify 1 menu item id, the URLs will all be in one language only. ( that's my new problem ) and also, the links won't work because I have the menus set for one language each one.
My Menu configuration looks like this:
When I change the Itemid to the other menu language, I'm able to click and get correct URL's for the other language as well.
Note: doing the same for the checkout does the same in terms of language, it forces all users to certain SEF URL and language and in my case I get broken URLs.
Eduardo Chongkan - Likan Development
likandevelopment.com
Please Log in or Create an account to join the conversation.
13 years 10 months ago - 13 years 10 months ago #74197
by likandev
Eduardo Chongkan - Likan Development
likandevelopment.com
Replied by likandev on topic Re: [ - Search Plugin - ] - Itemid & Multilanguage
Update:
For resolving the problem with the search results links I made plugin so I can configure as many Itemids for as many languages I need.
Then, on the com_Search tmpl override, I pulled the plugin's params to see what ItemID I needed to use for the current language. It now works with my 2 languages and I think I will work if I add a new language.
The plugin is not for admins, is more for developers and customizers. I'm attaching it in case someone needs it.
Note: You can add more fields to the plugin by editing the XML. You can also use a different logic for determining the name of the param to be used.
The code I used in the com_search override (default_results.php) was:
On the First lines of the file:
Then, right before displaying each result:
Note: On the foreach, I added a '&' to the $result var, to modify it's actual content.
That worked for me. Please update this thread if you guys know how to do it in a better way.
For resolving the problem with the search results links I made plugin so I can configure as many Itemids for as many languages I need.
Then, on the com_Search tmpl override, I pulled the plugin's params to see what ItemID I needed to use for the current language. It now works with my 2 languages and I think I will work if I add a new language.
The plugin is not for admins, is more for developers and customizers. I'm attaching it in case someone needs it.
Note: You can add more fields to the plugin by editing the XML. You can also use a different logic for determining the name of the param to be used.
This attachment is hidden for guests.
Please log in or register to see it.
Please log in or register to see it.
The code I used in the com_search override (default_results.php) was:
On the First lines of the file:
Code:
$plugin = JPluginHelper::getPlugin('system', 'likan_hikashop_multilang');
$params = new JRegistry;
$params->loadString($plugin->params);
$localizedParamID = JText::_('LK_LOCALIZED_ITEM_ID'); // You need to add the fieldnamames to the language file(S)
$localizedItemid = $params->get($localizedParamID);
Then, right before displaying each result:
Code:
<?php
if ( $result->href ) :
// Added by Likan
$hspattern = '/com_hikashop/';
if (preg_match($hspattern, $result->href)){
// This is a HS product, brand or category
$pattern = '/Itemid=[0-9A-Za-z]*/';
$url_itemID = 'Itemid=' . $localizedItemid;
if (preg_match($pattern, $result->href))
$result->href = preg_replace($pattern, $url_itemID, $result->href);
else
$result->href .= '&' . $url_itemID;
}
?>
Note: On the foreach, I added a '&' to the $result var, to modify it's actual content.
Code:
<?php foreach ($this->results as &$result) : ?>
Eduardo Chongkan - Likan Development
likandevelopment.com
Last edit: 13 years 10 months ago by likandev.
The following user(s) said Thank You: nicolas
Please Log in or Create an account to join the conversation.
13 years 8 months ago #86849
by likandev
Eduardo Chongkan - Likan Development
likandevelopment.com
Replied by likandev on topic Re: [ - Search Plugin - ] - Itemid & Multilanguage
Note:
The above code worked for the search RESULT page only.
I was also using a Yootheme AJAX based search and today we noticed that in the secondary language, the Sanish URLs were broken because of a malformed SEF URL:
It was always returning:
es/shop/p/148-cartera-retro-floreada-cierre-pellizco/category_pathway-87
That URL should in fact be:
es/catalogo/p/148-cartera-retro-floreada-cierre-pellizco/category_pathway-87
This time, since the URL was comming from the Hikashop Plugin and the JS code was obfuscated, I needed to modify the product search pugin:
plugins/search/hikashop_products/hikashop_products.php
On line 240, I modified it as follows:
The Ajax search now works fine in both languages.
PS. I still need to do some work on the URL translations when you click on Language Options ( Switching Languages ) It is based on the same plugin.
In case you want to check the ajax or regular search: madecostarica.com/es/
The above code worked for the search RESULT page only.
I was also using a Yootheme AJAX based search and today we noticed that in the secondary language, the Sanish URLs were broken because of a malformed SEF URL:
It was always returning:
es/shop/p/148-cartera-retro-floreada-cierre-pellizco/category_pathway-87
That URL should in fact be:
es/catalogo/p/148-cartera-retro-floreada-cierre-pellizco/category_pathway-87
This time, since the URL was comming from the Hikashop Plugin and the JS code was obfuscated, I needed to modify the product search pugin:
plugins/search/hikashop_products/hikashop_products.php
On line 240, I modified it as follows:
Code:
// Original
//$item_id = $this->params->get('item_id','');
// Likan
$lkplugin = JPluginHelper::getPlugin('system', 'likan_hikashop_multilang');
$lkparams = new JRegistry;
$lkparams->loadString($lkplugin->params);
$localizedParamID = JText::_('LK_LOCALIZED_ITEM_ID'); // You need to add the fieldnamames to the language file(S)
$item_id = $lkparams->get($localizedParamID);
The Ajax search now works fine in both languages.
PS. I still need to do some work on the URL translations when you click on Language Options ( Switching Languages ) It is based on the same plugin.
In case you want to check the ajax or regular search: madecostarica.com/es/
Eduardo Chongkan - Likan Development
likandevelopment.com
The following user(s) said Thank You: nicolas
Please Log in or Create an account to join the conversation.
Time to create page: 0.231 seconds