Jump to content

Wisselen Van Taal (Language Selector Block) Geeft 404 Error Bij Blog


sonjasonja

Recommended Posts

Ik heb een shop in PS 1.6.0.9. Drietalig. Alles werkt prima. Maar als ik bij de frontoffice (dus als bezoeker) mijn blogpagina van taal wissel, krijg ik een 404 error. Check het hier: www.unitycosmetics.com/nl/blog De blog is nederlands, maar ook beschikbaar in engels en duits. Zodra je op het vlaggetje klikt voor duits of engels, komt er een melding: http://www.unitycosmetics.com/en/index.php?controller=blog&fc=module  Als je bij www.unitycosmetics.com/nl/blog  de NL wijzigt in EN of DE (kleine letters), dan zie je wel de engelse en resp. duitse blog (het ligt dus niet aan de htaccess, de blogpagina's zijn er gewoon in alle drie de talen).

Ik heb nergens in deze shop een vertaalprobleem, alleen maar bij deze blog. De blog is een module PrestaBlog. De ontwikkelaar zegt dat de blog helemaal goed is, en vermoedt dat het probleem van Blocklanguages komt. We hebben blocklanguages (language selector block, versie 1.5.0) al verwijderd, een fresh install gedaan, toch blijft dit probleem bestaan.

Iemand een idee hoe ik kan achterhalen wat deze error veroorzaakt (en hoe ik er van af kan komen)? Ik ben geen 'pro' in programmeren e.d., ik hoop dat iemand me op weg kan helpen...

Link to comment
Share on other sites

@MDekker, dank voor de reactie. Misschien wil je me nog een beetje verder op weg helpen ;-) 

Het stukje functionaliteit wat je vermeld, dat moet ik toevoegen in ftp, in   /modules/blocklanguages/blocklanguages.tpl ? Of in een andere file?

Maakt het iets uit op welke plek dat stukje wordt neergezet? In Blocklanguages.tpl staat nu dit:

 

<!-- Block languages module -->

 

{if count($languages) > 1}

 

<div id="languages_block_top">

 

<div id="countries">

 

{* @todo fix display current languages, removing the first foreach loop *}

 

{foreach from=$languages key=k item=language name="languages"}

 

{if $language.iso_code == $lang_iso}

 

<p class="selected_language">

 

<img src="{$img_lang_dir}{$language.id_lang}.jpg" alt="{$language.iso_code|escape:'html':'UTF-8'}" width="16" height="11" />

 

</p>

 

{/if}

 

{/foreach}

 

<ul id="first-languages" class="countries_ul">

 

{foreach from=$languages key=k item=language name="languages"}

 

<li {if $language.iso_code == $lang_iso}class="selected_language"{/if}>

 

{if $language.iso_code != $lang_iso}

 

{assign var=indice_lang value=$language.id_lang}

 

{if isset($lang_rewrite_urls.$indice_lang)}

 

<a href="{$lang_rewrite_urls.$indice_lang|escape:htmlall}" title="{$language.name|escape:'html':'UTF-8'}" rel="alternate" hreflang="{$language.iso_code|escape:'html':'UTF-8'}">

 

{else}

 

<a href="{$link->getLanguageLink($language.id_lang)|escape:htmlall}" title="{$language.name|escape:'html':'UTF-8'}" rel="alternate" hreflang="{$language.iso_code|escape:'html':'UTF-8'}">

 

{/if}

 

{/if}

 

<img src="{$img_lang_dir}{$language.id_lang}.jpg" alt="{$language.iso_code|escape:'html':'UTF-8'}" width="16" height="11" />

 

{if $language.iso_code != $lang_iso}

 

</a>

 

{/if}

 

</li>

 

{/foreach}

 

</ul>

 

</div>

 

</div>

 

<script type="text/javascript">

 

$(document).ready(function () {

 

$("#countries").mouseover(function(){

 

$(this).addClass("countries_hover");

 

$(".countries_ul").addClass("countries_ul_hover");

 

});

 

$("#countries").mouseout(function(){

 

$(this).removeClass("countries_hover");

 

$(".countries_ul").removeClass("countries_ul_hover");

 

});

 

});

 

</script>

 

{/if}

 

<!-- /Block languages module -->

Link to comment
Share on other sites

en in blocklanguages.php staat dit:

 

if (!defined('_PS_VERSION_'))
 exit;

