-
Posts
26 -
Joined
-
Last visited
Content Type
Profiles
Forums
Marketplace
Articles
FAQ
Our New
Store
Blogs
module__dplus_manager
Everything posted by free
-
О, это я себе както давно нарисовал функцию чтобы выводился ЧПУ в ссылка, в последних камментах (потом нашел более элегантное решение, но как говорится все временное становится постоянным :)) Короче делаем так, строчки $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']; Должно помочь
-
По пунктам 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
-
Сделал тут небольшой обзор как вывести последние отзывы в колонку на главную страницу, может кому будет интересно. - Один явный недостаток, по моему мнению нет стрелок для прокрутке, у кого будет время может доработать и оформить модулем ;) Да у меня версия опен карта 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. надеюсь ничего не забыл
-
как токены для 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
-
может я не совсем понял проблему, но у меня как на товар не переходи, везде отображает кому он понравился одинаково. код для вконтаке: 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>
-
За превьюшку отвечает этот код $('#' + 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
-
все разобрался, в этой версии используются 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; ?>' после этого все должно работать.
-
я ставил на Opencart 1.4.7. Сейчас посмотрю что там в ocStore 0.1.7
-
Нашел интересную доработку для 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). У кого получится, делитесь плиз.
-
как вынести (писать) статьи (новости в моём случае) на главной?
free replied to DonDr's topic in Загальні питання
пользуемся поиском 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/ Этот модуль может выводить новости на главной странице -
Можно поправить запрос в модели 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; }
-
Привет всем. Решил поделиться с вами как заменить стандартный менеджер изображений на 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
-
Мне в редакторе добавление изображений, было не нужно , поэтому особо этой темой не занимался, знаю есть plugin TinyMCE, позволяющий это делать.
-
Простой код на 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 } ?> --> Наверное сделал с переменной, потомучто было лень, искать блок цен и его коментировать ))
-
Согласен с 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 } ?>
-
Привет. Была у меня такая проблема кажется это помогает <param name="wmode" value="opaque"/> У меня сделано таким образом. <div id="banner1"> <a href=" http://nek27.com" target="_blank"> <object> <param name="movie" value="NEK.swf"/> <param name="wmode" value="opaque"/> <embed src="NEK1000.swf" width="1000" height="130" wmode="opaque" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"> </embed> </object> </a> </div>
-
смотри поисковики забанят ))
-
Проверь html код страницы выдаваемой в браузер. Какого типа столбец добавил в таблицу? У меня была проблемы когда не влезали данные, и при записи в базу, они обрезались и вывод на страницу был кривой. Пришлось сменить типа с TEXT на medium text
-
закрыл? закрывающим тегом ? Проверь синтаксис
-
Вывод данных на frontside Находим в файле cart/catalog/controller/product/product.php строчку $this->data['description'] = html_entity_decode($product_info['description'], ENT_QUOTES, 'UTF-8'); и добавь свою подобную $this->data['price_list'] = html_entity_decode($product_info['price_list'], ENT_QUOTES, 'UTF-8'); В шаблоне catalog/view/theme/default/template/product/product.tpl делаем вывод данных в нашу вкладку, в блок с id="tab_price" <div id="tab_prices" class="tab_page"><?php echo $price_list; ?></div>
-
Вот все же забыл, кое что ) Чтобы даннне забитые в админке сохранялись, необходимо поправить таблицу. я правил product_description. 1. Добавить новый столбец (PRICE) тип TEXT 2. Поправить модель, файл admin/model/catalog/product.php - в нем есть функция public function addProduct($data) - отвечает за добавление нового товара - и public function editProduct - редактирование товара там есть запрос (INSERT)вставляющий данные в таблицу product_description У меня он выглядит так foreach ($data['product_description'] as $language_id => $value) {$this->db->query("INSERT INTO " . DB_PREFIX . "product_description SET product_id = '" . (int)$product_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "', short_description = '" . $this->db->escape($value['short_description']). "', price_list = '" . $this->db->escape($data['price_list']) . "', way = '" . $this->db->escape($data['way']) . "'");} т.е. надо просто добавить туда свои поля, которые необходимы для заполнения вроде все. запрос одинаковы в обеих фукциях
-
Я делал у себя чтото подобное. http://www.moiotdyh.ru. Показываю на своем примере. 1. Берем файлег языка catalog/language/russian/product/product.tplнаходим камент //tabs, и добавляем свою переменную $_['tab_prices'] = 'Цены'; 2. Идем в контролер catalog/controller/product/product.phpдобавляем считывание языковой переменной $this->data['tab_prices'] = $this->language->get('tab_prices');находишь подобные, и вставляешь м/д ними. 3. Далее берем: сatalog/view/theme/default/template/product/product.tplнаходим <a tab="#tab_description"><?php echo $tab_description; ?></a>добавляем наш таб <a tab="#tab_prices"><?php echo $tab_prices; ?></a>Вкладка готова. Теперь надо ее наполнить, и еще гдето хранить данные идем в phpadmin, выбираем нашу базейку, находим таблицу (я заюзал product_description), добавляем столбец, нужного нам типа, (я добавил TEXT, потом правда пришлось конвертнуть в Middle Text, не влазили меню) в версии 1.4.7 в модели, читаются все столбцы из product_description, поэто ничего править ненадо. Теперь админка или как ее зовут в узких кругах девелоперов backside ))) файлег веб морды продукта admin/view/template/catalog/product_form.tplдобавляем нужную нам строку в таблицу (изучаем html :)) <tr> <td><?php echo $price_list; ?></td> <td> <textarea name="price_list" id="price_list" rows="20"> <?php echo isset($product_description[$language['language_id']]) ? $product_description[$language['language_id']]['price_list'] : ''; ?> </textarea> </td></tr>чтото типа этого. да, прописываем едитору, нашу тестовую зону. В этом же файле находим: CKEDITOR.replace('description<?php echo $language['language_id']; ?>');и добавляем CKEDITOR.replace('price_list'); ну и правим модель админки, надо же нам данные в таблицу писать файл admin/model/catalog/product.phpнаходим след. функци. public function getProductDescriptions($product_id) { $product_description_data = array(); $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_description WHERE product_id = '" . (int)$product_id . "'"); foreach ($query->rows as $result) { $product_description_data[$result['language_id']] = array( 'name' => $result['name'], 'meta_description' => $result['meta_description'], 'description' => $result['description'], 'contacts' => $result['contacts'], 'price_list' => $result['price_list'], 'way' => $result['way'], 'short_description'=> $result['short_description'] ); } 'price_list' => $result['price_list']это то что я добавил Ну вроде ничего не забыл. Удачи
-
Может кому пригодится ил когото не устраивает стандартный редактор в OpenCart для редактирования информации о товарах. Качаем редактор TinyMCE(можете с оф. ресурса) ложим файлы java сюда adminviewjavascripttiny_mce Правим файл adminviewtemplatecatalogproduct_form.tpl находим след. код: <script type="text/javascript" src="view/javascript/ckeditor/ckeditor.js"></script> <script type="text/javascript"> <?php foreach ($languages as $language) { ?> <?php if ($language['status']) { ?> CKEDITOR.replace('description<?php echo $language['language_id']; ?>'); <?php } ?> <?php } ?> </script> Я его закоменти у себя. Добавляем сл. код: <script type="text/javascript" src="view/javascript/tiny_mce/tiny_mce.js"></script> <script type="text/javascript"> tinyMCE.init({ mode : "exact", theme : "advanced", width: "800px", elements: "description1,way,price_list", plugins : "safari,spellchecker,pagebreak,style,layer,table,advhr,advimage,advlink,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras", theme_advanced_buttons1 : "|,undo,redo,|,cut,copy,|,paste,pastetext,pasteword,|,styleselect,formatselect,fontselect,fontsizeselect,|", theme_advanced_buttons2 : "|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,bullist,numlist,|,outdent,indent,blockquote,|,search,replace,|,link,unlink,anchor,image,|,insertdate,inserttime,|,forecolor,backcolor,|", theme_advanced_buttons3 : "tablecontrols,,visualaid,|,sub,sup,|,charmap,iespell,media,advhr,|,ltr,rtl,|,preview,,fullscreen,code,|", theme_advanced_toolbar_location : "top", theme_advanced_toolbar_align : "left", theme_advanced_statusbar_location : "bottom", theme_advanced_resizing : true, force_br_newlines : true }); </script> Где: elements: "description1,way,price_list" это веб элементы с id, для которых будет использваться данный редактор. Можно сделать например mode : "textareas" тогда редактор будет навес элементах textarea width: "800px": ширина редактора theme_advanced_buttons1 : это кнопки котроые используются на панели инструментов Более подробную инфу по настройкам и дополнениям, можно нарыть в инете
-
Изменение порядка уже загруженных изображений
free replied to priskorbno's topic in Загальні питання
у меня было без сортировки, просто как хотело так и выводилось, пришлось поправить выборку -
Изменение порядка уже загруженных изображений
free replied to priskorbno's topic in Загальні питання
Я у себя сделал вывод по image_id. Поправил селект в файле catalogmodelcatalogproduct.phppublic 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; }т.е. получается что вывод картинок идет, по тому порядку по которому ты их добавил в админке.