Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

bochicca

Користувачі
  
  • Публікації

    50
  • З нами

  • Відвідування

Інформація

  • Стать
    Женщина

Відвідувачі профілю

3 088 переглядів профілю

bochicca's Achievements

Contributor

Contributor (5/14)

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

Recent Badges

9

Репутація

  1. Подскажите, где ошибка? Я тут решила чутка допилить модуль и сделать (как в записях) привязку изображений прямо в странице блога (в админке). Сразу поясню на тот случай, если у кого-то возникнет вполне резонный вопрос, чем тебе, милая, галерея не угодила? Дело в том, что функция привязки и вывода изображений через галереи (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 } ?>
  2. Спасибо за отличный модуль! Приспособила его под свою библиотеку детских книг, давно искала вариант делать страницы про художников и авторов с привязками к товарам, статьям, галереям и загрузкам. Ваш подошёл идеально. Я его под себя чуть подпилила, конечно. В связи с этим есть маааленький вопрос-просьба: заголовок блога у меня в данном случае является фамилией автора/художника. чтобы выводить имя отчество, я сделала доп.поле по аналогии с полем-названием блога (мне так нужно для разных вариантов выведения: сначала ИО, потом фамилия и наоборот - в разных случаях). затык у меня с запросом к БД. мне нужно, чтобы при запросе к БД переменная 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 знаю хреново. подскажите, как мне правильно прописать код и то ли место я определила. ну или хотя бы похожий пример объединения полей в одно при запросе к БД дайте ))плииииз! И ещё раз - спасибо за модуль. Работа сделана гигантская, стоит своих денег хотя бы потому, что этот модуль сэкономил мне кучу времени (и нервов!), чтобы написать это ручками с нуля. А тут стооолько возможностей))
  3. По умолчанию в 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
  4. аналогичная проблема - в админке выводит сдвоеную инфу (два раза повторяет форму) после того как добавила поле (такие поля добавляла и раньше, но глюков не было), в чем может быть проблема? UPD. У себя нашла в итоге. Сайт у меня только на русском, и я убрала вкладку english в форме внесения продуктов. но если не удалить english в настройках, начинают генериться в БД копии по продукту, но с laguage_id = не только русским, но и английским (у меня был русский id=1, а английский =3). соответственно, форма начала выводить всё в удвоенном виде. пришлось удалять язык в настройках админки и дубли из таблицы в БД с id английского языка. рада, если кому тоже поможет. всё ж лучше, чем заново переустанавливать :) а то думала - рехнусь - вс перетряхнула раз по двадцать, даже назад откатила бэкапы :)
  5. Секретный ключ и 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 --> Кто подскажет - как именно?
  6. Похоже никто и ничем, на мои вопросы тоже ноль реакции. Сорри, что не могу помочь
  7. Нужна помощь, как вывести в шаблоне 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'] = 'ЖАНР:'; но нифига не выводит кроме слова "ЖАНР:", какой именно жанр - не показывает. Ткните носом, где ошибка! Уже по аналогии всё перерыла не вижу :( в программировании пока еще профан
  8. О том, есть ли кто-нибудь, хоть иногда отвечающий на вопросы тут?

  9. Сделала на том, что уже было и надеюсь, мой глас вопиющего в сей форумной пустыне всё же не останется без ответа. Очень нужна схема, как создавать в админке раздел, аналогичный спискам стран, производителей и т.п. Ну или хотя бы не схему, как здесь, а просто список файлов, в которых копать. Поясню, что по определенным причинам (суть неважны) меня не устраивают ни опции, ни атрибуты.
  10. Эх... делюсь. ДОПОЛНИТЕЛЬНЫЕ ВЫПАДАЮЩИЕ ПОЛЯ ПРОДУКТА (СТРАНА) Мне понадобилось добавить в описание продукта выпадающее меню СТРАНЫ, благо всё, что нужно, уже есть в админке. Делала по аналогии с полем производителя (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>'; Первая строка выводит заголовок поля, вторая - комментарий к нему под полем выбора. Всё! Проверяем наличие поля в админке, в полях продукта и тестируем на заполнение и сохранение. Как выводить поле покупателю, было написано в первом посте темы. За пост отдельное спасибо, по нему всё и искала))
  11. Люди, может видел кто решение по доп.полям - мне нужны выпадающие списком поля в админке с вариантами. Ну, или хотя бы, подскажите, в каких файлах добавлять/править, там уже по коду разберусь
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.