class BlockLanguages extends Module
{
 public function __construct()
 {
  $this->name = 'blocklanguages';
  $this->tab = 'front_office_features';
  $this->version = '1.5.0';
  $this->author = 'PrestaShop';
  $this->need_instance = 0;

  parent::__construct();

  $this->displayName = $this->l('Language selector block');
  $this->description = $this->l('Adds a block allowing customers to select a language for your store\'s content.');
  $this->ps_versions_compliancy = array('min' => '1.6', 'max' => _PS_VERSION_);
 }

 public function install()
 {
  return (parent::install() && $this->registerHook('displayNav') && $this->registerHook('displayHeader'));
 }

 protected function _prepareHook($params)
 {
  $languages = Language::getLanguages(true, $this->context->shop->id);
  if (!count($languages))
   return false;
  $link = new Link();

  if ((int)Configuration::get('PS_REWRITING_SETTINGS'))
  {
   $default_rewrite = array();
   if (Dispatcher::getInstance()->getController() == 'product' && ($id_product = (int)Tools::getValue('id_product')))
   {
    $rewrite_infos = Product::getUrlRewriteInformations((int)$id_product);
    foreach ($rewrite_infos as $infos)
     $default_rewrite[$infos['id_lang']] = $link->getProductLink((int)$id_product, $infos['link_rewrite'], $infos['category_rewrite'], $infos['ean13'], (int)$infos['id_lang']);
   }

   if (Dispatcher::getInstance()->getController() == 'category' && ($id_category = (int)Tools::getValue('id_category')))
   {
    $rewrite_infos = Category::getUrlRewriteInformations((int)$id_category);
    foreach ($rewrite_infos as $infos)
     $default_rewrite[$infos['id_lang']] = $link->getCategoryLink((int)$id_category, $infos['link_rewrite'], $infos['id_lang']);
   }

   if (Dispatcher::getInstance()->getController() == 'cms' && (($id_cms = (int)Tools::getValue('id_cms')) || ($id_cms_category = (int)Tools::getValue('id_cms_category'))))
   {
    $rewrite_infos = (isset($id_cms) && !isset($id_cms_category)) ? CMS::getUrlRewriteInformations($id_cms) : CMSCategory::getUrlRewriteInformations($id_cms_category);
    foreach ($rewrite_infos as $infos)
    {
     $arr_link = (isset($id_cms) && !isset($id_cms_category)) ?
      $link->getCMSLink($id_cms, $infos['link_rewrite'], null, $infos['id_lang']) :
      $link->getCMSCategoryLink($id_cms_category, $infos['link_rewrite'], $infos['id_lang']);
     $default_rewrite[$infos['id_lang']] = $arr_link;
    }
   }
   $this->smarty->assign('lang_rewrite_urls', $default_rewrite);
  }
  return true;
 }

 /**
 * Returns module content for header
 *
 * @param array $params Parameters
 * @return string Content
 */
 public function hookDisplayTop($params)
 {
  if (!$this->_prepareHook($params))
   return;
  return $this->display(__FILE__, 'blocklanguages.tpl');
 }

 public function hookDisplayNav($params)
 {

  return $this->hookDisplayTop($params);
 }

 public function hookDisplayHeader($params)
 {
  $this->context->controller->addCSS($this->_path.'blocklanguages.css', 'all');
 }
}

Link to comment
Share on other sites

Natuurlijk fijn dat het er goed uit ziet. Maar ook jammer, want de zoektocht is dus nog steeds gaande. Enig idee wat het dan wel kan zijn (of hoe ik erachter kan komen)? Ik zie wel, dat als ik in Chrome bij zo'n foutmelding (na het aanklikken van een ander taalvlaggetje) op control-u klik, dat ik onderstaande tekst zie (een stukje daaruit heb ik hier gecopieerd), daar lijkt de live chat pro module (lpc) ook iets te doen met de blog (controller=blog) ?? Maar als ik die module live chat pro verwijder, dan werkt de blog nog steeds niet, dus dat lijkt het ook niet te zijn... gek word ik er van...

 

