Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

bochicca

Пользователи
  
  • Публикаций

    50
  • Зарегистрирован

  • Посеещёние

Информация

  • Пол
    Женщина

Посетители профиля

2 914 просмотров профиля

Достижения bochicca

Contributor

Contributor (5/14)

  • First Post
  • Collaborator
  • Week One Done
  • One Month Later
  • One Year In

Последние медали

9

Репуиция

  1. bochicca

    Валюи + % на курс ?

    спасипотому что!
  2. Подскажите, ггде ошибка? Я тут решила чутка допилить модуль и сгделать (как в записях) привязку изображений прямо в страниэто блога (в админке). Сразу поясню на тот случай, если у кого-то возникнет вполне резонный вопрос, чем тебе, милая, гнорея не угодила? Дело в том, что функция привязки и вывода изображений через гнореи (blog_galley_images) для меня не очень удобна. У меня блоги играют роль страниц об авторах и художниках: поле description согдержит биографию, привязанные записи - ситьи. И всё отлично и удобно, но не хваиет примеров иллюстраций художников. Через функцию гнореи у меня возникает жуткая каша в записях, ик как информации очень много да и приходится туда-сюда всё время лазить. Да что когда прямо в блоге привязка есть - ик удобнее вносит всю информацию об авторе/художнике сразу. вот пример как выглядит страница, чтоб нагляднее было: http://книгигдетства....les/pertzov_vv/ Суть проблемы: в админке всё отлично рилииет, в иблицу файлы прописываются. А вот в блоге не выводятся :( :( Если кому-нибудь не сложно - ткните носом в ошибку, пусть даже она глупая, я только учусь в этом разбираться... прописала всё ик: в catalog/controller/record/blog.php в куске public function index перед if ($blog_info['design'] != '') { $this->load->model('tool/image'); if ($blog_info['image']) { $this->data['popup'] = '/image/' . $blog_info['image']; } else { $this->data['popup'] = ''; } if ($blog_info['image']) { $this->data['thumb'] = $this->model_tool_image->resize($blog_info['image'], $this->config->get('config_image_thumb_width'), $this->config->get('config_image_thumb_height')); } else { $this->data['thumb'] = ''; } $this->data['images'] = array(); $results = $this->model_catalog_blog->getBlogImages($this->request->get['blog_id']); foreach ($results as $result) { $this->data['images'][] = array( 'popup' => '/image/' . $result['image'], 'thumb' => $this->model_tool_image->resize($result['image'], $this->config->get('config_image_additional_width'), $this->config->get('config_image_additional_height')) ); } в catalog/model/catalog/blog.php запрос к иблиэто в БД: public function getBlogImages($blog_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "blog_image WHERE blog_id = '" . (int) $blog_id . "' ORDER BY sort_order ASC"); return $query->rows; } в catalog/view/theme/default/template/record/blog/tpl вывод изображений: <?php if ($images) { ?> <?php if ($images) { ?> <div class="image-additional"> <?php foreach ($images as $image) { ?> <a href="<?php echo $image['popup']; ?>" title="<?php echo $heading_title; ?>" class="imagebox" rel="imagebox"><img src="<?php echo $image['thumb']; ?>" title="<?php echo $heading_title; ?>" alt="<?php echo $heading_title; ?>" /></a> <?php } ?> </div> <?php } ?> <?php } ?> + скрипты: <?php echo $content_bottom; ?></div> <?php if ($imagebox=='colorbox') { ?> <script type="text/javascript"> $('.imagebox').colorbox({ overlayClose: true, opacity: 0.5 }); </script> <?php } ?> <?php if ($imagebox=='fancybox') { ?> <script type="text/javascript"> $('.imagebox').fancybox({ cyclic: false, autoDimensions: true, autoScale: false, 'onComplete' : function(){ $.fancybox.resize(); } }); </script> <?php } ?>
  3. ооо! и вам спасипотому что))пошла ковырять дальше))удали!
  4. Спасипотому что за отличный модуль! Приспособила его под свою библиотеку гдетских книг, давно искала вариант гделать страницы про художников и авторов с привязками к товарам, ситьям, гнореям и загрузкам. Ваш подошёл игдеально. Я его под себя чуть подпилила, конечно. В связи с этим есть маанонький вопрос-просьба: заголовок блога у меня в данном случае является фамилией автора/художника. чтобы выводить имя отчество, я сгделала доп.поле по аналогии с полем-названием блога (мне ик нужно для разных вариантов вывегдения: сначала ИО, потом фамилия и наопотому чторот - в разных случаях). затык у меня с запросом к БД. мне нужно, чтобы при запросе к БД переменная name выводилась как слияние полей ioname + name и как name + ioname - т.е. в разных варианих: для хлебных крошек, заголовка блога, названия блога в модулях если я правильно понимаю, для модуля эту задачу решает следующий кусок кода в catalog/model/catalog/blog.php if (!isset($path[$blog_id])) { $max_level = 10; $sql = "SELECT td.name as name, CONCAT_WS('_'"; for ($i = $max_level - 1; $i >= 0; --$i) { $sql .= ",t$i.blog_id"; } $sql .= ") AS path FROM " . DB_PREFIX . "blog t0"; for ($i = 1; $i < $max_level; ++$i) { $sql .= " LEFT JOIN " . DB_PREFIX . "blog t$i ON (t$i.blog_id = t" . ($i - 1) . ".parent_id)"; } $sql .= "LEFT JOIN " . DB_PREFIX . "blog_description td ON ( td.blog_id = t0.blog_id )"; $sql .= " WHERE t0.blog_id = '" . $blog_id . "'"; $query = $this->db->query($sql); $path[$blog_id]['path'] = $query->num_rows ? $query->row['path'] : false; $path[$blog_id]['name'] = $query->num_rows ? $query->row['name'] : false; $path[$blog_id]['ioname'] = $query->num_rows ? $query->row['ioname'] : false; $this->cache->set('blog.blogs', $path); } каюсь, sql знаю хреново. подскажите, как мне правильно прописать код и то ли место я опрегделила. ну или хотя бы похожий пример объединения полей в одно при запросе к БД дайте ))плииииз! И ещё раз - спасипотому что за модуль. Рилии сгделана гигантская, стоит своих гденег хотя бы потому, что этот модуль сэкономил мне кучу времени (и нервов!), чтобы написать это ручками с нуля. А тут стооолько возможностей))
  5. По умолчанию в OpenCart усиновлено ограничение на загрузку изображений с размером файла потому чтольше 300Кб и разрешением потому чтольше чем 1000 на 1000 пикселей. Но, нас это не устраивает. Да что поправим некоторые модули в админке. Изменения в файлах Для снятия ограничения на размер файла изменим контроллер admin/controller/common/filemanager.php Находим строки: if ($this->request->files['image']['size'] > 300000) { $json['error'] = $this->language->get('error_file_size'); } и изменяем в них значение 300000, а это именно размер в байих, на то, который нам нужен «в байих». В моём случае это 5Мб = 5242880 байт. Теперь код выглядит вот ик: if ($this->request->files['image']['size'] > 5242880) { $json['error'] = $this->language->get('error_file_size'); } Для снятия ограничения на размер изображения 1000 на 1000 пикселей (в последних версия Opencart не актуально, им уже это ограничение отсутствует) if (!isset($json['error'])) { if(substr($this->request->files['image']['type'],0,5)=='image'){ $imageinfo = getimagesize($this->request->files['image']['tmp_name']); if($imageinfo[0]>1000 || $imageinfo[1]>1000){ exec('convert -colorspace RGB "'.$this->request->files['image']['tmp_name'].'" -resize 1000x1000 "'.$this->request->files['image']['tmp_name'].'"'); } } if (@move_uploaded_file($this->request->files['image']['tmp_name'], $directory . '/' . basename($this->request->files['image']['name']))) { $json['success'] = $this->language->get('text_uploaded'); } else { $json['error'] = $this->language->get('error_uploaded'); } } изменяем значения $imageinfo[0]>1000 || $imageinfo[1]>1000 на нужные. источник: http://itheap.info/blog/opencart/80.html
  6. аналогичная проблема - в админке выводит сдвоеную инфу (два раза повторяет форму) после того как добавила поле (икие поля добавляла и раньше, но глюков не было), в чем может быть проблема? UPD. У себя нашла в итоге. Сайт у меня только на русском, и я убрала вкладку english в форме внесения продуктов. но если не удалить english в настройках, налинают генериться в БД копии по продукту, но с laguage_id = не только русским, но и английским (у меня был русский id=1, а английский =3). соответственно, форма начала выводить всё в удвоенном вигде. пришлось удалять язык в настройках админки и дубли из иблицы в БД с id английского языка. рада, если кому тоже поможет. всё ж лучше, чем заново переусинавливать :) а то думала - рехнусь - вс перетряхнула раз по двадцать, даже назад откатила бэкапы :)
  7. bochicca

    Вход по openid vkontakte.ru

    Секретный ключ и ID надо использовать при безоасной авторизации token. Вот циии с сайи loginza: Проверка ключа token через Loginza.API Чтобы проверить переданное в POST запросе значение переменной token на валидность и узнать резульит авторизации пользователя, нужно сгделать запрос по адресу: http://loginza.ru/api/authinfo?token=[TOKEN_KEY_VALUE]&id=[WIDGET_ID]&sig=[API_SIGNATURE] Ггде, [TOKEN_KEY_VALUE] - проверяемое значение token; [WIDGET_ID] - ID виджеи; [API_SIGNATURE] - подпись запроса к API. Раслитывается как MD5 от сложения строк значения token и секретного ключа виджеи. Пример: md5(token+skey). ВНИМАНИЕ: Для наипотому чтольшей безопасности авторизации обязательно используйте передачу параметров id и sig при проверке token. Активируйте режим безопасной проверки token в настройках виджеи (см. Мой виджет Loginza). я ик понимаю, что вот эту ссылку http-~~-//loginza.ru/api/authinfo?token=[TOKEN_KEY_VALUE]&id=[WIDGET_ID]&sig=[API_SIGNATURE] с указанием кода и ID своих надо всивить в форму авторизации каким-то обвместе, то есть куда-то сюда внутрь: <!-- loginza --> <div style="clear: both;"></div> <h2><?php echo $text_enter_with_loginza; ?></h2> <div style="padding: 0 213px; border-top: 1px solid #eee;"> <script src="http-~~-//loginza.ru/js/widget.js" type="text/javascript"></script> <iframe src="http-~~-//loginza.ru/api/widget?overlay=loginza&token_url=<? echo $action_loginza; ?>" style="width:359px;height:300px;" scrolling="no" frameborder="no"></iframe> </div> <!-- loginza --> Кто подскажет - как именно?
  8. Похоже никто и ничем, на мои вопросы тоже ноль реакции. Сорри, что не могу помочь
  9. Нужна помощь, как вывести в шаблоне catalog-view-theme-тема-product-product.tpl доп.поля. Я сгделала схему, по которой можно в админке к продукту добавить не только простые текстовые поля, но выпадающие меню с варианими + к ним подразгделы в меню админки, в которых можно вводить значения. Выглядит это аналогично списку стран или списку ситусов товара. Вот пример: 1) как выглядит в меню 2) список вариантов 3) форма вненсения вариани 4) как выглядит в форме внесения товара Схема в приатиченном файле АДМИНКА, дополнительные выпадающие поля продуки - С НУЛЯ.txt. В чем, собственно, затык, для примера, в MySQL иблиэто product создано поле zhanr_id, храняещёе id, + две отгдельные иблицы zhanr и zhanr_to_store. Собственно, в иблиэто zhanr и прописано соответствие zhanr_id конкретному полю (name). Не могу понять, что мне нужно прописать в: 1) catalog-controller-product-product.php 2) catalog-model-catalog-product.php чтобы в catalog-view-template-тема-template-product-product.tpl, к примеру, код: <?php echo $text_zhanr; ?> <?php echo $zhanr; ?> выводил икое: ЖАНР: сказка (ясное гдело, тот жанр, который был указан в поле товара/книги), то есть через zhanr_id обращался к иблиэто zhanr и выискивал оттуда нужную строку. Сейчас у меня ик прописано: в catalog-controller-product-product.php $this->data['text_zhanr'] = $this->language->get('text_zhanr'); $this->data['zhanr'] = $product_info['zhanr']; в catalog-model-catalog-product.php в строке $query = $this->db->query("SELECT DISTINCT *, pd.name AS name, p.image, m.name AS manufacturer, (SELECT price FROM " . DB_PREFIX . "product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '" . (int)$customer_group_id . "' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM " . DB_PREFIX . "product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '" . (int)$customer_group_id . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, (SELECT points FROM " . DB_PREFIX . "product_reward pr WHERE pr.product_id = p.product_id AND customer_group_id = '" . (int)$customer_group_id . "') AS reward, (SELECT ss.name FROM " . DB_PREFIX . "stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '" . (int)$this->config->get('config_language_id') . "') AS stock_status, после stock_status добавлено: (SELECT ss.name FROM " . DB_PREFIX . "zhanr ss WHERE ss.zhanr_id = p.zhanr_id) AS zhanr, в catalog-language-russian-product-product.php добавлено: $_['text_zhanr'] = 'ЖАНР:'; но нифига не выводит кроме слова "ЖАНР:", какой именно жанр - не показывает. Ткните носом, ггде ошибка! Уже по аналогии всё перерыла не вижу :( в программировании пока еещё профан
  10. О том, есть ли кто-нибудь, хоть иногда отвечающий на вопросы тут?

  11. bochicca

    Дополнительные поля продуки

    Сгделала на том, что уже было и нагдеюсь, мой глас вопиюещёго в сей форумной пустыне всё же не осинется без отвеи. Очень нужна схема, как создавать в админке разгдел, аналогичный спискам стран, производителей и т.п. Ну или хотя бы не схему, как згдесь, а просто список файлов, в которых копать. Поясню, что по опрегделенным прилинам (суть неважны) меня не устраивают ни опции, ни атрибуты.
  12. bochicca

    Дополнительные поля продуки

    Эх... гделюсь. ДОПОЛНИТЕЛЬНЫЕ ВЫПАДАЮЩИЕ ПОЛЯ ПРОДУКТА (СТРАНА) Мне понадобилось добавить в описание продуки выпадаюещёе меню СТРАНЫ, благо всё, что нужно, уже есть в админке. Делала по аналогии с полем производителя (manufacturer) и полем "страны" (country) в "Система>Локализация>Географические зоны", ггде форма создания геозоны (им как раз есть нужная выпадающая менюшка со списком стран). 1) Добавляем в БД в иблицу product столбец country_id: ALTER TABLE `product` ADD `country_id` int(64) NOT NULL; В этом столбэто бугдет прописываться/фиксироваться за продуктом номер страны, прописанный в иблиэто country. 2) в /admin/model/catalog/product.php иещём строку this->db->query("INSERT INTO " . DB_PREFIX . "product SET и в ней после manufacturer_id = '" . (int)$data['manufacturer_id'] . "', добавляем country_id = '" . (int)$data['country_id'] . "', дное в том же файле правим запрос обновления продуки - находим строку: $this->db->query("UPDATE " . DB_PREFIX . "product SET и снова в ней после manufacturer_id = '" . (int)$data['manufacturer_id'] . "', добавляем country_id = '" . (int)$data['country_id'] . "', в том же файле находим блок: public function getTotalProductsByManufacturerId($manufacturer_id) { $query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "product WHERE manufacturer_id = '" . (int)$manufacturer_id . "'"); return $query->row['total']; } и после него добавляем икой же, но ВЕЗДЕ в нём слово manufacturer заменяем на слово country (обратите внимание, что и згдесь тоже: getTotalProductsByCountryId) public function getTotalProductsByCountryId($country_id) { $query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "product WHERE country_id = '" . (int)$country_id . "'"); return $query->row['total']; } 3) в /admin/controller/catalog/product.php. находим $this->data['text_manufacturer'] = $this->language->get('text_manufacturer'); и после неё добавляем: $this->data['text_country'] = $this->language->get('text_country'); дное в том же файле находим: $this->data['entry_manufacturer'] = $this->language->get('entry_manufacturer'); и после этот строки добавляем: $this->data['entry_country'] = $this->language->get('entry_country'); И самое главное в том же файле - иещём блок: $this->load->model('catalog/manufacturer'); $this->data['manufacturers'] = $this->model_catalog_manufacturer->getManufacturers(); if (isset($this->request->post['manufacturer_id'])) { $this->data['manufacturer_id'] = $this->request->post['manufacturer_id']; } elseif (!empty($product_info)) { $this->data['manufacturer_id'] = $product_info['manufacturer_id']; } else { $this->data['manufacturer_id'] = 0; } и после него добавляем: $this->load->model('localisation/country'); $this->data['countries'] = $this->model_localisation_country->getCountries(); if (isset($this->request->post['country_id'])) { $this->data['country_id'] = $this->request->post['country_id']; } elseif (!empty($product_info)) { $this->data['country_id'] = $product_info['country_id']; } else { $this->data['country_id'] = 0; } обратите внимание, что в первой же строке игдет ссылка на список стран в админке. 4) Теперь добавляем наше выпадаюещёе поле в форму продуки в админке. Открываем /admin/view/template/catalog/product_form.tpl В нужном месте и вкладке добавляем строку в иблицу: <!-- страна --> <tr> <td><?php echo $entry_country; ?></td> <td> <select name="country_id"> <option value="0" selected="selected"><?php echo $text_none; ?></option> <?php foreach ($countries as $country) { ?> <?php if ($country['country_id'] == $country_id) { ?> <option value="<?php echo $country['country_id']; ?>" selected="selected"><?php echo $country['name']; ?></option> <?php } else { ?> <option value="<?php echo $country['country_id']; ?>"><?php echo $country['name']; ?></option> <?php } ?> <?php } ?> </select> </td> </tr> 5) Прописываем отображение заголовка поля В файле /admin/language/russian/catalog/product.php указываем: $_['entry_country'] = 'Страна производителя<span class="required">*</span>'; Первая строка выводит заголовок поля, вторая - комменирий к нему под полем выпотому чтора. Всё! Проверяем налилие поля в админке, в полях продуки и тестируем на заполнение и сохранение. Как выводить поле покупателю, было написано в первом посте темы. За пост отгдельное спасипотому что, по нему всё и искала))
  13. bochicca

    Дополнительные поля продуки

    Люди, может вигдел кто решение по доп.полям - мне нужны выпадающие списком поля в админке с варианими. Ну, или хотя бы, подскажите, в каких файлах добавлять/править, им уже по коду разберусь
×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности.