Fórum OpenCart Brasil

Por um e-commerce livre, confiável e profissional

Suporte geral sobre problemas técnicos para OpenCart v2.x.
#74557
Ola, Alguém por favor teria alguma ideia como gerar sitemap por idioma, tendo em vista que opencart por padrão somente gera no idioma principal da loja. Obrigado
OC 2.0.3.2
Editado pela última vez por tomporoskipy em 19 Ago 2017, 10:59, em um total de 4 vezes.
#74564
Você também pode fazer da seguinte maneira.

Abra o arquivo .htaccess e adicione a linha abaixo.
Código: Selecionar todos
RewriteRule ^([A-Za-z-]+)/sitemap.xml$ index.php?route=extension/feed/google_sitemap&language=$1 [L]
'
'
'
Seu código deve ficar mais ou menos assim
Código: Selecionar todos
RewriteBase /
RewriteRule ^sitemap.xml$ index.php?route=extension/feed/google_sitemap [L]
# Modification - Start
RewriteRule ^([A-Za-z-]+)/sitemap.xml$ index.php?route=extension/feed/google_sitemap&language=$1 [L]
# Modification - End
RewriteRule ^googlebase.xml$ index.php?route=extension/feed/google_base [L]
RewriteRule ^system/storage/(.*) index.php?route=error/not_found [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
'
'
'
Abra o arquivo https://github.com/opencart/opencart/bl ... ap.php#L10 e na linha 10 (aproximadamente), adicione o código abaixo.
Código: Selecionar todos
if (isset($this->request->get["language"])) {
     $languages = $this->model_localisation_language->getLanguages();
     $language  = addslashes(strip_tags($this->request->get["language"]));
                
     if (isset($languages[$language])) {
          $this->config->set('config_language_id', $languages[$language]["language_id"]);
     }
}
'
'
'
Basta acessar:
https://www.YOUR-STORE.com/en/sitemap.xml
https://www.YOUR-STORE.com/pt-br/sitemap.xml
https://www.YOUR-STORE.com/CODE-LANGUAGE/sitemap.xml

Ps.: Pode ser que o código tenha uma variação a depender da versão da sua loja.
Ps².: Só vai funcionar com servidores apache2
Ps³.: Caso você utilize Nginx, IIS, etc. Entre em contato com sua hospedagem e veja como prosseguir com o passo 1
tomporoskipy gostou disso
#74800
:P Funcionou Perfeitamente. Muito Obrigado
valdeir2000 escreveu: 01 Ago 2017, 05:44 Você também pode fazer da seguinte maneira.

Abra o arquivo .htaccess e adicione a linha abaixo.
Código: Selecionar todos
RewriteRule ^([A-Za-z-]+)/sitemap.xml$ index.php?route=extension/feed/google_sitemap&language=$1 [L]
'
'
'
Seu código deve ficar mais ou menos assim
Código: Selecionar todos
RewriteBase /
RewriteRule ^sitemap.xml$ index.php?route=extension/feed/google_sitemap [L]
# Modification - Start
RewriteRule ^([A-Za-z-]+)/sitemap.xml$ index.php?route=extension/feed/google_sitemap&language=$1 [L]
# Modification - End
RewriteRule ^googlebase.xml$ index.php?route=extension/feed/google_base [L]
RewriteRule ^system/storage/(.*) index.php?route=error/not_found [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
'
'
'
Abra o arquivo https://github.com/opencart/opencart/bl ... ap.php#L10 e na linha 10 (aproximadamente), adicione o código abaixo.
Código: Selecionar todos
if (isset($this->request->get["language"])) {
     $languages = $this->model_localisation_language->getLanguages();
     $language  = addslashes(strip_tags($this->request->get["language"]));
                
     if (isset($languages[$language])) {
          $this->config->set('config_language_id', $languages[$language]["language_id"]);
     }
}
'
'
'
Basta acessar:
https://www.YOUR-STORE.com/en/sitemap.xml
https://www.YOUR-STORE.com/pt-br/sitemap.xml
https://www.YOUR-STORE.com/CODE-LANGUAGE/sitemap.xml

Ps.: Pode ser que o código tenha uma variação a depender da versão da sua loja.
Ps².: Só vai funcionar com servidores apache2
Ps³.: Caso você utilize Nginx, IIS, etc. Entre em contato com sua hospedagem e veja como prosseguir com o passo 1
#74808
Abra o arquivo https://github.com/opencart/opencart/bl ... ap.php#L10 e adicione o código abaixo.
Código: Selecionar todos
if (isset($this->request->get["store_id"])) {
    $this->config->set("store_id", (int)$this->request->get["store_id"]);
}
As urls ficarão:
https://www.YOUR-STORE.com/en/sitemap.xml?store_id=1
https://www.YOUR-STORE.com/pt-br/sitemap.xml?store_id=2
https://www.YOUR-STORE.com/CODE-LANGUAG ... store_id=3
#74824
Olá, fiz o procedimento mas ainda aparece nome do "produto" em ingles que é o idioma principal, não estou usando subdominios e sim pastas/diretorios para multilojas. link abaixo. Obrigado

site:storelatina.com/brasil/vender-no-exterior
valdeir2000 escreveu: 16 Ago 2017, 21:55 Abra o arquivo https://github.com/opencart/opencart/bl ... ap.php#L10 e adicione o código abaixo.
Código: Selecionar todos
if (isset($this->request->get["store_id"])) {
    $this->config->set("store_id", (int)$this->request->get["store_id"]);
}
As urls ficarão:
https://www.YOUR-STORE.com/en/sitemap.xml?store_id=1
https://www.YOUR-STORE.com/pt-br/sitemap.xml?store_id=2
https://www.YOUR-STORE.com/CODE-LANGUAG ... store_id=3
#74825
Vamos por parte. Como o tópico principal é sobre sitemap, vamos primeiro por ele.

Testei aqui e funcionou (os sitesmaps):
http://storelatina.com/en/sitemap.xml?store_id=1
http://storelatina.com/pt-br/sitemap.xml?store_id=1
http://storelatina.com/es-es/sitemap.xml?store_id=1
#74828
Desculpe, mas o sitemap sempre funcionou, problema que nas multilojas quando consultado no google site: o titulo do produto nao aparece no idioma que as sublojas foram configuradas.
ex:
http://storelatina.com/portugal/sitemap.xml Portugues
http://storelatina.com/argentina/sitemap.xml Espanhol
http://storelatina.com/argentina/sitemap.xml Espanhol
http://storelatina.com/usa/sitemap.xml Ingles
etc...sao 52 paises 3 idomas
ex: abaixo onde aparece em ingles onde deveria ser portugues.

International Sales - Marketplace Store Latina
storelatina.com/brasil/vendas-internacionais
International Sales Store Latina Present in the Americas, Europe and Africa, totaling more than 60 countries.

Obrigado pela atenção
#74843
se volocar a url abaixo no google vera que esta em inglês o que deveria esta em espanhol.

site:storelatina.com/argentina/
valdeir2000 escreveu: 17 Ago 2017, 20:41 Vamos por parte. Como o tópico principal é sobre sitemap, vamos primeiro por ele.

Testei aqui e funcionou (os sitesmaps):
http://storelatina.com/en/sitemap.xml?store_id=1
http://storelatina.com/pt-br/sitemap.xml?store_id=1
http://storelatina.com/es-es/sitemap.xml?store_id=1