*/;lcp_shop_domain="www.unitycosmetics.com";lcp_module_name="livechatpro";lcp_db_prefix="ps_";lcp_path="/modules/livechatpro/";lcp_url="http://www.unitycosmetics.com/modules/livechatpro/";lcp_current_url="http://www.unitycosmetics.com/en/index.php?controller=blog&fc=module";lcp_token="d5f170067eff895ee0f02972d134cc73";lcp_id_employee="";lcp_emoticons=JSON.parse(JSON.stringify({"0":{"id_emoticon":"1","code":":)","filename":"happy.gif","alias":"N"},"1":{"id_emoticon":"3","code":":(","filename":"sad.gif","alias":"N"},"2":{"id_emoticon":"5","code":";)","filename":"winking.gif","alias

Link to comment
Share on other sites

In themes/jewelstore/modules/blocklanguages/blocklanguages.tpl staat dit (en bijna onderaan staat volgens mij jouw suggestie, alleen daar staat ook nog het volgende stukje achter:   title="{$language.name}">:

 

COPY VAN BLOCKLANGUAGES.TPL:

 

<div id="languages_block_top">

 

<div id="countries">

 

<ul style="list-style:none;">

 

{foreach from=$languages key=k item=language name="languages"}

 

<li {if $language.iso_code == $lang_iso}class="selected_language"{/if} style="display:inline-block;margin:2px;">

 

{if $language.iso_code != $lang_iso}

 

{assign var=indice_lang value=$language.id_lang}

 

{if isset($lang_rewrite_urls.$indice_lang)}

 

<a href="{$lang_rewrite_urls.$indice_lang|escape:htmlall}" title="{$language.name}">

 

{else}

 

<a href="{$link->getLanguageLink($language.id_lang)|escape:htmlall}" title="{$language.name}">

 

{/if}

 

{/if}

 

<img src="{$img_lang_dir}{$language.id_lang}.jpg" alt="{$language.iso_code}" width="16" height="11" />

 

{if $language.iso_code != $lang_iso}

 

</a>

 

{/if}

 

</li>

 

{/foreach}

 

</ul>

 

</div>

 

</div>

Link to comment
Share on other sites

echt super dat je even meekijkt! Templates worden opnieuw gecompileerd bij wijzigingen, dat staat goed ingesteld. We hebben een module 'one page cache', maar die hebben we al bewust gedeactiveerd (jammer, want het kwam de snelheid van de site ten goede) zodat het zeker daar niet vandaan kan komen....

Link to comment
Share on other sites

:rolleyes: MDekker, je bent mijn superheld! Al 4 maanden ben ik aan het zoeken. De ontwikkelaar van de blog-module kon me hier niet mee helpen (en dat snap ik ook wel, want het probleem zat niet in de module zelf). En jawel hoor, jij hebt het gevonden: door Link.php te verwijderen is het probleem opgelost !!!!!  Helemaal super, geweldig dat je hier zo uitgebreid naar hebt willen kijken. Mijn dank is groot!!!!

Link to comment
Share on other sites

nee, ik gebruik geen separate module voor url. Alleen de standaard 'pretty url' die in de backoffice aan staat, maar daar heeft die link.php volgens mij niets mee te maken (want dat werkt nu allemaal nog). Ik heb verder ook niet gemerkt dat er nu gekke dingen gebeuren in de webshop (na verwijdering van link.php), ik had 't eerst even 'uitgetest' gisteren voordat ik het in de liveshop verwijderde.

Wel heel fijn dat het nu allemaal goed werkt, de blog werd veel gelezsen en gaf continu foutmeldingen als iemand van taal switchte.

Link to comment
Share on other sites

nee, hoe de override daar is gekomen, dat is me een raadsel. We hebben wel een module One-Page-Checkout waar de developer 2 jaar geleden iets aan heeft moeten doen om het goed te laten werken. En het Jewelstore-theme is ook niet het allervriendelijkste theme qua gebruik (maar ja, als je zoiets dan na 5 jaar wilt gaan veranderen, dan is dat wel een heftige). We hebben vorig jaar zelf de shop geupgraded van 1.3 (!!) naar 1.6.0.9, dat was nogal heftig, misschien is er toen wel iets misgegaan zonder dat wij dat hebben gemerkt, en komt het nu pas naar voren door die prestashop blog?

Ik herinner me echter wel, dat helemaal in het begin, toen we de prestablog installeerden, dat alles toen wel goed leek te werken. In die prestashopblog zit ook een 'enable friendly url', misschien dat daar iets wordt gecreëerd. Dat zal ik eens in de gaten houden als we in de blog weer een nieuw item aanmaken (al die items hebben friendly url, als ik na een nieuwe post merk dat het vertalen weer hetzelfde euvel vertoont, dan komt het dus daar vandaan en dan is het een kwestie van verwijderen van link.php).

Ik ga daar nu wel extra op letten, die overrides, ik snap inderdaad dat die zo beperkt mogelijk zouden moeten zijn...

 

heel erg bedankt voor het meekijken, hier was ik zelf nooit uitgekomen (ik had ook al gepost op het engelse forum, kreeg een reactie van Vekia die dacht dat het de translationblock was, maar 't was dus toch iets anders).

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...