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

cmd

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

    1 296
  • З нами

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

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

  1. Я редактировал только catalog\model\catalog\product.php

    Все верно.

    Ничего не выводится, только сообщение об ошибке, нотис

    Ну, если нет ошибки SQL, то данные из базы забираются. А все остальное, как я уже говорил, не интересно. Ищите где проблема. Первая моя догадка в том, что Вы делаете echo $product['related']; за пределами цикла foreach... 

  2. В контрллере категории catalog\controller\product\category.php
    Есть строка 
    $results = $this->model_catalog_product->getProducts($data);
    Поэтому залазим в контроллер catalog\model\catalog\product.php и находим метод getProducts().
    Там мы видим SQL запрос. Переписываем его.
    $sql = "SELECT p.product_id, (SELECT AVG(rating) AS total FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT COUNT(*) FROM " . DB_PREFIX . "product_related pr WHERE pr.product_id = p.product_id) AS related, (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"; 
    Все... Дальше не интересно. В файле catalog\view\theme\ваш_шаблон\template\product\category.tpl теперь доступна переменная $product['related'], которая содержит числовое значение.
     
    P.S. Сам не проверял.
     
    UPDATED:
    Кажется я фигню написал. Там ниже вызов в цикле:
    foreach ($query->rows as $result) {
    			$product_data[$result['product_id']] = $this->getProduct($result['product_id']);
    		}
    

    О, чудесный OpenCart! О, божественная архитектура!

     

    Значит так... Забыли про getProducts. Вместо того, чтобы редактировать метод getProducts нужно редактировать getProduct по аналогии т.е. 

    $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 COUNT(*) FROM " . DB_PREFIX . "product_related pr WHERE pr.product_id = p.product_id) AS related, (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, (SELECT wcd.unit FROM " . DB_PREFIX . "weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '" . (int)$this->config->get('config_language_id') . "') AS weight_class, (SELECT lcd.unit FROM " . DB_PREFIX . "length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '" . (int)$this->config->get('config_language_id') . "') AS length_class, (SELECT AVG(rating) AS total FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT COUNT(*) AS total FROM " . DB_PREFIX . "review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.sort_order FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN " . DB_PREFIX . "manufacturer m ON (p.manufacturer_id = m.manufacturer_id) WHERE p.product_id = '" . (int)$product_id . "' AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'");
    

    UPDATE 2:

    В этом прекрасном полотне надо добавить 

    if ($query->num_rows) {
    			return array(
    				'product_id'       => $query->row['product_id'],
                                    'related' => $query->row['related'], // вот это добавлено
    				'name'             => $query->row['name'],
    				'description'      => $query->row['description'],
    				'meta_description' => $query->row['meta_description'],
    				'meta_keyword'     => $query->row['meta_keyword'],
    				'tag'              => $query->row['tag'],
    				'model'            => $query->row['model'],
    				'sku'              => $query->row['sku'],
    				'upc'              => $query->row['upc'],
    				'ean'              => $query->row['ean'],
    				'jan'              => $query->row['jan'],
    				'isbn'             => $query->row['isbn'],
    				'mpn'              => $query->row['mpn'],
    				'location'         => $query->row['location'],
    				'quantity'         => $query->row['quantity'],
    				'stock_status'     => $query->row['stock_status'],
    				'image'            => $query->row['image'],
    				'manufacturer_id'  => $query->row['manufacturer_id'],
    				'manufacturer'     => $query->row['manufacturer'],
    				'price'            => ($query->row['discount'] ? $query->row['discount'] : $query->row['price']),
    				'special'          => $query->row['special'],
    				'reward'           => $query->row['reward'],
    				'points'           => $query->row['points'],
    				'tax_class_id'     => $query->row['tax_class_id'],
    				'date_available'   => $query->row['date_available'],
    				'weight'           => $query->row['weight'],
    				'weight_class_id'  => $query->row['weight_class_id'],
    				'length'           => $query->row['length'],
    				'width'            => $query->row['width'],
    				'height'           => $query->row['height'],
    				'length_class_id'  => $query->row['length_class_id'],
    				'subtract'         => $query->row['subtract'],
    				'rating'           => round($query->row['rating']),
    				'reviews'          => $query->row['reviews'] ? $query->row['reviews'] : 0,
    				'minimum'          => $query->row['minimum'],
    				'sort_order'       => $query->row['sort_order'],
    				'status'           => $query->row['status'],
    				'date_added'       => $query->row['date_added'],
    				'date_modified'    => $query->row['date_modified'],
    				'viewed'           => $query->row['viewed']
    			);
    

     

     

  3. рекомендуемых товаров данного товара

    :? О чем речь? Каждому товару присвоены связи с другими товарами и Вы хотите посчитать количество связей для каждого конкретного товара?

  4. А если зайти Дизайн - Layout (Схемы) - Home и поменять контроллер...

     

    И, если уже делать прямой редирект, то лучше через htaccess или контроллер. Потому что вдруг какая-то ошибка где-то выскочит до header. Некрасиво получится - не сработает редирект и поисковики заиндексируют.

    • +1 1
  5. Tr0f, вопрос не ко мне - вопрос к администрации сайта (хотя я бы его задавать не советовал). Если нужна только кастомизация, то см. free-версию

     

    А вообще, если Вы пополните свой счет на 100 р., а потом потратите 50 р. на капчу, то ещё 50 р. останется у Вас на счете. 

  6. Запись

    $data = array('param1' => 'value1', 'param2' => 'value2');
    $this->load->model('setting/setting');
    $this->model_setting_setting->editSetting('my_params_groupname', $data);
    

    Обратите внимание, что массива $data передается и сохраняется как есть, а все старые данные каждый раз удаляются. Если передать в массиве (сохранить) три параметра (param1 и param2 и param3), а потом попытаться сохранить только два (param1 и param2), то param3 будет безвозвратно удален из базы

     

    P.S. В моделе ModelSettingSetting фронтэнда нет метода editSetting. Он есть только в моделе админки. 

  7. Как я понял, где не работает - будет обычный input text

    Не знаю наверняка. Скорее всего, что все type=text, но может же и JS сценарий пошабашить... Надо проверять. А по поводу плагина, например: тыц, тыц. Думаю если поискать, то можно ещё что-то нагуглить.

  8. Нечего проверять - все известно. В связке с bootstrap или плагином для кроссбраузерной поддержки можно юзать. Без них FF не поддерживает, IE 10 поддерживат частично, IE 9 и ниже нет поддержки, Safari частично, андроидовые браузеры частично, Opera Mini - нет.

    • +1 1
  9. Прочитал первые 3-4 сообщения в теме и надоело читать - решил сразу написать. Рейтинги - фигня. Ручное ранжирование - монополия. Что действительно можно сделать - платные баннеры. Например, на главной странице можно залочить какой-то блок для платной рекламы. Разработчик платит за размещение баннера - его шаблон висит на главной. Вот тут уже можно и предвзятым цензурированием заниматься по качеству. 

     

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

     

    А может я очень ошибаюсь и все это полная фигня))

    • +1 2
  10. Например так:

     

    Добавить поле в таблице product в БД

    Добавить поле в форму товара в админке

    Отредактировать в моделе запись при создании товара

    Отредактировать в моделе запись при редактировании товара

    Добавить в карточке товара вывод значения (это уже в фронтэнде)

  11. как можно добавить

    Можно? Можно. Как? Как угодно. Если Вам нужен готовый код - это называется "работа". Если есть конкретные проблемы при работе с кодом и нужен ответ на конкретный вопрос - так и пишите.

  12. RGB, не-не-не.... Это индусский код. Тогда уже регуляркой... Ща...

    Вот эта сделает везде одинарные двойной перенос: 

    nl2br(preg_replace('/[\r\n\r\n]+/', "\n", $str))
    

     

    Вот эта везде нулевые одинарный перенос:

    nl2br(preg_replace('/[\r\n]{2,}/', "\r\n", $str));
    

     

    А сделать так чтобы запретить только двойные тройной перенос и больше у меня почему-то не получилось. Я слабенький в регулярках. 

  13. RGB, тут думать нечего - надо делать множество записей в сессию. Например, с именем, часть которого будет содержать md5 от URL. С точки зрения пользователя такая фича быть чуть-чуть удобнее. Но, опять же, учитывая наличие возможности ajax-перезагрузки капчи это чуть-чуть превращается в чуть-чуть разделенное на 5. А вот с точки зрения оптимизации серверных ресурсов это очень плохая мысль потому, что вместо одной записи данных в сессию будет 5-10-20 (или сколько страниц он просерфит) на каждого пользователя.

     

    Резюмируя, я это делать не буду и никому не посоветую.

     

    P.S. Реализация такой каки - 3 строки кода.

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

Important Information

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