Создал на основании OpenCart сайтик Но появилась проблемка. Когда создаю категорию, вписываю текст. Описание категории. Так вот если товаров много, этот текст повторяется на второй, третьей и последующих страницах с товарами. Как сделать так, чтобы текст был только на одной, первой странице с категориями. Как вывести длинное описание только на первой странице категории? Тоесть нужно чтоб текст под товаром выводился только на первой странице. А при переходе на вторую и последующие текста под товарами не было. Тем самым текст индексируется только на одной странице и в поиске ей будет основной вес. И в индексе будет только эта категория по выбранным запросам а не будт проскакивать страницы с окончанием ?page=8 Моя версия 1.5.4.1 Сделал вывод текста только на первой странице. В файле catalog\view\theme\Ваша Тема\template\product\category.tpl Код: <?php } ?> <?php if ($description1) { ?> <div style="margin-bottom: 15px; margin-top: 35px;"><?php if (!isset($_GET['page'])) {echo $description1; }?></div> <?php } ?> Но он убирает только нижний текст в категории и оставляет верхний, и если после гуляния по страницам, опять нажать на первую страницу, то текста там уже нету. Т.е. проблема паджинации осталась. Попробовал как указано здесь: ссылка - не помогло, как было так и осталось. Очень нужна помощь, пожалуйста.
1) Открываете файл catalog/controller/product/category.php 2) Ищите эту строку: Код: $this->data['description'] = html_entity_decode($category_info['description'], ENT_QUOTES, 'UTF-8'); 3) Вместо нее вставляете: Код: if ($page == 1) { $this->data['description'] = html_entity_decode($category_info['description'], ENT_QUOTES, 'UTF-8'); } else { $this->data['description'] = ''; } 4) Когда сделаете, напишите в теме, я Вам еще один совет попробую дать
Верхний текст ушел, нижний остался. В верхнем тексте еще логотип категории остался - неплохо чтобы он тоже уходил, при переключении на страницу (т.е. както вот это убиралось: <div class="category-info"> <div class="image"><img src="http://unit.od.ua/image/cache/data/category/monik-100x100.jpg" alt="Мониторы"></div> </div>
<?php if (!isset($_GET['page']) || $_GET['page']==1) { ?> <div class="category-info"> и всё, что нужно показывать только на первой странице </div> <?php }?> PS не проверял, но как-то так
Все так, работает. а вот у меня такая проблема фильтрпро передает в урл параметры портировки, я понимаю что это сделано чтобы сортировка не сбивалась при пажинации, но если даже не применять ни какой сортировке в урле присутствует что-то типа Код: #category_id=70&page=2&path=70&sort=p.sort_order&order=ASC&limit=27&min_price=19900&max_price=149234 мне кажется это не есть гуд, ни кто не боролся с этим?
Картинки, повторы могу убрать так? Вместо: Код: if ($category_info['image']) { $this->data['thumb'] = $this->model_tool_image->resize($category_info['image'], $this->config->get('config_image_category_width'), $this->config->get('config_image_category_height')); } else { $this->data['thumb'] = ''; } Написать: Код: if ($page == 1) { $this->data['thumb'] = $this->model_tool_image->resize($category_info['image'], $this->config->get('config_image_category_width'), $this->config->get('config_image_category_height')); } else { $this->data['thumb'] = ''; }
Можно, только не так, так Вы убираете проверку на присутствие активной картинки, да и вообще это код контроллера, а картинку отсекать надо в темплейте собственно с учетом того что картинка выводится при помощи Код: <div class="image"><img src="<?php echo $thumb; ?>" alt="<?php echo $heading_title; ?>" /></div> внутри <div class="category-info"> то решение которое подсказал Vlad-i-Slav, и так убирать картинку должно.
в темплейте у меня не получилось, так как я не сильно знаком как это правильно делать. в темплейте самого шаблона, вставил, а оно никак не изменилось. или это надо в другом файле делать не в шаблоне.
попробовать заменить Код: <?php if ($thumb || $description) { ?> <div class="category-info"> <?php if ($thumb) { ?> <div class="image"><img src="<?php echo $thumb; ?>" alt="<?php echo $heading_title; ?>" /></div> <?php } ?> <?php if ($description) { ?> <?php echo $description; ?> <?php } ?> </div> <?php } ?> на Код: <?php if (!isset($_GET['page']) || $_GET['page']==1) { ?> <?php if ($thumb || $description) { ?> <div class="category-info"> <?php if ($thumb) { ?> <div class="image"><img src="<?php echo $thumb; ?>" alt="<?php echo $heading_title; ?>" /></div> <?php } ?> <?php if ($description) { ?> <?php echo $description; ?> <?php } ?> </div> <?php } ?> <?php } ?>
т.е. этим я уберу только повтор картинки в категориях при переключении на следующие страницы page-2,page3 и т.д., так? или и повтор дескрипшен и дискрипшен1 я тоже так убираю? почему же неправилен тот способ что я написал выше. Я не понимаю, если Вам не сложно объяснить, буду Вам премного благодарен.
Это должно убирать и описание и изображение. Почему не правильно? Код: if ($category_info['image']) { этот кусок кода осуществляет в контроллере проверку на активную картинку и тот код что следует за ним (тот который делает ресайз изображения) - выполняется только при наличии картинки. заменяя Код: if ($category_info['image']) { на Код: if ($page == 1) { 1) вы убираете проверку на присутствие картинки, т.е. ресайз выходит должен выполняться даже при отсутствии картинки. 2) делаете вместо проверки на активную картинку,проверку на страницу, таким образом выходит что ресайз должен быть только для страницы с номером 1. Получается какая-то ерунда.
Код: <?php if ($description1) { ?> <div style="margin-bottom: 15px;"><?php echo $description1; ?></div> <?php } ?> заменил, на: Код: <?php if (!isset($_GET['page']) || $_GET['page']==1) { ?> <?php if ($thumb || $description1) { ?> <div class="category-info"> <?php if ($thumb) { ?> <?php } ?> <?php if ($description1) { ?> <?php echo $description1; ?> <?php } ?> <?php } ?> <?php } ?> Правильно? Вроде работает... У меня просто еще есть описания1 (поле под товарами)
все так же Код: <?php if (!isset($_GET['page']) || $_GET['page']==1) { ?> <?php if ($description1) { ?> <div style="margin-bottom: 15px;"><?php echo $description1; ?></div> <?php } ?> <?php } ?>