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

fofa

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

    170
  • З нами

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

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

  1. Давайте по порядку

    1. структура бд

    2. модель покажите

    3. контроллер покажите

     

    1. Структура  БД

     

    2 таблицы

    • _like
    • _like_description
    _like строки
    • ​model
    • image
    • date_available
    • date_added
    • date_modified
    • status
    • sort_order
    • like_id
    _like_description строки
    • like_id
    • language_id
    • name
    • description
    • count_like
    • tag
    • meta_title
    • meta_description
    • meta_keyword
    2. Модель

    <?php
    class ModelAgoolikelike extends Model {
    	
    	public function getlike($like_id) {
    		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "like WHERE like_id = '" . (int)$like_id . "'");
    
    		return $query->rows;
    	}
    	
    	
    	public function getlikeDescriptions($like_id) {
    		$like_description_data = array();
    
    		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "like_description WHERE like_id = '" . (int)$like_id . "'");
    		return $query->rows;
    		
    	}
    }
    

    3. Контроллер

    <?php
    class ControllerModulLike extends Controller
    {
    	public function index() {
    		
    		$this->load->model('modul/like');
    		
    		if (isset($this->request->get['like_id'])) {
    			$like_id = $this->request->get['like_id'];
    		} else {
    			$like_id = 0;
    		}
    		
    		$data['likes'] = array();
    		$results = $this->model_agoo_like_like->getlike($like_id);
    		
    		// вывод
    		foreach ($results as $result) {
    		$data['likes'][] = array(
    					'like_id'  => $result['like_id'],
    					'name'        => $result['name'],
    					'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_like_description_length')) . '..'
    					
    				);		
    		}
    	
    		
    		
    		if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/modul/like/like.tpl')) {
    			return $this->load->view($this->config->get('config_template') . '/template/modul/like/like.tpl', $data);
    		} else {
    			return $this->load->view('default/template/modul/like/like.tpl', $data);
    		}
    	}
    }
    
  2. $_POST или $_GET ?

     

    наверно $_GET (если я правильно понял разницу между методами)

     Где находится значение?
    

     в БД 

     И если вы уже инициализировали переменную $like_id, ее и передавайте
    

    не понял логики действий. В таблице БД есть столбец с like_id. Я хотел вывести данные по аналогии с моделью и контроллером product. В контроллере product и там в обращениях к функциии getProduct стоит аргумент $product_id, внутри функции  есть строчка 

    $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)$this->config->get('config_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)$this->config->get('config_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)$this->config->get('config_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') . "'");
    

    Если аргумент из функции удалить, то вылезает ошибка что (int)$product_id из строчки выше не известен. Не понятно, почему нельзя обойтись без указания аргументов

  3. Уточните что делает модуль .

    если знания нужно вернуть с БД, нужен get запрос, а не post 

     

    У Вас идет проверка был ли отправлен запрос, если было послано значения like_id будет присвоено значения переменной $like_id, если нет то 0 который в свою очередь передается в $this->model_modul_like->getlike($like_id); как параметре для функции 

     

    а правильно писать так

    if (isset($this->request->post['like_id'])) {
        $like_id = $this->request->post['like_id'];
    } else {
        $like_id = 0;
    }
    
    $results = $this->model_modul_like->getlike($like_id);
    
    $data['likes'] = array(); 
    

    Модулю нужно данные из БД вывести во view в виде массива:

    Заголовок

    картинка

    описание

    число лайков (потом прикручу механизм увеличения лайков, чтобы люди могли лайкать)

     

    Сделал так

    if (isset($this->request->get['like_id'])) {
    $like_id = $this->request->get['like_id'];
    		} else {
    			$like_id = 0;
    		}
    		
    		$data['likes'] = array();
    		$results = $this->model_modul_like->getlike($like_id);
    

    Ошибка исчезла, но данные не выводятся. Вывести хотя бы заголовок ['name'], 

     

    Я правильно понял, что get использовать когда нужно извлечь данные с БД, а post - когда внести?

  4. Чтобы функция понимала какие аргументы она может принимать

    Не получается вывести данные из БД в виде массива

    Вот модель

    public function getlike($like_id) {
    $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "like_description WHERE like_id = '" . (int)$like_id . "'");
    
    
    return $query->rows;
    }
    
    Вот контроллер

     

    public function index() {
    $this->load->model('modul/like');
    
    if (isset($this->request->post['like_id'])) {
    $like_id = $this->request->post['like_id'];
    } else {
    $like_id = 0;
    }
    $data['likes'] = array(); 
    $results = $this->model_modul_like->getlike($this->request->get['like_id']); 
    foreach ($results as $result) { 
    $data['likes'][] = array( 
    'like_id'  => $result['like_id'], 
    'name'        => $result['name'], 
    'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_like_description_length')) . '..' ); 
    } 
    if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/modul/like/like.tpl')) { 
    return $this->load->view($this->config->get('config_template') . '/template/modul/like/like.tpl', $data); 
    } else { 
    return $this->load->view('default/template/modul/like/like.tpl', $data); 
    } 
    ​}
    
    
     

    Пишет ошибку Notice: Undefined index: like_id in /catalog/controller/modul/like.php on line 14

    Подскажите пожалуйста, что делать?

  5. переменную $like_id в конроллере надо бы вначале инициализировать перед тем как использовать. т.е. присвоить ей какое-нибудь значение

     

    Я правильно понял, что 

    $results = $this->model_modul_like->getLikeDescriptions($like_id);
    

    обращается к переменной $like_id внутри функции getLikeDescriptions?

  6. Делаю модуль по аналогии с другими модулями

    В контроллере модуля есть строчка

    $results = $this->model_modul_like->getLikeDescriptions($like_id);
    

    В модели есть строчка

    public function getLikeDescriptions($like_id)
    

    На сайте вылезает ошибка Notice: Undefined variable:like_id in /catalog/controller/modul/like.php on line 8

    Вопрос, в чем суть ($like_id), т.е. для чего он нужен, как работает и как его правильно указывать?

  7. Нужен программист c опытом работы от 2-х лет, который поделится знаниями о принципах создания модуля Opencart 2.0, подводных камнях, ответит на вопросы и проверит корректность кода.

    Плачу 500 руб/час. Оплата производится 50% перед занятием и 50% после окончания. Skype: fof_fa

  8. Верните деньги заказчику и начните изучать OpenCart с чего нибудь попроще.

     

    К вам обращаются за помощью. А если вы вместо помощи лезете в мои отношения с заказчиком - видимо родители не научили, что совать нос куда не просят нехорошо. 

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

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

    Делаю модуль по голосованию, за основу взял код заполнения товаров, только вместо товаров участники с одной картинкой. Язык: русский

    Логика: админ заходит в модуль, заполняет имя участника, описание, указывает картинку. На сайте выводится список картинок с именами и лайками и пользователи лайкают

    Проблема в том, что при сохранении в админке выходит ошибка Notice: Undefined index: mymodul_description in //admin/model/module/mymodul.php on line 14Warning: Invalid argument supplied for foreach() in /admin/model/module/mymodul.phpon line 14Warning: Cannot modify header information - headers already sent by (output started at /admin/index.php:84) in /system/library/response.php on line 12

     

    Вот код, на который ссылается ошибка:

    foreach ($data['mymodul_description'] as $language_id => $value) {
    			$this->db->query("INSERT INTO " . DB_PREFIX . "mymodul_description SET mymodul_id = '" . (int)$mymodul_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', description = '" . $this->db->escape($value['description']) . "', tag = '" . $this->db->escape($value['tag']) . "', meta_title = '" . $this->db->escape($value['meta_title']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', meta_keyword = '" . $this->db->escape($value['meta_keyword']) . "'");
    		}
    

    Я так понял, базе не понятно, какое значение должно быть у $language_id. Как быть?

  10. Кто нибудь может посоветовать, как верстать для "белки" (UC Browser)? В опере, яндекс.браузере, хроме нормально отображается, а в "белке" все съезжает. Проверял разные верстки: те, что сам верстал и те, что по умолчанию (свежеустановленный движок)

  11. зачем Вам блок то ? 

    все что делаете не так - это добавляете блок 

     

    Не надо делать пользовательские позиции

    Это не правильно

    Ни один модуль не будет знать о них, плюс лишние затраты на вычисления

    Часто встают задачи размещения блоков модулей в других местах. Например из header нужно перенести в content_top или наоборот. Если использовать javascript, то при загрузке видно, как модуль скачет по странице, что меня не устраивает. Поэтому блок делаю для того, чтобы понять как устроен механизм магазина и потом обходиться без javascript. Если модули не увидят этот блок, значит будем разбираться.

  12. В шаблоне home.tpl помимо content_top, column_left, column_right и content_bottom нужно добавить блок servicerow2

     

    сделал следующие шаги:

    1. добавил строку в catalog/controller/common/home.php

    $data['servicerow'] = $this->load->controller('common/servicerow2');

    2 добавил файл \catalog\controller\common\servicerow2.php c кодом

    <?php
    class ControllerCommonServicerow2 extends Controller {
    	public function index() {
    		$this->load->model('design/layout');
    
    		if (isset($this->request->get['route'])) {
    			$route = (string)$this->request->get['route'];
    		} else {
    			$route = 'common/home';
    		}
    
    		$layout_id = 0;
    
    		if ($route == 'product/category' && isset($this->request->get['path'])) {
    			$this->load->model('catalog/category');
    
    			$path = explode('_', (string)$this->request->get['path']);
    
    			$layout_id = $this->model_catalog_category->getCategoryLayoutId(end($path));
    		}
    
    		if ($route == 'product/product' && isset($this->request->get['product_id'])) {
    			$this->load->model('catalog/product');
    
    			$layout_id = $this->model_catalog_product->getProductLayoutId($this->request->get['product_id']);
    		}
    
    		if ($route == 'information/information' && isset($this->request->get['information_id'])) {
    			$this->load->model('catalog/information');
    
    			$layout_id = $this->model_catalog_information->getInformationLayoutId($this->request->get['information_id']);
    		}
    
    		if (!$layout_id) {
    			$layout_id = $this->model_design_layout->getLayout($route);
    		}
    
    		if (!$layout_id) {
    			$layout_id = $this->config->get('config_layout_id');
    		}
    
    		$this->load->model('extension/module');
    
    		$data['modules'] = array();
    
    		$modules = $this->model_design_layout->getLayoutModules($layout_id, 'servicerow2');
    
    		foreach ($modules as $module) {
    			$part = explode('.', $module['code']);
    
    			if (isset($part[0]) && $this->config->get($part[0] . '_status')) {
    				$data['modules'][] = $this->load->controller('module/' . $part[0]);
    			}
    
    			if (isset($part[1])) {
    				$setting_info = $this->model_extension_module->getModule($part[1]);
    
    				if ($setting_info && $setting_info['status']) {
    					$data['modules'][] = $this->load->controller('module/' . $part[0], $setting_info);
    				}
    			}
    		}
    
    		if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/common/servicerow2.tpl')) {
    			return $this->load->view($this->config->get('config_template') . '/template/common/servicerow2.tpl', $data);
    		} else {
    			return $this->load->view('default/template/common/servicerow2.tpl', $data);
    		}
    	}
    }
    

    3 добавил файл \catalog\view\theme\default\template\common\servicerow2.tpl c кодом 

    <?php foreach ($modules as $module) { ?>
    <?php echo $module; ?>
    <?php } ?>

    4 вставил строчку в файл catalog\view\theme\default\template\common\home.tpl

    <?php echo $servicerow2; ?>

    на странице сайта выходит ошибка 

    Notice: Undefined variable: servicerow2 in /var/www/u0128313/data/www/grc-security.ru/catalog/view/theme/default/template/common/home.tplon line 6

     

    Уважаемые специалисты, подскажите, что я делаю не так?

     

  13. Нужно, чтобы налог уже учитывался в цене товара, а не прибавлялся к ней. А то мы вбили все цены и перебивать их за вычетом НДС врукопашную как-то не айс. Нашел такое решение https://opencartforum.com/topic/7711-nalog-v-tcene-tovara-v-korzine-i-pri-oformlenii-za/

    Кто нибудь пробовал его на opencart 2.0.3.1?

    Или подскажите свое решение

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

Important Information

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