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

Baco

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

    2 247
  • З нами

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

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

  1. Можно реализовать, был бы верстальщик смекалистый, да и вопросы с проплатами, бронированием и логикой доставки прописать бы детальней, а так, то котировка, как описал Pacha, от 1 К американских енотов, за менее сумму на фрилансе можете поискать (но уверен на 75% что вернётесь сюда, без денег и с кучей говнокода), если предложение в силе, то составьте детальней ТЗ, и можно приступать к расписанию этапов реализации проэкта.

  2. В начале public function add() {  добавляете логгер в журнал ошибок по типу:

    $this->log->write('POST_data_addToCart:'. print_r($this->request->post,true)); и после добавления в корзину, смотрите на "выхлоп" в журнале... так как сам скрипт добавления, работает по типу: post и get тут не при чем...

     

    P.S. проверил только что на Chrome:

    08f74ce973d7dd52fc3f274abdeeb673d2d16364

  3. $check_cat = $this->checkCat($result['product_id']);
    
    if ($check_cat) {
     $path = $check_cat;
    } else {
     $path = 0;
    }
    
    ...
    
    
    'href'        => $this->url->link('product/product', 'path=' . (int)$path . '&product_id=' . $result['product_id'])
    
    
    private function checkCat($product_id) {
    	$product_id = (int)$product_id;
    	if ($product_id < 1) return false;
    
    	static $path = null;
    	if (!is_array($path)) {
    		$path = $this->cache->get('product.seopath');
    		if (!is_array($path)) $path = array();
    	}
    
    	if (!isset($path[$product_id])) {
    		$query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . $product_id . "' ORDER BY main_category DESC LIMIT 1");
    
    		$path[$product_id] = $this->getPathByCategory($query->num_rows ? (int)$query->row['category_id'] : 0);
    
    		$this->cache->set('product.seopath', $path);
    		}
    
    	return $path[$product_id];
    }
    
    private function getPathByCategory($category_id) {
    	$category_id = (int)$category_id;
    	if ($category_id < 1) return false;
    
    	static $path = null;
    	if (!is_array($path)) {
    		$path = $this->cache->get('category.seopath');
    		if (!is_array($path)) $path = array();
    	}
    
    	if (!isset($path[$category_id])) {
    		$max_level = 10;
    
    		$sql = "SELECT CONCAT_WS('_'";
    		for ($i = $max_level-1; $i >= 0; --$i) {
    			$sql .= ",t$i.category_id";
    		}
    		$sql .= ") AS path FROM " . DB_PREFIX . "category t0";
    		for ($i = 1; $i < $max_level; ++$i) {
    			$sql .= " LEFT JOIN " . DB_PREFIX . "category t$i ON (t$i.category_id = t" . ($i-1) . ".parent_id)";
    			}
    		$sql .= " WHERE t0.category_id = '" . $category_id . "'";
    
    		$query = $this->db->query($sql);
    
    		$path[$category_id] = $query->num_rows ? $query->row['path'] : false;
    
    		$this->cache->set('category.seopath', $path);
    	}
    
    	return $path[$category_id];
    }
    

    как то так...

  4. Когда ждать выплату?

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

  5. Я так поняла что магазин уже сделан, и его надо доделать, или поднять с нуля? Если есть, дайте ссылку посмотреть.

    И дизайн - дизайнер дает только макет или полностью верстает сайт?

     

     Дизайнер - рисует PSD-шки, а верстальщик - собирает их на сайте... и я так понял, что с верстальщиком вопрос не решен ?

  6. Можно тюнинговать запрос на вывод в модели товара, то есть добавить проверку текущего id товара, на "непривязанность" к категории, вот как я это сделал с помощью функции:

    public function getProductsByNullCatId() {
    	
    	$query = $this->db->query("SELECT `" . DB_PREFIX . "product`.product_id, pd.name FROM `" . DB_PREFIX . "product` 
    		LEFT JOIN " . DB_PREFIX . "product_description pd ON (`" . DB_PREFIX . "product`.product_id = pd.product_id)
    		LEFT JOIN `" . DB_PREFIX . "product_to_category` on `" . DB_PREFIX . "product`.product_id = `" . DB_PREFIX . "product_to_category`.product_id WHERE `" . DB_PREFIX . "product_to_category`.product_id is null AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY pd.name ASC");
    		
    	return $query->rows;
    }
    
  7. Если не ошибаюсь, то в карте сайта будет фигурировать, хотя точно не скажу, ещё может фигурировать, если установлен модификатор "все товары магазина", больше мест, в которых может всплыть такой не привязанный товар - не вспомню.

  8. Почти реализовал, вернее через $.each( как раз получилось то, что задумывалось, теперь завис на первостепенном этапе - это индексе для ddData[], если автоинкремент ставлю, то обнуляет после каждого forech товара... но это несущественно, как то придумаю уж... как реализую, влеплю контрольно репу, за подсказку по jquery...

     

    P.S. Сам забуксовал... вынес начальное значение инкремента за массив и всё стало как надо...

  9. Логика хороша, уже ближе к сути, но всё равно, проблема тут: var data = '&' + name + '='+ value

    1. Данные - не массив объектов JSON, они - "вытяжка" из ddData = $('#htmlselect-' + option_id).data('ddslick');

    2. Как разбить по идентификаторам  ddData, в зависимости от опции и соответственно как добавить (пусть сам уж jquery разбирается) в  data значения:

    [option] => Array

     (
       [227] => 18, //option #1 ..[ ddData_1.selectedData.name] => ddData_1.selectedData.value,
       [228] => 22 //option #2  ..ddData_2.selectedData.name] => ddData_2.selectedData.value;
     )

  10. var ddData = $('#htmlselect-' + option_id).data('ddslick'); - входные данные

     

    смотреть мануал по работе скрипта, если писать по "индостайлу", то получается так:

    var ddData_1 = $('#htmlselect-227').data('ddslick'); // Тут получаем набор объектов через библиотеку опции по ID 227
    var ddData_2 = $('#htmlselect-228').data('ddslick'); // Тут получаем набор объектов через библиотеку опции по ID 228
    	
    	if (ddData_1 !== null && ddData_1 !== undefined) {      // проверочка...
    		var name_1 = ddData_1.selectedData.name;        // option=[227]
    		var value_1 = ddData_1.selectedData.value;      // value 18
    		var data_1 = '&' + name_1 + '='+ value_1;	// формирование строки для addToCart 	
    	} if else (ddData_2 !== null && ddData_2 !== undefined) {
    		var name_2 = ddData_2.selectedData.name;        // option=[228]
                    var value_2 = ddData_2.selectedData.value;      // value 12
                    var data_2 = '&' + name_2 + '='+ value_2;	// формирование строки для addToCart 	
    	} else {
    		var data_1 = '';
                    var data_2 = '';
    	}
    

    вот как бы так не говнокодить, а выбрать и "смержить" значения все в data, кстати объектами не получится послать, надо только в массиве опции высылать постом...

  11. На данный момент проблема тут: var ddData = $('#htmlselect-' + option_id).data('ddslick');

    то есть в одну переменную - 2-ва набора значений добавить, или разделить по option_id, и как добавить это в data, что бы к одному товару, добавилось типа:

    (
        [option] => Array
            (
                [227] => 18, //option #1
                [228] => 22  //option #2
            )
    
        [quantity] => 1
        [product_id] => 30
    )
    
  12. Доброго времени каждому...

     

    Столкнулся с проблемой, а именно с библиотекой этого скрипта.

     

    Задача:

    Сделать возможность добавлять новый тип опций из категории в корзину.

     

    Дано:

    1. Скрипт, приведённый выше.

    2. Опции типа "mixed" (выпадающий список с рисунком)

    3. Доступ ко всем данным типа: 

    data-description="" //Сумма с префиксом и в валютном формате

    data-imagesrc=""  //Рисунок

    data-price=""  //Цена из базы

    data-prefix="" //Сам префикс

    data-name="" //ID опции

     

    В корзину данные же ложатся прекрасно, НО:

    var ddData = $('#htmlselect-' + option_id).data('ddslick'); // Тут получаем набор объектов через библиотеку
    	
    	if (ddData !== null && ddData !== undefined) {      // проверочка...
    		var name = ddData.selectedData.name;        // option=[option_id]
    		var value = ddData.selectedData.value;      // value
    		var data = '&' + name + '='+ value;	    // формирование строки для addToCart 	
    	} else {
    		var data = '';
    	}
    

    Вопрос: как добавить в data несколько опций одного товара через 2-ва отдельных ddslick-а ?

     

    P.S. Демо

  13. В файл .htacess в самом низу добавь записи:

    php_flag display_startup_errors on
    php_flag display_errors on
    php_flag html_errors on
    

    и на месте белого экрана, увидишь магические символы, вызывающие крах бытия на сайте...

  14. Добрый день! Подскажите, как можно разделить статью на несколько страниц. 

    какой критерий разделения ?

     вот например написал новый route для всех статей магазина и разделил по страницам (15 статей на страницу), где разделителем выступает кол-во статей.

  15. // start body_class code
       
        $current_path = $this->request->get;
        if (empty($current_path) || $current_path['route'] == 'common/home') {
          $body_class = 'home';
        }
        else {
          $body_class = explode('/', str_replace('product/', '', $current_path['route']));
          unset($current_path['route']);
          if (isset($current_path['_route_'])) {
            $body_class = array_merge($body_class, explode('/', str_replace('-', '_', $current_path['_route_'])));
            unset($current_path['_route_']);
          }
          foreach ($current_path as $key => $value) {
            $body_class[] = $key . "_" . $value;
          }
          $body_class = 'page_' . implode(" page_", array_unique($body_class));
        }
        $body_class .= ' lang_' . $this->language->get('code');
        $this->data['body_class'] = $body_class;
          
        // end body_class code
    

    поменять на:

    // start body_class code
       
        $current_path = $this->request->get;
    if (isset($this->request->get['route'])) {
        if (empty($current_path) || $current_path['route'] == 'common/home') {
          $body_class = 'home';
        }
        else {
          $body_class = explode('/', str_replace('product/', '', $current_path['route']));
          unset($current_path['route']);
          if (isset($current_path['_route_'])) {
            $body_class = array_merge($body_class, explode('/', str_replace('-', '_', $current_path['_route_'])));
            unset($current_path['_route_']);
          }
          foreach ($current_path as $key => $value) {
            $body_class[] = $key . "_" . $value;
          }
          $body_class = 'page_' . implode(" page_", array_unique($body_class));
        }
        $body_class .= ' lang_' . $this->language->get('code');
        $this->data['body_class'] = $body_class;
      }    
        // end body_class code
    
  16. я что то не понял как работает этот  модуль "информация" . он  просто вставил мне менюшку, представляющую собой список всех статей, прямо под верхним слайдером. к сожалению других позиций кроме как верх страницы, низ страницы, левая колонка, правая колонка, там нет. вот я и изголяюсь.

     

     

    подскажите пожалуйста, каким именно методом надо получить статью (дайте ту строчку с запросом sql), и в какой файл это вставить?

    и где массив с  "this->data" ?

    просто добавь код в контроллер:

    $this->load->model('catalog/information');
    		
    		$this->data['informations'] = array();
        	
    		foreach ($this->model_catalog_information->getInformations() as $result) {
          		$this->data['informations'][] = array(
            		'title' => $result['title'],
            		'href'  => $this->url->link('information/information', 'information_id=' . $result['information_id']) 
          		);
        	}
    

    и в ТПЛ-ке уже выводи где и что надо, можно даже по ИД конкретной статьи...

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

Important Information

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