Перейти к содержанию
Официальный форум поддержки Simpla

jonny008

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

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

  • Посещение

Сообщения, опубликованные jonny008

  1. Скрыть на сайте от глаз или сделать недоступными для посещения?

    Скрыть от глаз. 

     

    Я так понимаю нужно дополнить условие 

     

    {if $c->visible}    
                    {foreach $c->subcategories as $cat}
                        {* Показываем только видимые категории *}
                        {if $cat->visible && $cat->count>0}
     
    Но стандартный способ (опубликованный на этом форуме) подсчитывает количество всех товаров, в том числе, нулевых и не активных. 
  2. Здравствуйте. 

     

    Подскажите пожалуйста, каким образом автоматически отфильтровать спец символы   – ® и т.д 

     

    из <description>".htmlspecialchars(strip_tags($p->annotation))."</description>

     

    Спецсимволы присутствуют в описании к товару, но Яндекс-Маркет их не разрешает использовать.

     

    На друпале как то так фильтруют.

    ($id == 'description' ? str_replace(' ', ' ', $v) : $v) 

     

     

  3. Само отсутствие можно использовать как признак.

    Тогда и вопрос надо ставить адекватно, например:

    1. в админке на странице товаров делать сортировку товаров по наличию изображений - сначала все товары без изображений, потом - имеющие хотя бы одно изображение  ИЛИ

    2. в админке на странице товаров делать сортировку товаров по количеству изображений.

     

    Дополнительно надо указывать порядок - по возрастанию или убыванию числа изображений или оба варианта...

     

    Сделать такое можно, но не совсем просто и не в одну строчку. Особенно учитываю то, что в админке у товаров стандартно не предусмотрена возможность менять сортировку... 

    Это даже нужно не в админке, а в категории на сайте. Без разницы сколько изображений у товара. Если есть фото то вначале списка, если нет, то в конец. Думаю нужен запрос в Products.php

  4. Никак нельзя такое.

    Можно делать сортировку ТОВАРОВ по какому-либо ПРИЗНАКУ или свойству...

     

    Может быть, Вам надо ФИЛЬТРАЦИЮ товаров, чтобы выбрать  те, у которых нет изображений. Если так, то надо дорабатывать админку. И не в одну строчку...

    А само отсутствие это не признак? 

  5.  

    Должно добавлять все. Так как в коде все строки перебираются форечем. Файл 1c_exhange.php не правился?

    		// Добавляем изображение товара
    		if(isset($xml_product->Картинка))
    		{
    			foreach($xml_product->Картинка as $img)
    			{
    				$image = basename($img);
    				if(!empty($image) && is_file($dir.$image) && is_writable($simpla->config->original_images_dir))
    				{
    					rename($dir.$image, $simpla->config->original_images_dir.$image);
    					$simpla->products->add_image($product_id, $image);
    				}
    			}
    		}
    

    Спасибо! 

  6. Добавляет все 3, 

     

    Только на стадии апдейта товара вот такой код: 

     

    / Обновляем изображение товара
    		if(isset($xml_product->Картинка))
    		{
    			foreach($xml_product->Картинка as $img)
    			{
    				$image = basename($img);
    				if(!empty($image) && is_file($dir.$image) && is_writable($simpla->config->original_images_dir))
    				{
    					$simpla->db->query('SELECT id FROM __images WHERE product_id=? ORDER BY position LIMIT 1', $product_id);
    					$img_id = $simpla->db->result('id');
    					if(!empty($img_id))
    						$simpla->products->delete_image($img_id);
    					rename($dir.$image, $simpla->config->original_images_dir.$image);
    					$simpla->products->add_image($product_id, $image);
    				}
    			}
    		}
    		 

     
    Святая простота.
    Перед тем как писать, затратили бы пару минут и проверили.
    Должно-то оно должно, но реально обрабатывается только ОДНА первая картинка.
    Ошибка в скрипте есть, как это ни странно. Исправлять надо...

  7. Добрый день! 

     

    В выгрузке XML имеется 3 поля 

    <Картинка>import_files/cf/cf79611b-988d-11e5-be92-8c89a5174022_0.JPEG</Картинка>
    <Картинка>import_files/cf/cf79611b-988d-11e5-be92-8c89a5174022_1.JPEG</Картинка>
    <Картинка>import_files/cf/cf79611b-988d-11e5-be92-8c89a5174022_2.JPEG</Картинка>
    

     

     

    Simpla обрабатывает только одну картинку. 

     

    Пробовал через explode.  Не получается.

     

    Подскажите пожалуйста. 

  8. Тема закрыта. Заработал этот вариант: (добавлять в 2х местах)

     

    // Обновляем бренд
    		if(isset($xml_product->Производитель))
    		{
    				$brand_name = strval($xml_product->Производитель);
    			// Найдем его по имени
    			$simpla->db->query('SELECT id FROM __brands WHERE name=?', $brand_name);
    				if(!$brand_id = $simpla->db->result('id'))
    				// Создадим, если не найден
    					$brand_id = $simpla->brands->add_brand(array('name'=>$brand_name, 'meta_title'=>$brand_name, 'meta_keywords'=>$brand_name, 'meta_description'=>$brand_name, 'url'=>translit($brand_name)));	
    				if(!empty($brand_id))
    					$simpla->products->update_product($product_id, array('brand_id'=>$brand_id));
    		
    			
    		
    		}
    
  9. Видимо, здесь:

    foreach($xml_product->Производитель as $brand)

     

    А вообще поле производителя при обмене с 1С стандартно выгружается и обрабатывается (в списке свойств)...

    Переделал на вот это: 

     

    // Обновляем бренд
    		if(isset($xml_product->Производитель))
    		{
    				$brand_name = strval($xml_product->Производитель);
    			// Найдем его по имени
    			$simpla->db->query('SELECT id FROM __brands WHERE name=?', $brand_name);
    				if(!$brand_id = $simpla->db->result('id'))
    				// Создадим, если не найден
    					$brand_id = $simpla->brands->add_brand(array('name'=>$brand_name, 'meta_title'=>$brand_name, 'meta_keywords'=>$brand_name, 'meta_description'=>$brand_name, 'url'=>translit($brand_name)));	
    				if(!empty($brand_id))
    					$simpla->products->update_product($product_id, array('brand_id'=>$brand_id));
    		
    			
    		
    		}
    
  10. Видимо, здесь:

    foreach($xml_product->Производитель as $brand)

     

    А вообще поле производителя при обмене с 1С стандартно выгружается и обрабатывается (в списке свойств)...

    Не совсем  стандартная 1С. Не подскажешь как исправить? 

  11. Добрый день! Подскажите пожалуйста, где ошибка.

     

    В Конфигурацию 1С добавил в выгрузку поле <Производитель> : 

     

    Файл import.xml : 

     

    <Товар>
    				<Ид>bb6d4ab2-988d-11e5-be92-8c89a5174022</Ид>
    				<Наименование>Iphone 5S 16Gb</Наименование>
    				<Производитель>Apple</Производитель>
    				<БазоваяЕдиница Код="796 " НаименованиеПолное="Штука" МеждународноеСокращение="PCE">шт</БазоваяЕдиница>
    

    В 1c_exchange.php  в местах где товар добавляется и обновляется добавил вот такой код: 

     

    // Обновляем бренд
    		if(isset($xml_product->Производитель))
    		{
    			foreach($xml_product->Производитель as $brand)
    			{
    			// Найдем его по имени
    			$simpla->db->query('SELECT id FROM __brands WHERE name=?', $brand_name);
    			if(!$brand_id = $simpla->db->result('id'))
    				// Создадим, если не найден
    					$brand_id = $simpla->brands->add_brand(array('name'=>$brand_name, 'meta_title'=>$brand_name, 'meta_keywords'=>$brand_name, 'meta_description'=>$brand_name, 'url'=>translit($brand_name)));	
    				if(!empty($brand_id))
    					$simpla->products->update_product($product_id, array('brand_id'=>$brand_id));
    		
    			}
    		
    		}
    

     

  12. Если вопрос про код из #52, вероятно, ошибка в фрагменте

    if($('.variants').find('input[name=variant]:checked').size()>0) 
     variant = $('.variants input[name=variant]:checked').val();
    if($('.variants').find('select[name=variant]').size()>0)
     variant = $('.variants').find('select').val();
    

    В нем сходу видны несколько недостатков:

    1. в одних местах используется $('.variants').find('select[name=variant]'), в других variant = $('.variants').find('select'), в надо бы единообразно.

    2. вместо двух последовательных if логичнее было бы использовать if ... elseif

    3. не отрабатывается ситуация, когда переменная variant не будет определена (скорее всего, это и есть Ваш случай).

     

    И главное, надо проверять указанные элементы на предмет соответствия верстке Вашего шаблона, при этом еще много чего выплыть может...

     

    И само решение несколько корявое, ищет вариант на странице ГЛОБАЛЬНО. Например, это гарантированно не будет работать на странице списка товаров...

    Большое спасибо за подсказку. Всё получилось. 

  13. Еще нужно в шаблоне сделать инициализацию плагина 

     

     <script>
    $(function(){
      $('.menu_vert').liMenuVert({
        delayShow:300,    //Задержка перед появлением выпадающего меню (ms)
        delayHide:300     //Задержка перед исчезанием выпадающего меню (ms)
      });
    });
    </script>
    
  14.  

    	function count_users($filter = array())
    	{
    		$group_id_filter = '';	
    		$keyword_filter = '';
    		$enabled_filter = '';
    
    		if(isset($filter['group_id']))
    			$group_id_filter = $this->db->placehold('AND u.group_id in(?@)', (array)$filter['group_id']);
    
    		if(isset($filter['enabled']))
    			$enabled_filter = $this->db->placehold('AND u.enabled=?', intval($filter['enabled']));
    		
    		if(isset($filter['keyword']))
    		{
    			$keywords = explode(' ', $filter['keyword']);
    			foreach($keywords as $keyword)
    				$keyword_filter .= $this->db->placehold('AND u.name LIKE "%'.$this->db->escape(trim($keyword)).'%" OR u.email LIKE "%'.$this->db->escape(trim($keyword)).'%"');
    		}
    
    		// Выбираем пользователей
    		$query = $this->db->placehold("SELECT count(*) as count FROM __users u
    		                                LEFT JOIN __groups g ON u.group_id=g.id 
    										WHERE 1 $group_id_filter $enabled_filter $keyword_filter ORDER BY u.name");
    		$this->db->query($query);
    		return $this->db->result('count');
    	}
    

    вызывать $new_users_counter = $this->users->count_usersarray('enabled'=>0) );

    Большое спасибо! Всё работает. 

  15. Добрый день! Подскажите пожалуйста, пытаюсь вывести оповещение в админке  "Неактивных" пользователей, по аналогии с новыми заказами (красный круг с количеством)

     

     

    В simpla/IndexAdmin.php

      $new_users_counter = $this->users->count_users(array('enabled'=>0)); 
      $this->design->assign("new_users_counter", $new_users_counter);
    

     

    В simpla/design/html/index.tpl

     

    {if $new_users_counter}<div class='counter'><span>{$new_users_counter}</span>
    

    Но показывает общее количество пользователей. 

     

    В чем может быть проблема?

×
×
  • Создать...