Перейти к содержанию

free

Новичок
  • Публикаций

    26
  • Зарегистрирован

  • Посещение

Репутация

1 Обычный

Информация о free

  • Звание
    Пользователь
  • День рождения 01.01.1970

Контакты

  • Сайт
    http://www.moiotdyh.ru

Посетители профиля

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

  1. О, это я себе както давно нарисовал функцию чтобы выводился ЧПУ в ссылка, в последних камментах (потом нашел более элегантное решение, но как говорится все временное становится постоянным :)) Короче делаем так, строчки $tmp = $this->model_catalog_product->getProductAlias($result['product_id']); if ($tmp == '0') { $url = HTTP_SERVER . 'index.php?route=product/product&product_id=' . $result['product_id']; } else { $url = $this->model_catalog_product->getProductAlias($result['product_id']); } заменяешь просто на: $url = HTTP_SERVER . 'index.php?route=product/product&product_id=' . $result['product_id']; Должно помочь
  2. По пунктам 1. /www/catalog/model/catalog/review.php 2. /www/catalog/view/theme/default/template/common/column_right.tpl 3. /www/catalog/controller/common/column_right.php 4. Прописываем javascript в /www/catalog/view/theme/default/template/common/header.tpl 5. стили в вашем css шаблона, стандартный тут /www/catalog/view/theme/default/stylesheet/stylesheet.css
  3. Сделал тут небольшой обзор как вывести последние отзывы в колонку на главную страницу, может кому будет интересно. - Один явный недостаток, по моему мнению нет стрелок для прокрутке, у кого будет время может доработать и оформить модулем ;) Да у меня версия опен карта 1.4.7, на других не тестил, но тут все прозрачно, если хотять по минимуму знать MVC структуру, PHP, SQL :) 1. в модель добавляем выборку последних отзывов, у меня последние 10 // ---------------------------last review---------------------- public function getLastReview() { $query = $this->db->query("SELECT d.name, r.* FROM " . DB_PREFIX . "review r, oc_product_description d where r.product_id=d.product_id and r.status = 1 order by date_added desc LIMIT 0 , 10"); return $query->rows; } // ---------------------------------------------------------- 2.в шаблоне для правой колонки colum_right.tpl добавляем <!-- last review --> <?php if ($reviews) { ?> <div class="box lastreview"> <div class="top"><img src="catalog/view/theme/default/image/bestsellers.png" alt="" /><?php echo "Отзывы" ?></div> <div class="middle"> <div id="jqnewsVert"> <?php if ($reviews) { ?> <?php foreach ($reviews as $review) { ?> <div class="content"><b> <strong><a href="<?php echo $review['url']; ?>"><?php echo $review['name']; ?></a></strong> <br/> <?php echo $review['author']; ?></b> | <img src="catalog/view/theme/default/image/stars_<?php echo $review['rating'] . '.png'; ?>" alt="<?php echo $review['stars']; ?>" /><br /> <?php echo $review['date_added']; ?><br /> <br /> <?php echo $review['text']; ?></div> <?php } ?> <?php } else { ?> <div class="content"><?php echo $text_no_reviews; ?></div> <?php } ?> </div> </div> <div class="bottom"> </div> </div> <?php } ?> <!-- end last review --> 3. В контроллере colum_right.php добавляем: //---------------------- last review ----------------------------- $this->load->model('catalog/review'); $this->data['reviews'] = array(); $results = $this->model_catalog_review->getLastReview(); foreach ($results as $result) { $text=""; $words = explode(" ", nl2br(strip_tags($result['text']))); if ( count($words) > 10 ) { $text = join(" ", array_slice($words, 0, 10)); $text = $text . " ..."; } else { $text = nl2br(strip_tags($result['text'])); } $tmp = $this->model_catalog_product->getProductAlias($result['product_id']); if ($tmp == '0') { $url = HTTP_SERVER . 'index.php?route=product/product&product_id=' . $result['product_id']; } else { $url = $this->model_catalog_product->getProductAlias($result['product_id']); } $this->data['reviews'][] = array( 'name' => $result['name'], 'author' => $result['author'], 'rating' => $result['rating'], 'url' => $url, //'text' => nl2br(strip_tags($result['text'])), 'text' => $text, 'stars' => sprintf($this->language->get('text_stars'), $result['rating']), 'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added'])) ); } //---------------------End last review------------------------------------------------ 4. Слайд блоков на странице делаю при помощи скрипта jqNewsV2.0.js (б.., так и не смог его прикрепить, сливайте если что тут http://moiotdyh.ru/c...y/jqNewsV2.0.js или в инете) не забываем его подключить <script src="catalog/view/javascript/jquery/jqNewsV2.0.js" type="text/javascript"></script> 5. Стили юзаю следующие .lastreview h4 {margin: 0px;margin-bottom: 5px;color: orange;} #jqnewsVert {overflow: hidden; height: 370px;} #jqnewsVert div {display: block; overflow: hidden;} #jqnewsOriz{height: 220px; width: 250%;overflow: hidden; margin:auto;} #jqnewsOriz div{float:left;height: 220px; width: 150px;margin: 5px; display:block;overflow: hidden;text-align: center;} тут еще и для горизонтального расположения 6. надеюсь ничего не забыл
  4. как токены для ostore 0.1.7 прикрутить я писал выше. судя по скрину у tuzhilkin у него пустой src в <img> у меня на выходе получается след. код для preview: <td> <input type="hidden" name="image" value="data/apple_cinema_30.jpg" id="image"> <img src="http://localhost/ostore/image/cache/data/apple_cinema_30-100x100.jpg" alt="" id="preview" style="border: 1px solid #EEEEEE;"> </td> input заполняется для передачи значения value через $_POST, для этого использется код $('#' + field).val(tmp_img); а <img src= заполняется тем что писал выше ('#' + preview).replaceWith 1. покажите ваш код admin/controller/common/filemanager.php функцию image 2. что показывает firebug console при отработке .ajax
  5. может я не совсем понял проблему, но у меня как на товар не переходи, везде отображает кому он понравился одинаково. код для вконтаке: VK.Widgets.Like('vk_like', {width: 240, pageTitle: document.title, pageDescription: '<?php echo $short_description; ?>'}, <?php echo $product_id; ?>); код для facebook <iframe src="http://www.facebook.com/plugins/like.php?href=<?php echo $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"] ?>" "&layout=standard&show_faces=false&width=400&action=like&font=arial&colorscheme=light&height=35" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:230px; height:120px;" allowTransparency="true"></iframe>
  6. За превьюшку отвечает этот код $('#' + preview).replaceWith('<img src="' + data + '" alt="" id="' + preview + '" style="border: 1px solid #EEEEEE;" />');возможно ajax запрос возвращает неверные данные.Проверить можно открыв консоль firebug в firefox или вывести путь alert - ом для проверки // получаем путь до картинки $.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(data); $('#' + field).val(tmp_img); } }); Если data возвращается не верно, значит проблема в контроле /admin/controller/common/filemanager.php . в функции image
  7. все разобрался, в этой версии используются token-ы для безопасности. если короче то в файле view/template/catalog/product_form.tpl, для функции function image_upload(field, preview) меняем 2 строчки 1. url: 'index.php?route=common/filemanager/short_path'на url: 'index.php?route=common/filemanager/short_path&token=<?php echo $token; ?>' 2. url: 'index.php?route=common/filemanager/image',на url: 'index.php?route=common/filemanager/image&token=<?php echo $token; ?>' после этого все должно работать.
  8. я ставил на Opencart 1.4.7. Сейчас посмотрю что там в ocStore 0.1.7
  9. Нашел интересную доработку для elfinder, дял мультизагрузки файлов http://dapmoed.ru/2011/01/17/html5-multiupload-files-elfinder/ 1. Копируем архив, из стать (см. выше) 2. в файле view/template/common/header.tpl добавляем к тому что описано выше еще пару строк. <link rel="stylesheet" href="view/javascript/elfinder/css/fileuploader.css" type="text/css" media="screen" title="no title" charset="utf-8"> <script src="view/javascript/elfinder/js/fileuploader.js" type="text/javascript" charset="utf-8"></script>3. Меняем в этом же файле строчку <script src="view/javascript/elfinder/js/elfinder.min.js" type="text/javascript" charset="utf-8"></script>на <script src="view/javascript/elfinder/js/elfinder.full.js" type="text/javascript" charset="utf-8"></script> На сайте у меня работает http://moiotdyh.ru/dev/elfinder-demo/, на локальной машине не получилось привести в работоспособность (использую denwer). У кого получится, делитесь плиз.
  10. пользуемся поиском https://opencartforum.com/topic/162-%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C-%D0%BD%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D0%B5%D0%B9%D0%B1%D0%BB%D0%BE%D0%B3%D0%B0-fix/ Этот модуль может выводить новости на главной странице
  11. Можно поправить запрос в модели catalog\model\catalog\product.php , где выставить сортировку по product_image_id. Получается, что добавил в админке, по порядку, то и на странице товара будет выводиться по порядку. public function getProductImages($product_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_image WHERE product_id = '" . (int)$product_id . "' order by product_image_id "); return $query->rows; } Также можно поправить запрос и для админ части admin\model\catalog\product.php, чтобы небыло отличий. public function getProductImages($product_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_image WHERE product_id = '" . (int)$product_id . "' order by product_image_id "); return $query->rows; }
  12. Привет всем. Решил поделиться с вами как заменить стандартный менеджер изображений на 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
  13. Мне в редакторе добавление изображений, было не нужно , поэтому особо этой темой не занимался, знаю есть plugin TinyMCE, позволяющий это делать.
  14. Простой код на PHP, присваиваю пустое значение переменной. <?php // временно убрал цену $display_price = ''; ?> а далее просто проверяю, если переменная не пустая, то вывожу блок с ценами <?php if ($display_price) { ?> (Кстати может проверка была изначально, уже не помню :) )Можно и просто в HTML блок закоментить <!-- <?php if ($display_price) { ?> <?php if (!$products[$j]['special']) { ?> <span style="color: #333; font-weight: bold;"><?php echo $products[$j]['price']; ?></span><br /> <?php } else { ?> <span style="color: #333; font-weight: bold; text-decoration: line-through;"><?php echo $products[$j]['price']; ?></span> <span style="color: #F00;"><?php echo $products[$j]['special']; ?></span> <?php } ?> <?php } ?> --> Наверное сделал с переменной, потомучто было лень, искать блок цен и его коментировать ))
  15. Согласен с afwollis, что выкусывать придется много, до сих пор этим занимаюсь ). Что бы убрать цену,я делал след. способом, во всех элементах шаблона, где есть цена, например: \catalog\view\theme\default\template\common\home.tpl добавил след код после: <?php echo $header; ?><?php echo $column_left; ?><?php echo $column_right; ?> <?php // временно убрал цену $display_price = ''; ?> Ну и там где есть вывод цен ставил проверку <?php if ($display_price) { ?> <?php if (!$products[$j]['special']) { ?> <span style="color: #333; font-weight: bold;"><?php echo $products[$j]['price']; ?></span><br /> <?php } else { ?> <span style="color: #333; font-weight: bold; text-decoration: line-through;"><?php echo $products[$j]['price']; ?></span> <span style="color: #F00;"><?php echo $products[$j]['special']; ?></span> <?php } ?> <?php } ?>
×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.