aleksss454

Как убрать у атрибутов несколько языков на ocstore.

Рекомендуемые сообщения

aleksss454    2

 На сайте несколько языков, атрибуты и их значения в товаре одинаковы для всех языков.

 

Как сделать чтобы значения атрибутов были на всех языках одинаковы (не заполняя одно и тоже для каждого языка) то есть не запрашивали заполнения 
поля дополнительного языка и тянулись от основного языка (убрать мультиязычность атрибутов их значений не удаляя язык).

Сборка ocStore 2.3.0.2.2

Подскажите  как это можно реализовать?

Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
chukcha    888

поставить кнопочку  - копирвать в форме

 

При сохранении (добавлении/редактировании) дублировать из определенного языка

 

Для существующих написать небольшой скрипт для заполнения других языковых полей

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
aleksss454    2

Если я правильно понял данная кнопка позволяет копировать значения атрибутов на другие языки при сохранении. Но как сделать чтобы вообще в атрибутах убрать поле для заполнения на другие языки? Дело в том что в магазине более 45 000 товаров и значений атрибутов у каждого товара более 20 и если в базе хранить одну и туже инфу атрибутов помноженную на языки база будет огромной и сайт будет сильно тормозить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
chukcha    888

не обращайте на это внимание, это самая малость которая может повлиять на призводительность
Налицие индексаPRIMARY KEY (`product_id`,`attribute_id`,`language_id`) решает  такую проблему

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
aleksss454    2

По идее атрибуты можно заполнить как и на основной язык модулем Автоматическая обработка прайс-листов но опять возникает проблема актуальности данных, товары постоянно меняются и пополняются и что бы следить за каждым языком это будет целая проблема, вообще в товаре хочу почти у всего отключить мультиязычность кроме описания и метатегов но как это сделать пока что не понял.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
chukcha    888

Не делайте этого (отключения)

Проще

после загрузки прайс листов запускать небольшой скрипт языковой "синхронизации"

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
aleksss454    2

Не делайте этого (отключения) - думаете может повлиять на работоспособность?

 

На примете есть какой нибудь скрипт который позволит сие исполнить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
chukcha    888
3 минуты назад, aleksss454 сказал:

думаете может повлиять на работоспособность?

Вы живете в сообществе, а оно не знает что вы там отключили

 

4 минуты назад, aleksss454 сказал:

На примете есть какой нибудь скрипт который позволит сие исполнить?

 

Написать

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
chukcha    888

провел эксперимент

UPDATE `newtable` t1
JOIN (SELECT * FROM newtable WHERE `l_id` =1) t2 
ON (t1.`p_id` = t2.`p_id` AND t1.`a_id`=t2.`a_id`)
SET t1.`text` = t2.`text`

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
aleksss454    2

1. Согласен конечно что отключение в коде потом может что нибудь повлечь за собой (например совместимость с каким нибудь модулем). Вот и вопрос как это сделать более правильно что бы потом не было проблем?

Кстати я заметил наименования атрибутов при создании и включении языка сами заполнились или подтягиваются от  языка по умолчанию? и если заполнить значение атрибута то на другом языке появляется.и наименование атрибута и значение. Как такое сделать со значениями атрибута. 

И как проверить наименование атрибута скопировалось в базе или подтягивается от основного языка?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
aleksss454    2
10 минут назад, chukcha сказал:

провел эксперимент


UPDATE `newtable` t1
JOIN (SELECT * FROM newtable WHERE `l_id` =1) t2 
ON (t1.`p_id` = t2.`p_id` AND t1.`a_id`=t2.`a_id`)
SET t1.`text` = t2.`text`

 

И как успехи получилось?

Это запрос в базу данных?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
vier    32

чем больше база, тем хуже для скорости. думаю, это никто не будет отрицать. а дополнительные ключи могут не только положительно влиять на обработку, особенно если они созданы не правильно.

