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

Leaderboard

Popular Content

Showing content with the highest reputation on 04/26/2011 in all areas

  1. Прошу прощения, если кто-то на форуме меня потерял... Дела семейные; продажа дачи, переезд с квартиры, обмен Аутлендера на автобус H-1 и прочее, + поездка в Финляндию 1-го мая за покупкой iPad2... )) В общем, как всё решится (примерно ещё неделя) - сразу же вернусь на форум и возобновлю размещение своих советов/идей/решений и т.п. Благо, их скопилось уже "нормально"... ))) Но, на форум захожу каждый день... Спасибо за отзывы. ))
    2 points
  2. Добавление дополнительных полей для продукта 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
  3. У вас на сайте все ссылки ведут на адрес '.64-bit.ru' Уберите точку в начале адреса
    1 point
  4. Если хотите по простому, то: , т.е. выдавать не переменной а просто текстом
    1 point
  5. Выкладываю архив с исправлениями которые обсуждались в этой теме yml.zip
    1 point
  6. Пофиксил. Для заинтересованных: В файле catalog/controller/payment/robokassa.php в функции callback нужно заменить вот такие строки: echo "OK\n"; вот на такую: echo "OK".$order_id."\n"; dim565, спасибо за возможность отладить это дело.
    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.