Перейти к содержанию

bochicca

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

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

  • Посещение

Репутация

7 Обычный

Информация о bochicca

  • Звание
    Пользователь

Информация

  • Пол
    Женщина

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

2 057 просмотров профиля
  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. 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 --> Кто подскажет - как именно?
  6. bochicca

    Журнал ошибок

    Похоже никто и ничем, на мои вопросы тоже ноль реакции. Сорри, что не могу помочь
  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. bochicca

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

    Сделала на том, что уже было и надеюсь, мой глас вопиющего в сей форумной пустыне всё же не останется без ответа. Очень нужна схема, как создавать в админке раздел, аналогичный спискам стран, производителей и т.п. Ну или хотя бы не схему, как здесь, а просто список файлов, в которых копать. Поясню, что по определенным причинам (суть неважны) меня не устраивают ни опции, ни атрибуты.
  10. 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>'; Первая строка выводит заголовок поля, вторая - комментарий к нему под полем выбора. Всё! Проверяем наличие поля в админке, в полях продукта и тестируем на заполнение и сохранение. Как выводить поле покупателю, было написано в первом посте темы. За пост отдельное спасибо, по нему всё и искала))
  11. bochicca

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

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

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

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