-
Публікації
79 -
З нами
-
Відвідування
Тип публікації
Профілі
Форум
Маркетплейс
Статті
FAQ
Наші новини
Магазин
Блоги
module__dplus_manager
Повідомлення, опубліковані користувачем stebgo
-
-
есть один косяк - при переходе на вторую и далее страницу отзывов из ссылки на 1 страницу удаляется только page=1
на ссылке остаётся висеть ?review_
помогите с этим разобраться.
где происходит удаление page для первой страницы?
вроде должно быть в /system/library/pagination.php но сейчас нет времени разбираться, только ночью :)
если кто найдет решение, напишите.
-
Здравствуйте :)
Эта тема для тех:
1) кого не устраивают стандартные отзывы товаров с ajax в opencart 2 и ocStrore 2
2) кому не подходят, не нравятся, или нет желания покупать готовые решения отзывов для товаров
3) кто хочет немного погеммороится с кодом, но понять как все это работает и что можно сделать под свои запросы.
4) для истинных программистов-альтруистов готовых безвозмездно помочь советом и кодом.
! Я очень плохо знаю PHP, HTML, CSS, javascript
! Любой код написанный мной может содержать ошибки, являться говнокодом, снижать безопасность и т. д.
! Комментарии делаю для своего магазина (ocStore 2.1.0.2) на который планирую переходить с версии 1,5 - по этому рассматриваю, тестирую, настраиваю код только для этой версии ocSrore.
! Я надеюсь на помощь - для этого и создал тему.
Комментарии без ajax для opencart / ocstore 2.1.0.2
В файле /catalog/controller/product/product.php
найти$this->model_catalog_product->updateViewed($this->request->get['product_id']);
и после нее вставить следующее
$this->load->model('catalog/review'); $data['text_no_reviews'] = $this->language->get('text_no_reviews'); if (isset($this->request->get['review_page'])) { $page = $this->request->get['review_page']; } else { $page = 1; } $data['reviews_array'] = array(); $review_total = $this->model_catalog_review->getTotalReviewsByProductId($this->request->get['product_id']); $results = $this->model_catalog_review->getReviewsByProductId($this->request->get['product_id'], ($page - 1) * 5, 5); foreach ($results as $result) { $data['reviews_array'][] = array( 'author' => $result['author'], 'text' => nl2br($result['text']), 'rating' => (int)$result['rating'], 'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added'])) ); } $pagination = new Pagination(); $pagination->total = $review_total; $pagination->page = $page; $pagination->limit = 5; $pagination->text = $this->language->get('text_pagination'); $pagination->url = $this->url->link('product/product', $url . '&product_id=' . $this->request->get['product_id']. '&review_page={page}'); $data['pagination'] = $pagination->render(); $data['results'] = sprintf($this->language->get('text_pagination'), ($review_total) ? (($page - 1) * 5) + 1 : 0, ((($page - 1) * 5) > ($review_total - 5)) ? $review_total : ((($page - 1) * 5) + 5), $review_total, ceil($review_total / 5)); // http://googlewebmastercentral.blogspot.com/2011/09/pagination-with-relnext-and-relprev.html if ($page == 1) { $this->document->addLink($this->url->link('product/product', 'product_id=' . $this->request->get['product_id']), 'canonical'); } elseif ($page == 2) { $this->document->addLink($this->url->link('product/product', 'product_id=' . $this->request->get['product_id']), 'prev'); } else { $this->document->addLink($this->url->link('product/product', 'product_id=' . $this->request->get['product_id']) . '&review_page='. ($page - 1), 'prev'); } $limit = 5; if ($limit && ceil($review_total / $limit) > $page) { $this->document->addLink($this->url->link('product/product', 'product_id=' . $this->request->get['product_id']) . '&review_page='. ($page + 1), 'next'); }
Что тут, откуда и для чего
кусок кода для вставки взят из функции public function review() и немного отредактирован.
функция находится чуть ниже в этом же файле. эта функция вызывается из шаблона с помощью ajax. Если код выше не работает в вашей версии opencart можете отредактировать код из функции и вставить его.
важно заменить код из функции$data['reviews'] = array();
на
$data['reviews_array'] = array();
точнее везде в этом коде заменить reviews на reviews_array
так как переменная reviews уже используется в шаблоне для отображений рейтинг / просмотр и добавления отзыва.
-----------------------------
дальше нужно изменить ссылку для пагинации
это$pagination->url = $this->url->link('product/product/review', 'product_id=' . $this->request->get['product_id'] . '&page={page}');
заменить на это
$pagination->url = $this->url->link('product/product', $url . '&product_id=' . $this->request->get['product_id']. '&review_page={page}');
или просто убрать /review - теперь при клике на кнопки навигации вызываться будет на шаблон отзывов а шаблон продукту с review_page=****
-----------------------------
Изменить количество отображаемых отзывов можно заменив все 5 на нужное вам число.
-----------------------------
Даем поисковикам понять что это одна статья/товар разбитый на страницы
Этот кусок кода я спер в /catalog/controller/product/category.php строка 362// http://googlewebmastercentral.blogspot.com/2011/09/pagination-with-relnext-and-relprev.html if ($page == 1) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'], 'SSL'), 'canonical'); } elseif ($page == 2) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'], 'SSL'), 'prev'); } else { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page - 1), 'SSL'), 'prev'); } if ($limit && ceil($product_total / $limit) > $page) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1), 'SSL'), 'next'); }
заменив
page на review_page
и'product/category', 'path=' . $category_info['category_id'],
на
'product_id=' . $this->request->get['product_id']),
эту часть 'SSL'), убрал так как ее нет в /catalog/controller/product/product.php (у меня в 230 строке) то есть в файле который мы редактируем, то есть эта ссылка больше не нужна и в 230 строке я ее закомментировал //
--------------------
В коде, в некоторых местах я изменил page на review_page - если оставить page то появляются косяки с хлебными крошками. более простого способа не нашел. если есть желание можете заменить на свой вариант.
Находим и удаляем или закомментируем //$this->document->addLink($this->url->link('product/product', 'product_id=' . $this->request->get['product_id']), 'canonical');
так как это появилось в наших отзывах и изменяется от условий.
На этом с файлом /catalog/controller/product/product.php закончили
-----------------------------------------------------------------------------------------------
в файле /system/library/pagination.php
после строки$num_pages = ceil($total / $limit);
вставить
$pages = array("review_page={page}", "page={page}");
review_page можно заменить на то что вы хотите и изменили в контроллере и шаблоне
далее находим такие строки$output .= '<li><a href="' . str_replace('&', '&', rtrim( str_replace('page={page}', '', $tmp_url), '?&')) . '">' . $this->text_first . '</a></li>';
$output .= '<li><a href="' . str_replace('&', '&', rtrim( str_replace('page={page}', '', $tmp_url), '?&')) . '">' . $this->text_prev . '</a></li>';
$output .= '<li><a href="' . str_replace('&', '&', rtrim( str_replace('page={page}', '', $tmp_url), '?&')) . '">' . $i . '</a></li>';
и заменяем в них
'page={page}'
на
$pages
в итоге получим такой код в файле /system/library/pagination.php
<?php class Pagination { public $total = 0; public $page = 1; public $limit = 20; public $num_links = 8; public $url = ''; public $text_first = '|<'; public $text_last = '>|'; public $text_next = '>'; public $text_prev = '<'; public function render() { $total = $this->total; if ($this->page < 1) { $page = 1; } else { $page = $this->page; } if (!(int)$this->limit) { $limit = 10; } else { $limit = $this->limit; } $num_links = $this->num_links; $num_pages = ceil($total / $limit); $pages = array("review_page={page}", "page={page}"); $this->url = str_replace('%7Bpage%7D', '{page}', $this->url); $output = '<ul class="pagination">'; if ($page > 1) { $tmp_url = str_replace('&', '&', $this->url); $output .= '<li><a href="' . str_replace('&', '&', rtrim( str_replace($pages, '', $tmp_url), '?&')) . '">' . $this->text_first . '</a></li>'; if ($page == 2){ $output .= '<li><a href="' . str_replace('&', '&', rtrim( str_replace($pages, '', $tmp_url), '?&')) . '">' . $this->text_prev . '</a></li>'; }else{ $output .= '<li><a href="' . str_replace('{page}', $page - 1, $this->url) . '">' . $this->text_prev . '</a></li>'; } } if ($num_pages > 1) { if ($num_pages <= $num_links) { $start = 1; $end = $num_pages; } else { $start = $page - floor($num_links / 2); $end = $page + floor($num_links / 2); if ($start < 1) { $end += abs($start) + 1; $start = 1; } if ($end > $num_pages) { $start -= ($end - $num_pages); $end = $num_pages; } } for ($i = $start; $i <= $end; $i++) { if ($page == $i) { $output .= '<li class="active"><span>' . $i . '</span></li>'; } else { if ($i == 1){ $output .= '<li><a href="' . str_replace('&', '&', rtrim( str_replace($pages, '', $tmp_url), '?&')) . '">' . $i . '</a></li>'; }else{ $output .= '<li><a href="' . str_replace('{page}', $i, $this->url) . '">' . $i . '</a></li>'; } } } } if ($page < $num_pages) { $output .= '<li><a href="' . str_replace('{page}', $page + 1, $this->url) . '">' . $this->text_next . '</a></li>'; $output .= '<li><a href="' . str_replace('{page}', $num_pages, $this->url) . '">' . $this->text_last . '</a></li>'; } $output .= '</ul>'; if ($num_pages > 1) { return $output; } else { return ''; } } }
можете просто заменить содержимое файла на этот код
Открываем файл шаблона ( если по умолчанию то /catalog/view/theme/default/template/product/product.tpl)
находим<div id="review"></div>
или то место куда ajax вставляет отзывы
и вставляем в этот div<?php if ($reviews_array) { ?> <?php foreach ($reviews_array as $review) { ?> <table class="table table-striped table-bordered"> <tr> <td style="width: 50%;"><strong><?php echo $review['author']; ?></strong></td> <td class="text-right"><?php echo $review['date_added']; ?></td> </tr> <tr> <td colspan="2"><p><?php echo $review['text']; ?></p> <?php for ($i = 1; $i <= 5; $i++) { ?> <?php if ($review['rating'] < $i) { ?> <span class="fa fa-stack"><i class="fa fa-star-o fa-stack-2x"></i></span> <?php } else { ?> <span class="fa fa-stack"><i class="fa fa-star fa-stack-2x"></i><i class="fa fa-star-o fa-stack-2x"></i></span> <?php } ?> <?php } ?></td> </tr> </table> <div itemprop="review" itemscope itemtype="http://schema.org/Review"> <meta itemprop="itemReviewed" content="<?php echo $heading_title; ?>" > <meta itemprop="author" content="<?php echo $review['author']; ?>" > <meta itemprop="datePublished" content="<?php $date1 = strtotime($review['date_added']); $new_date = date('Y-m-d', $date1); echo $new_date; ?>"> <div itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating"> <meta itemprop="worstRating" content = "1"/> <meta itemprop="ratingValue" content="<?php echo $review['rating']?>"/> <meta itemprop="bestRating" content = "5"/> </div> <meta itemprop="description" content="<?php echo $review['text']; ?>" /> </div> <?php } ?> <div class="text-right"><?php echo $pagination; ?></div> <?php } else { ?> <p><?php echo $text_no_reviews; ?></p> <?php } ?>
тут есть мои костыли
валидатор от яндекса ругался на формат даты, ему нужен Y-m-d
использовал такой костыль
<meta itemprop="datePublished" content="<?php $date1 = strtotime($review['date_added']); $new_date = date('Y-m-d', $date1); echo $new_date; ?>">
теперь гугл и яндекс валидаторы такую дату понимают.
---------
не до конца определился как будет более правильно<meta itemprop="itemReviewed" content="<?php echo $heading_title; ?>" >
или
<meta itemprop="name" content="<?php echo $heading_title; ?>" >
на itemprop="name" валидаторы ругались что нет itemReviewed
может их совместно использовать надо?
Удаляем обработку ajax, находим почти в самом низу кода:$('#review').delegate('.pagination a', 'click', function(e) { e.preventDefault(); $('#review').fadeOut('slow'); $('#review').load(this.href); $('#review').fadeIn('slow'); }); $('#review').load('index.php?route=product/product/review&product_id=<?php echo $product_id; ?>');
можно вместо него вставить:
$(document).ready(function() { <?php if(isset($_GET['review_page'])){ ?> $('a[href=\'#tab-review\']').trigger('click'); var scrollTop = $('#tab-review').offset().top; $(document).scrollTop(scrollTop); <?php } ?> });
тогда при пагинации будет открываться таб с отзывами и скролл к нему (не работает при переходе обратно на первую страницу)
---------------------------------------------------------------------------------------------------------------------
Вот и все
--------------
Большая часть материала взята с сайта http://cmykon.com.ua/opencart/otzyvy-bez-ajax-ili-seo-otzyvy-v-opencart/
не работает в opencart 2.1.0.2
В планах:
1) вывод отзывов в зависимости от текущего языка
2) начисление баллов за отзыв
Буду благодарен за исправления ошибок и костылей.- 3
-
Здравствуйте.
Подскажите что за интеграция с торговой площадкой etsy.com появилась в OC2 - поиск практически не дал результатов кроме того что интеграция вроде есть. В админке ничего не нашел, но есть два файла в admin/model/openbay/ - etsy.php и etsy_product.php , есть файлы и в папке admin/controller/openbay/ немного больше, а так же в папке шаблона админки. что это, для чего и как использовать?
есть какой то https://www.openbaypro.com/ с драконовскими тарифами.
-
под меня не нужно делать перевод, нужно делать согласно нормам - весь текст в языковом файле в папке нужного языка.
та же история и с файлами стилей и кодом.
почему текст счетчика - дни, минуты итд для страницы товара находится в php файле, а для страницы категории в файле скрипта?
что означает <operation error="skip"> в xml файле?
ЗЫ
Я просто хочу что бы вы сделали качественный модуль :) который стоит своих денег, наведите порядок и доработайте.
-
Здравствуйте.
Таймер работает но... это нельзя назвать модулем.
1) Зачем он мне меняет настроенные мной стили для кнопки купить на странице товара, заменяет полностью на ваш стиль.
2) у меня магазин на 3-х языках, и то что прописано у вас в коде для англоязычных покупателей - шлак (текст удалил).
3) Зачем в папку catalog/view/javascript пихать css и php файлы
думал сэкономить время на создании собственного счетчика, купил......
уже переделал под себя, но другим не советую его покупать в текущем состоянии.
ЗЫ
в придачу, если страница долго открыта она перестает отвечать, браузеры хром и мазила выдают ошибку.
этот модуль нельзя продавать.
DEL ...
-
Здравствуйте.
В настройках модуля можно настроить разные поля, способы доставки и оплаты для разных групп покупателей.
Но нельзя настроить "Минимальные/максимальные значения" для разных групп покупателей - для обычных покупателей одна сумма или кол-во для оптовых другие значения.
Добавьте пожалуйста такую настройку если не сложно.
-
Если у кого-то появится проблема с валидацией email при регистрации или оформлении заказа из-за точки в имени почтового ящика, то вот регулярное выражение которое решает эту проблему: /^[-\w.]+@([A-z0-9][-A-z0-9]+\.)+[A-z]{2,4}$/si
как сделать валидацию нижнего подчеркивания _ , такое мыло [email protected] не проходит валидацию
-
вроде работает
оставил только
// Language Detection $languages = array(); $query = $db->query("SELECT * FROM " . DB_PREFIX . "language WHERE status = '1'"); foreach ($query->rows as $result) { $languages[$result['code']] = $result; } $code = $config->get('config_language'); $config->set('config_language_id', $languages[$code]['language_id']); $config->set('config_language', $languages[$code]['code']); // Language $language = new Language($languages[$code]['directory']); $language->load($languages[$code]['filename']); $registry->set('language', $language);
Посмотрите, может это как то плохо я сделал :)
-
вот нашел кусок кода в index.php
// Language Detection $languages = array(); $query = $db->query("SELECT * FROM " . DB_PREFIX . "language WHERE status = '1'"); foreach ($query->rows as $result) { $languages[$result['code']] = $result; } $detect = ''; if (isset($request->server['HTTP_ACCEPT_LANGUAGE']) && ($request->server['HTTP_ACCEPT_LANGUAGE'])) { $browser_languages = explode(',', $request->server['HTTP_ACCEPT_LANGUAGE']); foreach ($browser_languages as $browser_language) { foreach ($languages as $key => $value) { if ($value['status']) { $locale = explode(',', $value['locale']); if (in_array($browser_language, $locale)) { $detect = $key; } } } } } if (isset($session->data['language']) && array_key_exists($session->data['language'], $languages) && $languages[$session->data['language']]['status']) { $code = $session->data['language']; } elseif (isset($request->cookie['language']) && array_key_exists($request->cookie['language'], $languages) && $languages[$request->cookie['language']]['status']) { $code = $request->cookie['language']; } elseif ($detect) { $code = $detect; } else { $code = $config->get('config_language'); } if (!isset($session->data['language']) || $session->data['language'] != $code) { $session->data['language'] = $code; } if (!isset($request->cookie['language']) || $request->cookie['language'] != $code) { setcookie('language', $code, time() + 60 * 60 * 24 * 30, '/', $request->server['HTTP_HOST']); } $config->set('config_language_id', $languages[$code]['language_id']); $config->set('config_language', $languages[$code]['code']); // Language $language = new Language($languages[$code]['directory']); $language->load($languages[$code]['filename']); $registry->set('language', $language);
тут, если я правильно понимаю и происходит определение языка.
ЗЫ
у меня для каждого языка свой домен, по этому и возникла такая проблема, хочу продвигать каждый магазин отдельно в своей языковой зоне.
-
Нужно отключить любой автоматический выбор языка на сайте, так как некоторые поисковики все равно индексируют страницы не на том языке который должен быть по умолчанию и есть проблемы у некоторых покупателей.
не могу понять где устанавливается язык.
/catalog/model/localisation/language.php - вывод всех языков но это не то.
подскажите пожалуйста хоть строчку кода которая установит язык, дальше я сам доделаю в зависимости от id магазина.
-
удалил
<?php echo $currency; ?>
вроде получше стало, но все равно автоматом определяет язык.
Подскажите в к каком файле происходит определение языка посетителя и в каком файле происходит запись выбранного языка в куки
-
Здравствуйте.
У меня следующая проблема - на сайте установлены три языка, и сделано три магазина стандартным способом. в каждом магазине установлен свой язык по умолчанию. Только сейчас обнаружил что ocStore 1.5.4.1 выдает в любом из трех магазинов не по умолчанию, а в зависимости от кода страны откуда пришел покупатель, языка браузера или еще как то .
Вот собственно хотелось бы убрать эту его функцию + убрать запоминание выбора языка(при переходе между магазинами).
в место переключения языка сделаю потом ссылки на другие магазины.
-
без 3d тоже работают
виртуальные карты не работают(но может какието и работают)
про text_description - для описания способо оплаты не понял что это и для чего и где оно потом будет появляться?
это небольшое описание способа, которое видно в корзине под названием способа оплаты или доставки.
вставил пока используя модуль симпле для карт вот такое описание "Вы можете использовать карту VISA или MasterCard, если для нее включена защита 3-D Secure."
без 3d не работает точно, пробовал с белорусских карт виза, недавно делал. когда делал бабулька работающая там говорила мне - зачем тебе это 3d защита у нас же она нигде не используется, а платить в интернете можно с этой карты, она же виза электрон, да и делать с защитой дороже.
в общем у большинства беларусов нет 3-D Secure и они не представляют что это такое, так как карты в основном получают при трудоустройстве и естественно карты самые дешевые.
-
я так понял что принимаются только карты с защитой 3-D Secure ? или в настройках яндекса можно это отключить?
и добавте пожалуйста в языковой файл text_description - для описания способо оплаты
-
-
Подскажите, как добавить ссылку в изображение в галерее блога, не в основном, где статьи, а именно в галерее!
ссылку на категорию ? там где список категорий?
-
здравствуйте.
установил в своем магазине комментарии sv kament, в них есть функция сохранения комментариев на сервере сайта для seo.
пытаюсь настроить сохранение в базу как написано тут http://svkament.ru/faq#kament_page_name
так как плохо разбираюсь в php и работой с базой пока решил вставить код в шаблон
получился вот такой код
<?php $subdomain = "smold"; $page_name ='http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; function update_kament_comments($subdomain, $page_name) { $plain = ''; $row = NULL; // Сначала проверим в БВ $result = $this->db->query("SELECT data, UNIX_TIMESTAMP(timestamp) as timestamp from kament_raw_comments WHERE page_name=\"$page_name\""); if(!$result) { error_log('Bad query in update_kament_comments()!'); return NULL; } else { $row = mysql_fetch_assoc($result); if($row) $plain = $row->data; } // если данные в БД не найдены или они устарели - обновить с KAMENT сервера if(!$row || $row['timestamp'] < (time() - 1800) ) { $new_data = kament_download_from_url('http://' . $subdomain . ".svkament.ru/commentswidget/plain/?page_name=$page_name"); if($new_data != NULL) { $plain = $new_data; $result = $this->db->query("INSERT INTO $table_name (page_name, timestamp, data) VALUES(\"$page_name\", NOW(), \"$new_data\") ON DUPLICATE KEY UPDATE timestamp=NOW(),data=\"$new_data\""); if(!$result) { error_log('Unable to save new data to DB in update_kament_comments()'); } } } return $plain; } // Скачать данные по заданному URL используя CURL function kament_download_from_url($url) { if(!function_exists('curl_version')) return NULL; $ch = @curl_init ( $url ); if(!$ch) return NULL; curl_setopt( $ch, CURLOPT_AUTOREFERER, true ); curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 ); curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, FALSE); $output = curl_exec ( $ch ); $httpcode = curl_getinfo($ch,CURLINFO_HTTP_CODE); if (curl_errno ( $ch ) || $httpcode != 200) { return NULL; } else { curl_close ( $ch ); } if( strpos($output, 'kament-plaintext-comments')===false ) return NULL; return $output; } $plain_comments = update_kament_comments($subdomain, $page_name); ?> <div id="kament_comments"> <?php echo $plain_comments; ?> </div> <script type="text/javascript"> /* * * НАСТРОЙКА * * */ var kament_subdomain = 'smold'; /* * * НЕ МЕНЯЙТЕ НИЧЕГО НИЖЕ ЭТОЙ СТРОКИ * * */ (function() { var node = document.createElement('script'); node.type = 'text/javascript'; node.async = true; node.src = 'http://' + kament_subdomain + '.svkament.ru/js/embed.js'; (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(node); })(); </script> <noscript>Для отображения комментариев нужно включить Javascript</noscript>
таблицу в базе данных создал используя запрос из faq
база данных без префикса.
в общем прошу помощи в доработке этого кода под опенкарт (1,5,4,1), в данном виде не работает .
нужно изменить только sql запросы или где то еще косяки?
-
жду версию с api
просьба сделать в этой версии - при оплате не в российских рублях конвертацию в российские рубли по курсу обмена сайта.
-
для тех у кого не дефолтный шаблон
1) смотрите куда заливаете файлы, залейте в свой шаблон
2) в файле vqmod_ocu_waitlist.xml
заменить все пути типа <file name="catalog/view/theme/default/template/common/footer.tpl"> на <file name="catalog/view/theme/*/template/common/footer.tpl">
то есть - заменить default на *
3) у меня он тоже пока не работает.... :-) рою vqmod, что и вам советую, возможно что то изменено - добавлен класс или еще что то и vqmod не правит файл.
работает в категории - по умолчанию
в карточке товара vqmod не менял кнопку, вставил нужное значение в карточку и все заработало.
-
спасибо, буду делать
-
да мне бы просто код записи в базу :), какие то нюансы - пишется купон в одну таблицу или в несколько может еще что то, или хоть где он формируется, в каком файле.
попробую сам для начала, если не получится буду спрашивать.
-
Здравствуйте.
помогите пожалуйста с кодом создания купона.
код будет находится в кабинете пользователя, пока не решил где точно... купон должен создаваться при первом посещении кабинета.
необходимо что бы при запуске кода он проверял наличие в базе купона с определенным кодом и при его отсутствии создавал запись.
параметры произвольные, я их потом подгоню под нужные
-
-
Отзывы без ajax - opencart 2.1.0.2
в Opencart 2.x: Пісочниця
Опубліковано: · Змінено користувачем stebgo
[spoiler]
Косяк исправил, добавил в первый пост
описание исправлений
в файле /system/library/pagination.php
после строки
вставить
review_page можно заменить на то что вы хотите и изменили в контроллере и шаблоне
далее находим такие строки
и заменяем в них
на
в итоге получим такой код в файле /system/library/pagination.php