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

fofa

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

    170
  • З нами

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

Повідомлення, опубліковані користувачем fofa

  1. 38 минут назад, legioner26 сказал:

    Вы можете просмотреть в любом контроллере либо модели что содержится в массиве $data

    К примеру так 

    
    echo "<pre>"; print_r($data); echo "</pre>";

     

     

    Чтобы посмотреть результат надо к контроллеру или модели обращаться напрямую через URL? или во view выводить?

  2. 11 минут назад, legioner26 сказал:

    $data ['мой_ключ'] = данные ключа;

    В шаблоне будет выводиться через <?php echo $мой_ключ; ?>

     

    т.е. переменные без $data служат только для вычислений внутри системы, а переменные $data можно использовать в вычислениях и выводить во view?

    Я правильно понимаю, что этот массив $data в рамках класса уникальный? например, если в контроллере catalog/product объявлена $data['xyz'], то в контроллере catalog/category в массиве $data эта переменная уже отсутствует?

  3. 38 минут назад, thentru сказал:

    На странице товара будет так route=product/product&product_id=666

    а если URL преобразован в ЧПУ, например, site.ru/smartphony/samsung/, то как можно увидеть настоящий URL?

    Если в категории витрины магазина представлен массив товаров со ссылками на карточки товаров, то в этих ссылках тоже заложена информация из URL?

  4. 37 минут назад, thentru сказал:

    Смотрите в класс \system\library\request.php
    Т.е. get ($_GET) - это суперглобальный массив параметров, переданных скрипту через URL, прошедший обработку

    Я правильно понял, что суперглобальный массив параметров меняется в зависимости от того, какая страница сайта загружена?

  5. Как в выражении

    $product_specials = $this->model_catalog_product->getProductSpecials($this->request->get['product_id']);

    работает аргумент функции

    getProductSpecials($this->request->get['product_id']);

    откуда берется аргумент? и почему такая формулировка $this->request->get[]?

  6. Помогите разобраться.

    Необходимо отобразить в категории и карточке товара несколько цен (см. картинку). Хочу реализовать это через Группы покупателей и Скидки в Товарах.

    Т.е., создаются группы покупателей:

    Розн. цена кор.

    Розн. цена шт.

    ...

    Мин. заказ

     

    В Скидках Товаров в админке назначается цена и в витрине магазина все отобразить для группы покупателей 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 } ?>

    Подскажите, что не так?

    вендинг цены2.png

  7. Здравствуйте.

    На сайте клиент оплатил заказ. Потом я редактировал модуль и в ходе восстанавливал базу данных, в результате обнаружилось, что заказ пропал из БД (надо было бекап сделать). Я восстановил в БД в таблицах _order(+приставка) всю информацию, но заказ в Панели состояния и в Продажи->Заказы не отображается.

    Где еще чего добавить?

  8. 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]);

    и заработало

  9. 1 час назад, Eldaeron сказал:

    Нет, вы неверно поняли, екранировать надо строку, а запрос отправлять тоже надо, поэтому $this->db->query(...) Must HAVE!

    
    $this->db->escape($title)

    Подставлять вместо этого куска

    
    mysqli_real_escape_string($title)

    И вместо этого

    
    htmlspecialchars_decode($content)

    Зачем вам конвертация туда-сюда HTML сущостей, пусть < остается в бд как &lt;

     

    Тоесть, для защиты от SQL-инъекций перед записью в ДБ Используйте "$this->db->escape($string)" $string - ваша строка

     

     

    Спасибо, ошибка пропала, только теперь кириллица в базу не сохраняется. Как исправить?

  10. 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) . "'");
    		}
    	}
    }
    ?>

     

  11. Здравствуйте

    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 не известна.

    Подскажите, как сделать, чтобы код заработал без ошибок?

  12. Здравствуйте.

    ОС 2.0.3.1

    Есть три типа покупателей: Default, мелкий опт и крупный опт. В товаре в скидках прописал цены для крупного и мелкого опта. Как сделать чтобы в категориях и в карточке товара при заходе группы покупателей default отображались также цены для крупного и мелкого опта (для информации)? как во вложении

    В каком файле прописан переключатель отображения цены со скидкой в зависимости от группы покупателей?

    vending.png

  13. 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 роботы не любят закомментированный код

  14. Версия 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

  15. Здравствуйте

    После подключения ssl сертификата при переходе по ссылкам главного меню происходит переадресация на склеенные домены. Например: ссылка ведет на http://www.site.ru/page1/, а переадресация происходит на http://www.site.ru/https://www.site.ru/page1/

    Поюзал код .htaccess, в результате обнаружил что отключение строчки

    RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

    отменяет склеивание, но сервер выдает ошибку 404.

    Как отменить склеивание и чтобы страницы открывались?

  16. В 20.07.2017 в 08:23, Magictechnology сказал:

    Текст русский, переход работает - https://i.gyazo.com/2c009c9bfeb25513cc7024fdc2847b0d.png

     

    Ошибка припереходе, но я управление заказами в самом модуле не настраивал.

     

    Не смогу ответить, работаем без НДС.

     

    Проверил на настоящем  промокоде, скидка по которому 500 рублей, в просмотре заказа сумма покупки уменьшилась именно на 500 рублей.

     

    Опять же не знаю как логичнее было бы, у нас нет НДС.

     

    Еще  при оформлении заказа и указании способа доставки "Самовывоз" сервис оплаты яндекса сообщает, что платеж не прошел из-за технической ошибки

  17. 12 часов назад, Alcom сказал:

     

    Сделайте корректные настройки НДС в Вашем магазине и всё будет работать.

    Путь в ОС 2.1: Система-Локализация-Налоги-Налоговые ставки

    У Вас в настройках магазина задана налоговая ставка с названием "НДС", а вы говорите, что "ничего не показано".

    Добавьте нужную Вам ставку НДС, примените установленный налог к товарам в Вашем магазине.

    Передавайте в Я.Кассу налог БЕЗ НДС, если работаете без НДС. Если работаете с НДС - то соответственно выберите ставку НДС, которую нужно передавать в Я.Кассу.

     

    Ниже на скрине наши настройки НДС, всё передается корректно. 

     

    Screenshot.png

     

    Управление заказами будет работать только после получения сертификата у менеджера Я.Кассы и загрузки его в настройках модуля.

     

    Выставление счетов пока не работает в официальном модуле Я.Кассы, добавят в следующих обновлениях.

    Понятно, спасибо)

  18. 20 часов назад, Magictechnology сказал:

     

    Скажите какой путь это в админке, проверю есть ли они у меня.

     1. ошибка: Продажи->Заказы->в правом верхнем углу оранжевая кнопка, при наведении мышкой всплывает button_invoice_kassa

    2. Продажи->Заказы->на строчке с заказом последняя зеленая кнопка с портфелем, при наведении всплывает "управление заказом"

    На скриншоте все показано http://joxi.ru/xAeDPyBIpq0ql2

     

    еще мы сделали тестовую покупку и на счете добавилась строчка НДС. Но НДС считается некорректно, а настройки этого НДС я не нашел. Также мы использовали скидочный купон по которому итоговая сумма должна была уменьшиться на 25 руб, а по факту уменьшилась на 7

    путь до счета такой Продажи->Заказы->кнопка с глазом "Посмотреть".-> в верхнем правом углу кнопка с принтером

     

    Также в панели управления самим модулем в самом низу есть фраза "Слева — ставка НДС в вашем магазине, справа — в Яндекс.Кассе. Пожалуйста, сопоставьте их." под или над которой по логике должны быть показаны ставки магазина и яндекс кассы, чтобы можно было сравнить, но по факту там ничего не показано http://joxi.ru/Dr8ybaPF45NbVm

×
×
  • Створити...

Important Information

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