в Вашем желании, я бы посмотрел на вот такую логику (не пробовал, но предполагаю); снять статус со второго языка, а на обработку Названия, Описания и Мета-тэгов изменил бы запросы, чтоб обрабатывало без учета статуса языков. (как Вы понимаете, изменение забросов будет не один).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
chukcha    888
2 минуты назад, vier сказал:

чем больше база, тем хуже для скорости. думаю, это никто не будет отрицать.

Буду,

На каких запросах

Какие дополнительные ключи, если это ключи - родные

 

Не надо отключать ничего если нужны языковые особенности.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
vier    32
2 минуты назад, chukcha сказал:

Буду,

тогда вопрос исчерпан.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
aleksss454    2
7 минут назад, vier сказал:

чем больше база, тем хуже для скорости. думаю, это никто не будет отрицать. а дополнительные ключи могут не только положительно влиять на обработку, особенно если они созданы не правильно.

в Вашем желании, я бы посмотрел на вот такую логику (не пробовал, но предполагаю); снять статус со второго языка, а на обработку Названия, Описания и Мета-тэгов изменил бы запросы, чтоб обрабатывало без учета статуса языков. (как Вы понимаете, изменение забросов будет не один).

Как вариант но главное что бы формировало урл сайт.ру/ru/товар   а с таким вариантом как я понял урл будет одинаков для каждого языка.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
aleksss454    2

Проверил базу данных и заметил что наименования атрибутов не копируются под новый язык при создании язык  а подтягиваются из основного, в базе данных язык только 1 http://prntscr.com/fp8xoy а на сайте отображаются на 2 языках http://prntscr.com/fp8yfo то есть в названиях атрибута такая логика если поле доп языка не заполнено то оно транслируется от главного языка. 

 

Как думаете такое можно реализовать и в значениях атрибутов?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
chukcha    888
20 минут назад, aleksss454 сказал:

И как успехи получилось?

Это запрос в базу данных?

Это пример запроса

 

3 минуты назад, aleksss454 сказал:

Проверил базу данных и заметил что наименования атрибутов не копируются под новый язык при создании язык  а подтягиваются из основного,

Да? А это что?

 

		// Product Attribute
		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_attribute WHERE language_id = '" . (int)$this->config->get('config_language_id') . "'");

		foreach ($query->rows as $product_attribute) {
			$this->db->query("INSERT INTO " . DB_PREFIX . "product_attribute SET product_id = '" . (int)$product_attribute['product_id'] . "', attribute_id = '" . (int)$product_attribute['attribute_id'] . "', language_id = '" . (int)$language_id . "', text = '" . $this->db->escape($product_attribute['text']) . "'");
		}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
aleksss454    2

Мне сложно ответить на вопрос так как плоховато знаю рнр  но по факту выводит атрибуты от главного языка если нет откуда им взяться в базе их нет.

По вашему реально реализовать сценарий запроса если не заполнено поле доп языка выводить по умолчанию то есть с основного языка?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
chukcha    888

Поясняю, я вам привел пример, где "выравниваются" все значения атрибутов

 

И показал код, php здесь не причем

как при добавлении нового языуа, копируются  атрибуты из языка по умолчанию

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
aleksss454    2

1. Не весь ответ понял """где "выравниваются" все значения атрибутов""" но не суть.

 

2. как при добавлении нового языка, копируются  атрибуты из языка по умолчанию - если это вопрос - в магазине удалил все языки кроме рус, 
потом добавил и ничего не заполнял для этого языка когда зашел в атрибуты картина http://prntscr.com/fp9jdi название заполнено в для 2 языков, в базе данных все названия атрибутов с языком 1 по умолчанию, поэтому и предположил что запрос выглядит так
При запросе наименования атрибута если оно не заполнено для данного языка значит подставляется значение от языка по умолчанию (возможно я ошибаюсь).
Такой запрос был бы идеальным вариантом для решения моей проблемы  то есть при запросе в базу данных "значения для атрибута, определенного языка" если его нет то подставляется значение данного атрибута языка по умолчанию.
В итоге ничего заполнять не надо следить не надо и база разумных размеров.

По Вашему реально сделать такой запрос.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу