Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Leaderboard

Popular Content

Showing content with the highest reputation on 02/10/2011 in all areas

  1. Добавление дополнительных полей для продукта Q: Как добавить дополнительное поле для продукта? A: Вам нужно сделать ряд изменений: 0) Определится что хотим сделать :) К примеру, хотим добавить дополнительное поле "Цена за:" "шт.". 1) Приступим. Сначала придумаем алиас для нашего поля. К примеру price_for. а) Определяемся в каком формате будут храниться данные. В нашем случае это будет varchar(64) (символьный). б) Добавляем новый столбец в таблицу: ALTER TABLE `имя_таблицы` ADD `price_for` varchar(64) NOT NULL; 2) Далее говорим админ панеле OpenCart'а о существовании этого столбца. То есть, нам нужно: а) "обновить" в модели продукта запросы к нашей БД. Открываем /admin/model/catalog/product.php мы увидем такой вот запросик: в строке 5 (или 6):$this->db->query("INSERT INTO " . DB_PREFIX . "product SET model = '" . $this->db->escape($data['model']) . "', sku = '" . $this->db->escape($data['sku']) . "', location = '" . $this->db->escape($data['location']) . "', quantity = '" . (int)$data['quantity'] . "', stock_status_id = '" . (int)$data['stock_status_id'] . "', date_available = '" . $this->db->escape($data['date_available']) . "', manufacturer_id = '" . (int)$data['manufacturer_id'] . "', shipping = '" . (int)$data['shipping'] . "', price = '" . (float)$data['price'] . "', weight = '" . (float)$data['weight'] . "', weight_class_id = '" . (int)$data['weight_class_id'] . "', length = '" . (float)$data['length'] . "', width = '" . (float)$data['width'] . "', height = '" . (float)$data['height'] . "', measurement_class_id = '" . (int)$data['measurement_class_id'] . "', status = '" . (int)$data['status'] . "',tax_class_id = '" . (int)$data['tax_class_id'] . "', date_added = NOW()"); Это основной запрос из админки для добавления товара. Нам нужно добавить нашу переменную price_for. Так $this->db->query("INSERT INTO " . DB_PREFIX . "product SET model = '" . $this->db->escape($data['model']) . "', sku = '" . $this->db->escape($data['sku']) . "', location = '" . $this->db->escape($data['location']) . "', quantity = '" . (int)$data['quantity'] . "', stock_status_id = '" . (int)$data['stock_status_id'] . "', date_available = '" . $this->db->escape($data['date_available']) . "', manufacturer_id = '" . (int)$data['manufacturer_id'] . "', shipping = '" . (int)$data['shipping'] . "', price = '" . (float)$data['price'] . "', price_for = '" . (float)$data['price_for'] . "', weight = '" . (float)$data['weight'] . "', weight_class_id = '" . (int)$data['weight_class_id'] . "', length = '" . (float)$data['length'] . "', width = '" . (float)$data['width'] . "', height = '" . (float)$data['height'] . "', measurement_class_id = '" . (int)$data['measurement_class_id'] . "', status = '" . (int)$data['status'] . "',tax_class_id = '" . (int)$data['tax_class_id'] . "', date_added = NOW()"); А также правим запрос обновления продукта (когда жмём изменить продукт). тотже файл. строка 87(88, 89):$this->db->query("UPDATE " . DB_PREFIX . "product SET model = '" . $this->db->escape($data['model']) . "', sku = '" . $this->db->escape($data['sku']) . "', location = '" . $this->db->escape($data['location']) . "', quantity = '" . (int)$data['quantity'] . "', stock_status_id = '" . (int)$data['stock_status_id'] . "', date_available = '" . $this->db->escape($data['date_available']) . "',manufacturer_id = '" . (int)$data['manufacturer_id'] . "', shipping = '" . (int)$data['shipping'] . "', price = '" . (float)$data['price'] . "', price_for = '" . (float)$data['price_for'] . "', weight = '" . (float)$data['weight'] . "', weight_class_id = '" . (int)$data['weight_class_id'] . "', length = '" . (float)$data['length'] . "', width = '" . (float)$data['width'] . "', height = '" . (float)$data['height'] . "', measurement_class_id = '" . (int)$data['measurement_class_id'] . "', status = '" . (int)$data['status'] . "', tax_class_id = '" . (int)$data['tax_class_id'] . "', date_modified = NOW() WHERE product_id = '" . (int)$product_id . "'"); б) добавляем проверку заносимых данных в /admin/controller/catalog/product.php. Сначала укажем о существовании текстовой переменной: строка 440:$this->data['entry_price'] = $this->language->get('entry_price');Добавляем ниже своё $this->data['entry_price_for'] = $this->language->get('entry_price_for');И самое главное, добавляем проверку вносимых данных. Смотрим: строка 679 if (isset($this->request->post['price'])) { $this->data['price'] = $this->request->post['price']; } else if (isset($product_info)) { $this->data['price'] = $product_info['price']; } else { $this->data['price'] = ''; }Ниже добавляем своё if (isset($this->request->post['price_for'])) { $this->data['price_for'] = $this->request->post['price_for']; } else if (isset($product_info)) { $this->data['price_for'] = $product_info['price_for']; } else { $this->data['price_for'] = ''; }в) теперь нужно поправить шаблон в аминке. Что бы мы смогли увидеть поле куда забивать всё это дело. Открываем /admin/view/template/catalog/product_form.tpl строка 141 <tr> <td><?php echo $entry_price; ?></td> <td><input type="text" name="price" value="<?php echo $price; ?>" /></td> </tr>Вставляем наше поле: <tr> <td><?php echo $entry_price_for; ?></td> <td><input type="text" name="price_for" value="<?php echo $price_for; ?>" /></td> </tr>г) Ну и самое главное! в файле /admin/language/russian/catalog/product.phpОписываем какой текст мы будем видеть: $_['entry_price_for'] = 'Цена за:';Всё! С админкой покончено. Можно добавлять товар.2) Теперь делаем самое главное - показуем покупателям єто поле =) а) Говорим продуктам о существовании поля. Открываем файлик /catalog/controller/product/product.php строка 122$this->data['text_price'] = $this->language->get('text_price');Ниже добавляем наше: $this->data['text_price_for'] = $this->language->get('text_price_for');а также вносим переменную в масив: строка 430'price' => $price,добавляем 'price_for' => $price_for,Забыл.... нужно добавить $this->data['price_for'] = $product_info['price_for'];гдето в строке 320б) Добавляем в шаблон. Открываем /catalog/view/theme/ваша_тема/template/product/product.tpl строка 18 <tr> <td>[b]<?php echo $text_price; ?>[/b]</td> <td><?php if (!$special) { ?> <?php echo $price; ?> <?php } else { ?> <span style="text-decoration: line-through;"><?php echo $price; ?></span> [color= #F00;]<?php echo $special; ?>[/color] <?php } ?></td> </tr>ниже добавляем наше <tr> <td><b><?php echo $text_price_for; ?></b></td> <td><?php echo $price_for; ?></td> </tr>в) Ну и напоследок добавляем в файл языка /catalog/language/russian/product/product.php $_['text_price_for'] = 'Цена за:'; Вот и всё! Пользуйтесь. PS. Вопрос к разработчикам. Как мне в шаблоне сделать такую проверку: Если заходит пользователь группы А то делаем что то, а если заходит пользователь из группы Б то делаем чёто другое.
    1 point
  2. ALTER TABLE `имя_таблицы` ADD `price_for` varchar(64) NOT NULL;поменять в запросе, заносящем данные в базу, (int)$price_forна $this->db->escape($price_for)
    1 point
  3. $this->load->model('tool/seo_url'); $this->model_tool_seo_url->rewrite('http://mestodetok.ne...t&product_id=70');
    1 point
  4. ну прямо радостно... Поиск -> "покупка без регистрации": Тема с точно таким названием - Покупка без регистрации.
    1 point
  5. Это вы меняете переход только из корзины.
    1 point
  6. Каталог - Статьи - Terms & Conditions (или как там в русскоязычной версии это обзывается) Каталог - Статьи - Terms & Conditions (или как там в русскоязычной версии это обзывается) поставить галку "Отключено" и в Система - Настройки - Атрибуты - отжать галку в "Подтверждение при заказе:"
    1 point
  7. Не нашёл вот это: Это: Это добавил ещё и в регистрацию: Над этим думаю ещё: Остальное готово. Посмотреть можно тут http://www.assembla.com/code/ocstoreru/subversion/changesets/49
    1 point
  8. В принципе все варианты модуля доставки реализованы на сервисе eDost. Они пытаются рекламировать свои услуги на всех форумах, но как то неудачно. При первом взгляде на eDost впечатление не из лучших остается. Что они хотят предложить как то плохо понятно, а если почитать отзывы, так и совсем уходишь с сайта. Но, пока мне разрабатывают модуль, я временно решил зарегится у них. После регистрации совсем другое впечатление и понимание сервиса - у них есть модуль доставки, который они дают бесплатно. Все можно настроить, любые способы доставки, любыми компаниями, доступными в сервисе eDost (а их вполне достаточно для работы магазина). 1 месяц дают бесплтано для тестирования, а потом платишь абонентскую плату за их сервис, точнее за соединение с их сервером, где идет обработка и расчет заказа в автоматическом режиме. И ваш вопрос supmener там решается легко - вы ведь просите оплату наложенным платежом. Там есть.Вот и попробуем, тем более модуль и 1 месяц - святая русская халява.
    1 point
  9. Мод переехал в раздел дополнений. Ссылка в конце сообщения. UPD: + Исправлена ошибка Error: Could not load language module/webme_categories_at_homepage!Спасибо gdemon за репорт.Те, кому не сложно могут просто выкусить строчку, подгружающую языковой файл (он не используется). Открываем catalog/controller/module/webme_categories_at_homepage.phpудаляем (четвертая строка) $this->language->load('module/webme_categories_at_homepage'); Для остальных и тех, кто еще не скачал - перезалил архив. ######################################################## Установка: 1) Распаковываем архив; 2) Заливаем файлы из папки "upload" в корневую директорию магазина; 3) Идем в админку и ставим модуль. Настройки: 1) Вкл/выкл :D 2) Порядок сортировки; 3) Выбираем категорию (с версии 0.3 можно выбирать несколько категорий), которая будет отображаться; 4) Максимум товаров (0 - все товары из категории). = = = В шаблоне модуля в админке есть несколько закомментированных участков. Это, так сказать, для будущих изменений... если таковые будут, конечно :lol: Скриншоты предыдущих версий Скриншоты v.0.3 СКАЧАТЬ / DOWNLOAD
    1 point
×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.