-
Публікації
170 -
З нами
-
Відвідування
Тип публікації
Профілі
Форум
Маркетплейс
Статті
FAQ
Наші новини
Магазин
Блоги
module__dplus_manager
Повідомлення, опубліковані користувачем fofa
-
-
11 минут назад, legioner26 сказал:
$data ['мой_ключ'] = данные ключа;
В шаблоне будет выводиться через <?php echo $мой_ключ; ?>
т.е. переменные без $data служат только для вычислений внутри системы, а переменные $data можно использовать в вычислениях и выводить во view?
Я правильно понимаю, что этот массив $data в рамках класса уникальный? например, если в контроллере catalog/product объявлена $data['xyz'], то в контроллере catalog/category в массиве $data эта переменная уже отсутствует?
-
Помогите разобраться.
Почему некоторые переменные объявляют через $data:
$data['product'] = array();
а некоторые без:
$option_data = array();
-
38 минут назад, thentru сказал:
На странице товара будет так route=product/product&product_id=666
а если URL преобразован в ЧПУ, например, site.ru/smartphony/samsung/, то как можно увидеть настоящий URL?
Если в категории витрины магазина представлен массив товаров со ссылками на карточки товаров, то в этих ссылках тоже заложена информация из URL?
-
37 минут назад, thentru сказал:
Смотрите в класс \system\library\request.php
Т.е. get ($_GET) - это суперглобальный массив параметров, переданных скрипту через URL, прошедший обработкуЯ правильно понял, что суперглобальный массив параметров меняется в зависимости от того, какая страница сайта загружена?
-
Как в выражении
$product_specials = $this->model_catalog_product->getProductSpecials($this->request->get['product_id']);
работает аргумент функции
getProductSpecials($this->request->get['product_id']);
откуда берется аргумент? и почему такая формулировка $this->request->get[]?
-
Помогите разобраться.
Необходимо отобразить в категории и карточке товара несколько цен (см. картинку). Хочу реализовать это через Группы покупателей и Скидки в Товарах.
Т.е., создаются группы покупателей:
Розн. цена кор.
Розн. цена шт.
...
Мин. заказ
В Скидках Товаров в админке назначается цена и в витрине магазина все отобразить для группы покупателей Default
Для начала мне нужно хотя бы цены вывести из таблицы product_discount в категории, чтобы понять логику
Код модели catalog/model/catalog/product.php
public function getProductDiscounts_2($product_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_discount WHERE product_id = '" . (int)$product_id . "' ORDER BY quantity, priority, price"); if ($query->num_rows) { return array( 'product_id' => $query->row['product_id'], 'price' => $query->row['price'], ); } else { return false; } }
Код контроллера catalog/controller/product/category.php
$product_discounts = $this->model_catalog_product->getProductDiscounts_2(); foreach ($product_discounts as $product_discount) { $data['product_discounts'][] = array( 'product_id' => $product_discount['product_id'], 'price' => $product_discount['price'], ); }
Код вьюхи view/theme/default/template/product/category.php
<?php if ($product_discounts) { ?> <?php foreach ($product_discounts as $product_discount) { ?> <?php echo $product_discount['product_id']; ?> <?php echo $product_discount['price']; ?> <?php } ?> <?php } ?>
Подскажите, что не так?
-
Здравствуйте.
На сайте клиент оплатил заказ. Потом я редактировал модуль и в ходе восстанавливал базу данных, в результате обнаружилось, что заказ пропал из БД (надо было бекап сделать). Я восстановил в БД в таблицах _order(+приставка) всю информацию, но заказ в Панели состояния и в Продажи->Заказы не отображается.
Где еще чего добавить?
-
55 минут назад, Eldaeron сказал:
Возможно, из-за этой конвертации:
$value[1] = iconv("utf-8", "windows-1251", $value[1]); $title = array_map("htmlspecialchars", $value); $title[1] = iconv("windows-1251", "utf-8", $title[1]);
Спасибо за посдказку. Причина была в несовпадении кодировки вводимой строки с кодировкой с базы.
Поменял местами входящую и выходящую кодировку тут
$value[1] = iconv("utf-8", "windows-1251", $value[1]);
на
$value[1] = iconv("windows-1251", "utf-8", $value[1]);
и заработало
-
1 час назад, Eldaeron сказал:
Нет, вы неверно поняли, екранировать надо строку, а запрос отправлять тоже надо, поэтому $this->db->query(...) Must HAVE!
$this->db->escape($title)
Подставлять вместо этого куска
mysqli_real_escape_string($title)
И вместо этого
htmlspecialchars_decode($content)
Зачем вам конвертация туда-сюда HTML сущостей, пусть < остается в бд как <
Тоесть, для защиты от SQL-инъекций перед записью в ДБ Используйте "$this->db->escape($string)" $string - ваша строка
Спасибо, ошибка пропала, только теперь кириллица в базу не сохраняется. Как исправить?
-
55 минут назад, nikifalex сказал:
зачем все занимаетесь черте чем?
$this->db->escape()
Если я вас правильно понял
$this->db->escape("INSERT INTO " . DB_PREFIX . "pro_megamenu SET title = '" . mysqli_real_escape_string($title) . "', url = '" . $data['url'][$key] . "', parent_id = '" . (int)$data['parent_id'][$key] . "', subcontent = '". htmlspecialchars_decode($content) ."', type = '".$data['type'][$key]."', type_id = '" .(int)$data['type_id'][$key]. "', widths = '" .$data['widths'][$key]. "', columns = '" .(int)$data['columns'][$key]. "', activemega = '" .(int)$data['activemega'][$key]. "'");
ошибка осталась
Вот весь код файла
<?php class ModelModuleProMegamenu extends Model { protected $preData = array( 'menu_height'=>'50', 'submenu_width'=>'200', 'submenu_height'=>'35', 'menu_font_style'=>'uppercase', 'menu_font_size'=>'15', 'menu_font_color'=>'ffffff', 'menu_font_color_hover'=>'ffffff', 'submenu_font_style'=>'capitalize', 'submenu_font_size'=>'15', 'submenu_font_color'=>'464646', 'submenu_font_color_hover'=>'3cb7e7', 'menu_background'=>'323a45', 'menu_background_hover'=>'3cb7e7', 'submenu_background'=>'e6e6e6', 'submenu_background_hover'=>'d0d0d0', ); public function getOptions(){ $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "pro_megamenu_options"); return $query->rows ? $query->rows : array(); } public function saveOptions($data){ foreach ($data as $key => $value) { $this->db->query("DELETE FROM " . DB_PREFIX . "pro_megamenu_options WHERE name = '" . $key . "'"); $this->db->query("INSERT INTO " . DB_PREFIX . "pro_megamenu_options SET name = '" . $key . "', value = '" . $this->db->escape($value) . "'"); } } public function insert($data) { foreach($data['title'] as $key=>$value){ $value[1] = iconv("utf-8", "windows-1251", $value[1]); $title = array_map("htmlspecialchars", $value); $title[1] = iconv("windows-1251", "utf-8", $title[1]); $content = array_map("htmlentities", $data['content_submenu'][$key]); $title = json_encode($title); $content = json_encode($content); $this->db->escape("INSERT INTO " . DB_PREFIX . "pro_megamenu SET title = '" . mysqli_real_escape_string($title) . "', url = '" . $data['url'][$key] . "', parent_id = '" . (int)$data['parent_id'][$key] . "', subcontent = '". htmlspecialchars_decode($content) ."', type = '".$data['type'][$key]."', type_id = '" .(int)$data['type_id'][$key]. "', widths = '" .$data['widths'][$key]. "', columns = '" .(int)$data['columns'][$key]. "', activemega = '" .(int)$data['activemega'][$key]. "'"); } } public function empty_data() { $this->db->query("TRUNCATE " . DB_PREFIX . "pro_megamenu"); } public function getDefaultLanguage(){ $query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "language WHERE code = '" . $this->config->get('config_language') . "'"); return $query->row ? $query->row['language_id'] : 0; } public function getMenuHtml($parent_id){ $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "pro_megamenu WHERE " . DB_PREFIX . "pro_megamenu.parent_id = '".$parent_id."' ORDER BY " . DB_PREFIX . "pro_megamenu.id ASC"); $result=array(); foreach ($query->rows as $value) { $result[] = $value; } /* Multi Language */ $this->load->model('localisation/language'); $languages = $this->model_localisation_language->getLanguages(); if($result) : if($parent_id!=0) echo "<ol class='dd-list'>"; foreach($result as $value) : ?> <?php $title = json_decode($value['title'], true); //var_dump($title); $content = json_decode($value['subcontent'], true); ?> <li class='dd-item'> <div class='dd-handle'> <div class='bar'> <span class='title'><?php echo html_entity_decode(html_entity_decode($title[$this->getDefaultLanguage()]));?></span> </div> </div> <div class='info hide'> <p class="input-item"><span class='type'>Type : <?php echo $value['type'];?></span></p> <p class="input-item"><label>Title : </label></p> <?php foreach($languages as $language) : ?> <div class="input-group"> <input class="form-control" type="text" name="title[][<?php echo $language['language_id']; ?>]" value="<?php if(isset($title[$language['language_id']])) echo html_entity_decode(html_entity_decode($title[$language['language_id']]));?>"/> <div class="input-group-addon"><img src="view/image/flags/<?php echo $language['image']; ?>"/></div> </div> <?php endforeach;?> <?php if($value['type']=='custom') : ?> <p class="input-item"><label>Url : </label><input class="form-control" type="text" name="url[]" value="<?php echo $value['url'] ; ?>"/></p> <?php endif;?> <p class="input-item"><a href="javascript:void(0);" class="remove" onclick="remove_item(this);">Remove This Menu Item</a></p> <?php if($value['activemega']==1) : ?> <p class="input-item"><a href="javascript:void(0);" class="activemega" onclick="activemega(this);" >Deactive Megamenu</a></p> <?php else : ?> <p class="input-item"><a href="javascript:void(0);" class="activemega active" onclick="activemega(this);">Active Megamenu</a></p> <?php endif;?> <div class="hidden-data"> <input type="hidden" class="type" name="type[]" value="<?php echo $value['type'];?>"/> <input type="hidden" class="parent_id" name="parent_id[]" value="<?php echo $value['parent_id'];?>"/> <input type="hidden" class="type_id" name="type_id[]" value="<?php echo $value['type_id'];?>"/> <?php if($value['type']!='custom') : ?> <input type="hidden" class="url" name="url[]" value="<?php echo $value['url'] ; ?>"/> <?php endif;?> <?php if($value['activemega']==1) : ?> <input type="hidden" class="activemega" name="activemega[]" value="1"/> <?php else : ?> <input type="hidden" class="activemega" name="activemega[]" value="0"/> <?php endif;?> </div> <?php if($value['activemega']==1) : ?> <div class="sub-menu-content"> <div> <p class="input-item"><label>Num of Columns : </label> <select class="form-control" name="columns[]"> <option value="1" <?php if($value['columns']==1) echo "selected='selected'";?>>1</option> <option value="2" <?php if($value['columns']==2) echo "selected='selected'";?>>2</option> <option value="3" <?php if($value['columns']==3) echo "selected='selected'";?>>3</option> <option value="4" <?php if($value['columns']==4) echo "selected='selected'";?>>4</option> </select> </p> <p class="input-item"><label>Width(Input number only) : </label> <div class="input-group"> <input class="form-control" name="widths[]" type="text" value="<?php echo $value['widths'] ; ?>"/> <div class="input-group-addon">Px</div> </div> </p> </div> <p><strong>Content of Sub-menu : </strong></p> <?php foreach($languages as $language) : ?> <p><img src="view/image/flags/<?php echo $language['image']; ?>" title="<?php echo $language['name']; ?>" /> <?php echo $language['name']; ?></p> <textarea class="mega-content-editor" name="content_submenu[][<?php echo $language['language_id']; ?>]" style="width: 695px; height: 213px;"><?php if(isset($content[$language['language_id']])) echo html_entity_decode(html_entity_decode($content[$language['language_id']]));?></textarea> <?php endforeach;?> </div> <?php else : ?> <div class="sub-menu-content" style="display:none"> <div> <p class="input-item"><label>Num of Columns : </label> <select class="form-control" name="columns[]"> <option value="1" <?php if($value['columns']==1) echo "selected='selected'";?>>1</option> <option value="2" <?php if($value['columns']==2) echo "selected='selected'";?>>2</option> <option value="3" <?php if($value['columns']==3) echo "selected='selected'";?>>3</option> <option value="4" <?php if($value['columns']==4) echo "selected='selected'";?>>4</option> </select> </p> <p class="input-item"><label>Width(Input number only) : </label> <div class="input-group"> <input class="form-control" name="widths[]" type="text" value="<?php echo $value['widths'] ; ?>"/> <div class="input-group-addon">Px</div> </div> </p> </div> <p><strong>Content of Sub-menu : </strong></p> <?php foreach($languages as $language) : ?> <p><img src="view/image/flags/<?php echo $language['image']; ?>" title="<?php echo $language['name']; ?>" /> <?php echo $language['name']; ?></p> <textarea class="mega-content-editor" name="content_submenu[][<?php echo $language['language_id']; ?>]" style="width: 695px; height: 213px;"><?php if(isset($content[$language['language_id']])) echo html_entity_decode(html_entity_decode($content[$language['language_id']]));?></textarea> <?php endforeach;?> </div> <?php endif;?> </div><a href="javascript:void(0);" class="explane" onclick="explane(this)">Explane</a> <?php $this->model_module_pro_megamenu->getMenuHtml($value['id']); ?> </li> <?php endforeach ; if($parent_id!=0) echo "</ol>"; endif; } public function getlist() { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "pro_megamenu WHERE " . DB_PREFIX . "pro_megamenu.parent_id = '0' ORDER BY " . DB_PREFIX . "pro_megamenu.id ASC"); $result=array(); foreach ($query->rows as $value) { $result[] = $value; } return $result; } public function install() { $query = $this->db->query("CREATE TABLE IF NOT EXISTS ".DB_PREFIX."pro_megamenu ( id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, title VARCHAR(225) NOT NULL, url VARCHAR(128) NOT NULL, parent_id INTEGER(128) NOT NULL DEFAULT 0, subcontent TEXT NOT NULL, type VARCHAR(128) NOT NULL, type_id INTEGER(128) , widths INTEGER, columns INTEGER, activemega INTEGER ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci"); $query = $this->db->query("CREATE TABLE IF NOT EXISTS ".DB_PREFIX."pro_megamenu_options ( id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, name VARCHAR(225) NOT NULL, value TEXT NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci"); foreach ($this->preData as $key => $value) { $this->db->query("DELETE FROM " . DB_PREFIX . "pro_megamenu_options WHERE name = '" . $key . "'"); $this->db->query("INSERT INTO " . DB_PREFIX . "pro_megamenu_options SET name = '" . $key . "', value = '" . $this->db->escape($value) . "'"); } } } ?>
-
Здравствуйте
OC2.0.3.1
При смене в коде модуля mysql_real_escape_string на mysqli_real_escape_string
вылезла ошибка
Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in /www/admin/model/module/pro_megamenu.php on line 39
Вот код указанной строки
$this->db->query("INSERT INTO " . DB_PREFIX . "pro_megamenu SET title = '" . mysqli_real_escape_string($title) . "', url = '" . $data['url'][$key] . "', parent_id = '" . (int)$data['parent_id'][$key] . "', subcontent = '". htmlspecialchars_decode($content) ."', type = '".$data['type'][$key]."', type_id = '" .(int)$data['type_id'][$key]. "', widths = '" .$data['widths'][$key]. "', columns = '" .(int)$data['columns'][$key]. "', activemega = '" .(int)$data['activemega'][$key]. "'");
В документации сказано, что у mysqli_real_escape_string должно быть с параметрами: идентификатором соединения и строкой, которую требуется экранировать. Я пробовал подставлять $db в качестве идентификатора соединения
mysqli_real_escape_string($db, $title)
но вылезает ошибка, что переменная $db не известна.
Подскажите, как сделать, чтобы код заработал без ошибок?
-
Здравствуйте.
ОС 2.0.3.1
Есть три типа покупателей: Default, мелкий опт и крупный опт. В товаре в скидках прописал цены для крупного и мелкого опта. Как сделать чтобы в категориях и в карточке товара при заходе группы покупателей default отображались также цены для крупного и мелкого опта (для информации)? как во вложении
В каком файле прописан переключатель отображения цены со скидкой в зависимости от группы покупателей?
-
4 часа назад, jaffagold сказал:
А какие сложности выпилить (для начала просто закомментировать( вот так: <!-- вот тут код, который надо отключить -->) из category.tpl кусок кода?
<?php if ($categories) { ?>
<h3><?php echo $text_refine; ?></h3>
<?php if (count($categories) <= 5) { ?>
<div class="row">
<div class="col-sm-3">
<ul>
<?php foreach ($categories as $category) { ?>
<li><a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a></li>
<?php } ?>
</ul>
</div>
</div>
<?php } else { ?>
<div class="row">
<?php foreach (array_chunk($categories, ceil(count($categories) / 4)) as $categories) { ?>
<div class="col-sm-3">
<ul>
<?php foreach ($categories as $category) { ?>
<li><a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a></li>
<?php } ?>
</ul>
</div>
<?php } ?>
</div>
<?php } ?>
<?php } ?>Сложностей никаких, но насколько я знаю, SEO роботы не любят закомментированный код
-
На Родительской странице категории отображается список подкатегорий с заголовком "Выберите подкатегорию". Как скрыть этот список без правок в коде?
-
11 минут назад, snastik сказал:
в 2.0.3.1 нормальный рабочий класс mysqli
Просто поменяйте в конфигах mysql на mysqliуже стоит define('DB_DRIVER', 'mysqli');
С ним как раз не работает
-
Версия OC 2.0.3.1. Обновили версию PHP до 5.6, Сначала вылезла ошибка
Unknown: mysql_escape_string(): This function is deprecated; use mysql_real_escape_string() instead. in ...
Я заменил в указанном месте mysql_escape_string на mysql_real_escape_string. Вылезла другая ошибка
Unknown: mysql_real_escape_string(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in ... on line 39Warning: mysql_real_escape_string(): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in ...
Подскажите, что делать? Модуль Mysqliz годится только OC 1.5
-
разобрался
сделал перенаправление с http на https
RewriteCond %{HTTPS} !=on RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
-
Здравствуйте
После подключения ssl сертификата при переходе по ссылкам главного меню происходит переадресация на склеенные домены. Например: ссылка ведет на http://www.site.ru/page1/, а переадресация происходит на http://www.site.ru/https://www.site.ru/page1/
Поюзал код .htaccess, в результате обнаружил что отключение строчки
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
отменяет склеивание, но сервер выдает ошибку 404.
Как отменить склеивание и чтобы страницы открывались?
-
Подскажите, как отключить формирование неоплаченных счетов? Модуль Payanyway, ОС 2.0.3.1
-
В 20.07.2017 в 08:23, Magictechnology сказал:
Текст русский, переход работает - https://i.gyazo.com/2c009c9bfeb25513cc7024fdc2847b0d.png
Ошибка припереходе, но я управление заказами в самом модуле не настраивал.
Не смогу ответить, работаем без НДС.
Проверил на настоящем промокоде, скидка по которому 500 рублей, в просмотре заказа сумма покупки уменьшилась именно на 500 рублей.
Опять же не знаю как логичнее было бы, у нас нет НДС.
Еще при оформлении заказа и указании способа доставки "Самовывоз" сервис оплаты яндекса сообщает, что платеж не прошел из-за технической ошибки
-
8 минут назад, n3bo сказал:
В модуле можно поставить
Она уже где-то стоит в магазине, нужно ее изменить
-
Не могу найти, где в настройках OC 2.0.3.1 указывается минимальная сумма заказа
Также стоит модуль Simplecheckout
Подскажите, люди добрые
-
12 часов назад, Alcom сказал:
Сделайте корректные настройки НДС в Вашем магазине и всё будет работать.
Путь в ОС 2.1: Система-Локализация-Налоги-Налоговые ставки
У Вас в настройках магазина задана налоговая ставка с названием "НДС", а вы говорите, что "ничего не показано".
Добавьте нужную Вам ставку НДС, примените установленный налог к товарам в Вашем магазине.
Передавайте в Я.Кассу налог БЕЗ НДС, если работаете без НДС. Если работаете с НДС - то соответственно выберите ставку НДС, которую нужно передавать в Я.Кассу.
Ниже на скрине наши настройки НДС, всё передается корректно.
Управление заказами будет работать только после получения сертификата у менеджера Я.Кассы и загрузки его в настройках модуля.
Выставление счетов пока не работает в официальном модуле Я.Кассы, добавят в следующих обновлениях.
Понятно, спасибо)
-
20 часов назад, Magictechnology сказал:
Скажите какой путь это в админке, проверю есть ли они у меня.
1. ошибка: Продажи->Заказы->в правом верхнем углу оранжевая кнопка, при наведении мышкой всплывает button_invoice_kassa
2. Продажи->Заказы->на строчке с заказом последняя зеленая кнопка с портфелем, при наведении всплывает "управление заказом"
На скриншоте все показано http://joxi.ru/xAeDPyBIpq0ql2
еще мы сделали тестовую покупку и на счете добавилась строчка НДС. Но НДС считается некорректно, а настройки этого НДС я не нашел. Также мы использовали скидочный купон по которому итоговая сумма должна была уменьшиться на 25 руб, а по факту уменьшилась на 7
путь до счета такой Продажи->Заказы->кнопка с глазом "Посмотреть".-> в верхнем правом углу кнопка с принтером
Также в панели управления самим модулем в самом низу есть фраза "Слева — ставка НДС в вашем магазине, справа — в Яндекс.Кассе. Пожалуйста, сопоставьте их." под или над которой по логике должны быть показаны ставки магазина и яндекс кассы, чтобы можно было сравнить, но по факту там ничего не показано http://joxi.ru/Dr8ybaPF45NbVm
Объявление переменных
в Допомога програмістам та розробникам
Опубліковано:
Чтобы посмотреть результат надо к контроллеру или модели обращаться напрямую через URL? или во view выводить?