Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Leaderboard

Popular Content

Showing content with the highest reputation on 04/19/2011 in all areas

  1. Фильтр товаров в категории 2.0 Демо: Shop Filter Возможности: админ: - создание неограниченного количества опций и значений фильтра; - присваивание опции к нескольким категориям; - присваивание значения опций к товару; - работает как обычный модуль. Позиционирование справа - слева, порядок вывода; пользователь: - выборка товаров по критериям (логику см. картинку); - отображение количества товаров для каждого следующего шага выборки опции-родителя и соседних опций, основываясь на текущей категории и логики выборки; - деактивация критерий с нулевым результатом количества товаров при следующем нажатии; - исключение AJAX дало возможность гарантированно получить данные и создать реальные страницы для поисковых роботов; - запрос с параметрами фильтра выглядит следующим образом: index.php?route=product/category&path=20&filter=1=2,3;3=11,10;4=18 где: переменная GET, опция, значения опции Установка на чистый OpenCart (OpenStore) затронет следующие файлы: admincontrollercatalogproduct.php admincontrollercommonheader.php adminlanguageenglishcatalogproduct.php adminlanguageenglishcommonheader.php adminlanguagerussiancatalogproduct.php adminlanguagerussiancommonheader.php adminmodelcatalogproduct.php adminviewtemplatecatalogproduct_form.tpl adminviewtemplatecommonheader.tpl catalogcontrollerproductcategory.php catalogmodelcatalogproduct.php Установка на чистый OS 1. Извлеките папки из архива openstore_filter_2.0_clean_install.zip в корень сайта с заменой. 2. Система -> пользователи -> группы пользователей -> Главный администратор [Изменить], ставим галки напротив catalog/filter и сохраняем. 3. Войдите в админ панель -> дополнения -> модули -> Фильтр товаров [изменить] -> и нажмите на кнопку "Установить таблицы". Если всё прошло как надо, появится соответствующее уведомление и после этого можно добавлять опции на странице Каталог -> Фильтр товаров. Внимание: проверено на последней версии Opencart v1.4.9.4 (March 19, 2011) с офф. сайта openstore_filter_2.0_clean_install.zip Added 18-07-2011 Установка вручную (thx afwollis) ---------------------------------------------------------------------------------------------------------------------------------------------- Вышла новая версия - 3.0. Возможности, цена вопроса и всё такое - ocfilter.com.
    3 points
  2. Делаем следующее: CSS: добавляем в конец /*=Category view*/ .view-buttons{float:left;margin-top: 7px;} .view-buttons a{display:inline-block;height:16px;width:16px;margin-left:7px;} .view-buttons a#grid{background:url('../image/view-table.png') no-repeat 0 0;} .view-buttons a#list{background:url('../image/view-list.png') no-repeat 0 0;} .view-buttons a.onpress{background-position:0 -16px!important;} .grid{list-style-type:none;margin:5px 0;padding:0;text-align: center;} .grid li{float: left;height: 215px;width: 25%;/*width: 32%;*/} .grid .right{min-height: 50px;} .grid .title{display:block; margin: 3px 0;} .list{list-style-type:none;margin:5px 0;padding:0;overflow:hidden;} .list li{clear:both;float:none;overflow:hidden;padding:20px;} .list li + li{border-top:1px dotted #999999;} .list .title{display:block;margin:0 0 10px;} .list .main{float:left;} .list .main .left{float:left;} .list .main .left a{display:block;text-decoration:none;} .list .main .right{float:right;margin: 0 20px;padding-top: 10px;} .list .main .right .model{display:block;} .list .other{float:right; padding-top: 10px;} .list .other img{display:block;margin: 3px 0;} /*=End category view */ HTML: в category.tpl заменяем <table class="list"> <?php for ($i = 0; $i < sizeof($products); $i = $i + 4) { ?> <tr> <?php for ($j = $i; $j < ($i + 4); $j++) { ?> <td width="25%"><?php if (isset($products[$j])) { ?> <a href="<?php echo $products[$j]['href']; ?>"><img src="<?php echo $products[$j]['thumb']; ?>" title="<?php echo $products[$j]['name']; ?>" alt="<?php echo $products[$j]['name']; ?>" /></a><br /> <a href="<?php echo $products[$j]['href']; ?>"><?php echo $products[$j]['name']; ?></a><br /> <span style="color: #999; font-size: 11px;"><?php echo $products[$j]['model']; ?></span><br /> <?php if ($display_price) { ?> <?php if (!$products[$j]['special']) { ?> <span style="color: #900; font-weight: bold;"><?php echo $products[$j]['price']; ?></span> <?php } else { ?> <span style="color: #900; font-weight: bold; text-decoration: line-through;"><?php echo $products[$j]['price']; ?></span> <span style="color: #F00;"><?php echo $products[$j]['special']; ?></span> <?php } ?> <a class="button_add_small" href="<?php echo $products[$j]['add']; ?>" title="<?php echo $button_add_to_cart; ?>" > </a> <?php } ?> <br /> <?php if ($products[$j]['rating']) { ?> <img src="catalog/view/theme/default/image/stars_<?php echo $products[$j]['rating'] . '.png'; ?>" alt="<?php echo $products[$j]['stars']; ?>" /> <?php } ?> <?php } ?></td> <?php } ?> </tr> <?php } ?> </table> на <ul class="<?php echo $view_mode; ?>" id="view"> <?php foreach ($products as $product) { ?> <li> <div class="main"> <div class="left"> <a href="<?php echo $product['href']; ?>" class="thumb" rel="<?php echo $product['compare_thumb']; ?>"> <img src="<?php echo $product['thumb']; ?>" title="<?php echo $product['name']; ?>" alt="<?php echo $product['name']; ?>" id="image-<?php echo $product['product_id']; ?>" /> </a> </div> <div class="right"> <a href="<?php echo $product['href']; ?>" class="title"><?php echo $product['name']; ?></a> <span class="model"><?php echo $product['model']; ?></span> </div> </div> <div class="other"> <?php if ($display_price) { ?> <?php if (!$product['special']) { ?> <span style="color: #900; font-weight: bold;"><?php echo $product['price']; ?></span> <?php } else { ?> <span style="color: #900; font-weight: bold; text-decoration: line-through;"><?php echo $product['price']; ?></span> <span style="color: #F00;"><?php echo $product['special']; ?></span> <?php } ?> <a class="button_add_small" href="<?php echo $product['add']; ?>" title="<?php echo $button_add_to_cart; ?>" > </a> <?php } ?> <br /> <?php if ($product['rating']) { ?> <img src="catalog/view/theme/default/image/stars_<?php echo $product['rating'] . '.png'; ?>" alt="<?php echo $product['stars']; ?>" /> <?php } ?> </div> </li> <?php } ?> </ul> заменяем <div class="sort"> <div class="div1"> <select name="sort" onchange="location = this.value"> <?php foreach ($sorts as $sorts) { ?> <?php if (($sort . '-' . $order) == $sorts['value']) { ?> <option value="<?php echo $sorts['href']; ?>" selected="selected"><?php echo $sorts['text']; ?></option> <?php } else { ?> <option value="<?php echo $sorts['href']; ?>"><?php echo $sorts['text']; ?></option> <?php } ?> <?php } ?> </select> </div> <div class="div2"><?php echo $text_sort; ?></div> </div> на <div class="sort"> <div class="view-buttons"> <a id="grid" class="change-view<?php echo ($view_mode == 'grid' ? ' onpress' : ''); ?>"></a> <a id="list" class="change-view<?php echo ($view_mode == 'list' ? ' onpress' : ''); ?>"></a> </div> <div class="div1"> <select name="sort" onchange="location = this.value"> <?php foreach ($sorts as $sorts) { ?> <?php if (($sort . '-' . $order) == $sorts['value']) { ?> <option value="<?php echo $sorts['href']; ?>" selected="selected"><?php echo $sorts['text']; ?></option> <?php } else { ?> <option value="<?php echo $sorts['href']; ?>"><?php echo $sorts['text']; ?></option> <?php } ?> <?php } ?> </select> </div> <div class="div2"><?php echo $text_sort; ?></div> </div> перед <?php echo $footer; ?> вставляем <script type="text/javascript"><!-- $('.change-view').click(function(){ $('#view').removeClass().addClass($(this).attr('id')); $('.change-view').removeClass('onpress'); $(this).addClass('onpress'); $.post('<?php echo $view_action; ?>', 'view=' + $(this).attr('id')); }); //--></script> PHP: в category.php, после $this->data['button_add_to_cart'] = $this->language->get('button_add_to_cart');добавляем $this->data['view_action'] = HTTP_SERVER . 'index.php?route=product/category/view'; $this->data['view_mode'] = (isset($this->session->data['view_mode']) ? $this->session->data['view_mode'] : 'grid'); В конец файла перед закрытием класса вставляем метод public function view() { if ($this->request->server['REQUEST_METHOD'] == 'POST' && isset($this->request->post['view'])) { $this->session->data['view_mode'] = $this->request->post['view']; } } Иконки видов: кидаем в папку с изображениями вашего шаблона view_icons.zip Собственно и всё. Временную демку можно глянуть тут
    2 points
  3. Привет всем. Решил поделиться с вами как заменить стандартный менеджер изображений на eilfinder. Сразу оговорюсь менеджер не встроен в редакторы контента CKEditor ( TyniMCE ) на офиц. сайте elfinder есть примеры как это сделать. Сам опенкарт мне пришлось достаточно много и упорно покромсать (это продолжается и по сей день) и слепить из него некий каталог, и меня очень напрягало добавление картинок к продукту, когда их число превышало 10, поэтому и появился этот пост ). И так. Сам elfinder вы можете посмотреть/слить на офц. сайте (см. выше), там же есть демо его работы. Я же приаттачил архивчег со своими настройками. Сам я не особо шарю в PHP, javascript, поэтому снимаю с себя ответственность за оптимальность решения и кода, все делалось методом научного тыка. !!! Все изменения мы будем производить для админ части, поэтому чтобы не писать длинные пути, все файло считать лежащим относительно этого www/admin/.... начнем. 1. Для начала копируем elfinder в каталог нашего шаблона view/javascript (я сделал так, не спрашивайте почему.) И производим настройку заходим в файл elfinder\connectors\php\connector.php и правим 'root' => '/home/root/www/image/data/', // path to root directory (полный путь) 'URL' => 'http://localhost/image/data/', // root directory URL (путь до каталога с картинками) Также там еще туева хуча настроек, можете о них почитать на оф. сайте. 2. в файле view/template/common/header.tpl прописываем juery (если ее еще не было) и библиотеки elfinder. <script src="view/javascript/elfinder/js/jquery-1.4.1.min.js" type="text/javascript" charset="utf-8"></script> <link rel="stylesheet" href="view/javascript/elfinder/js/ui-themes/base/ui.all.css" type="text/css" media="screen" title="no title" charset="utf-8"> <link rel="stylesheet" href="view/javascript/elfinder/css/elfinder.css" type="text/css" media="screen" title="no title" charset="utf-8"> <script src="view/javascript/elfinder/js/jquery-ui-1.7.2.custom.min.js" type="text/javascript" charset="utf-8"></script> <script src="view/javascript/elfinder/js/elfinder.min.js" type="text/javascript" charset="utf-8"></script> <script src="view/javascript/elfinder/js/i18n/elfinder.ru.js" type="text/javascript" charset="utf-8"></script> 3. Дальше идет некий изврат, но после 2х дней ковыряния в коде, и нескольких банок энергетика, мне в голову ничего не пришло (если у кого будут более здравые мысли, прошу делиться... ), так вот лезем в файл контролера controller/common/filemanager.php и вместо функции Image() делаем 2 функции ) public function image() { $this->load->model('tool/image'); if (isset($this->request->post['image'])) { $tmp = explode("data/",$this->request->post['image']); $this->response->setOutput($this->model_tool_image->resize("data/".$tmp[1], 100, 100)); } } public function short_path() { $tmp = explode("data/",$this->request->post['image']); $this->response->setOutput("data/" . $tmp[1]); } Дальше поясню зачем все это. 4. Последний шаг. Идем в шаблон нашей админке, там где мы правим товары view/template/catalog/product_form.tpl и гдето внизу ищем JS функцию function image_upload(field, preview) меняем ее на следующую. function image_upload(field, preview) { $('<div id="elfinder" />').elfinder({ url : 'view/javascript/elfinder/connectors/php/connector.php', lang : 'ru', rememberLastDir : true, contextmenu : { cwd : ['reload', 'delim', 'mkdir', 'mkfile', 'upload', 'delim', 'paste', 'delim', 'info'], file : ['select', 'open', 'delim', 'copy', 'cut', 'rm', 'delim', 'duplicate', 'rename'], group : ['copy', 'cut', 'rm', 'delim', 'archive', 'extract', 'delim', 'info'] }, dialog : { title : 'File manager', width : 500, modal : true }, editorCallback : function(url) { var tmp_img = ''; // получение короткого пути $.ajax({ url: 'index.php?route=common/filemanager/short_path', type: 'POST', data: 'image=' + url, dataType: 'text', async: false, success: function(data) { tmp_img = data; //alert('Short: ' + tmp_img); } }); // получаем путь до картинки $.ajax({ url: 'index.php?route=common/filemanager/image', type: 'POST', data: 'image=' + url, dataType: 'text', success: function(data) { $('#' + preview).replaceWith('<img src="' + data + '" alt="" id="' + preview + '" style="border: 1px solid #EEEEEE;" />'); // alert(tmp_img); $('#' + field).val(tmp_img); } }); }, closeOnEditorCallback : true }); }; Теперь немного поясню, про контролер из п.3 функция Short_path, рвет строку на части, когда находит data/ и возвращает мне короткий путь до файла картинки, другого способа мой мозг не выдал (((. т.к. elfinder выдает полный путь, вот и приходится его резать. Под какой же принцип переделана и функция Image. Теперь по JS в п.4 юзаю 2-е аякс функции, одна как раз находит Short_path, котороый потом пишется в value элемeнта <input>, ну а 2-ая функция генерит preview при помощи функции image. Вот вроде и все, кажется ничего не забыл, хотя могу, у нас уже за полночь ))). Надеюсь кому нибудь пригодится, сие творений )))) . Ну а кто может все это дело оптимизировать и упростить, прошу не молчать) elfinder.zip
    1 point
  4. countdown.js document.getElementById("remain").innerHTML = days+" days, "+hours+" hours, "+minutes+" minutes, "+seconds+" seconds"; setTimeout ("setCountDown()", 1000 ); } Языковый $_['text_special_price'] = 'Special Price Offer expires in:';
    1 point
  5. https://opencartforum.com/topic/2654-%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C-%D1%84%D0%B8%D0%BB%D1%8C%D1%82%D1%80-%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%BE%D0%B2-%D0%B2-%D0%BA%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D0%B8-20/
    1 point
  6. Вы хотите, чтобы в меню слева отображались картинки для подкатегорий? Хм.. месье знает толк в извращениях..
    1 point
  7. Смарти это откровенная попа! ВебАсист тоже на смарти это ужас пока разберешься что к чему
    1 point
  8. Похоже такое не возможно :unsure: Я вручную вбивал.. --------------------------------------------------------------------------------------------- Ура, только что нашел выход: каталог/товары (ставим галочку на подобном) - копировать (правый верхний угол), в каталоге появляется копия с звездочкой, там просто меняем названия и фото!!!
    1 point
×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.