[Помогите] Убрать повторы описаний со страниц.

Тема в разделе "OpenCart", создана пользователем wwizard, 2 дек 2013.

  1. wwizard

    wwizard

    Регистрация:
    20 мар 2013
    Сообщения:
    50
    Симпатии:
    1
    Создал на основании 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 } ?>
    Но он убирает только нижний текст в категории и оставляет верхний, и если после гуляния по страницам, опять нажать на первую страницу, то текста там уже нету.
    Т.е. проблема паджинации осталась.

    Попробовал как указано здесь: ссылка - не помогло, как было так и осталось. Очень нужна помощь, пожалуйста.
     
  2. Reqman

    Reqman

    Регистрация:
    25 фев 2013
    Сообщения:
    213
    Симпатии:
    62
    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) Когда сделаете, напишите в теме, я Вам еще один совет попробую дать
     
    wwizard нравится это.
  3. wwizard

    wwizard

    Регистрация:
    20 мар 2013
    Сообщения:
    50
    Симпатии:
    1
    Верхний текст ушел, нижний остался.
    В верхнем тексте еще логотип категории остался - неплохо чтобы он тоже уходил, при переключении на страницу (т.е. както вот это убиралось:
    <div class="category-info">
    <div class="image"><img src="http://unit.od.ua/image/cache/data/category/monik-100x100.jpg" alt="Мониторы"></div>
    </div>
     
  4. Vlad-i-Slav

    Vlad-i-Slav

    Регистрация:
    20 мар 2013
    Сообщения:
    251
    Симпатии:
    159
    В category.tpl сделать такую же проверку для вывода нужных блоков хоть через $page, хоть через $_GET
     
  5. wwizard

    wwizard

    Регистрация:
    20 мар 2013
    Сообщения:
    50
    Симпатии:
    1
    если не сложно, подскажите как, пожалуйста.
     
  6. Vlad-i-Slav

    Vlad-i-Slav

    Регистрация:
    20 мар 2013
    Сообщения:
    251
    Симпатии:
    159
    <?php if (!isset($_GET['page']) || $_GET['page']==1) { ?>
    <div class="category-info">
    и всё, что нужно показывать только на первой странице
    </div>
    <?php }?>

    PS не проверял, но как-то так
     
    cereberlum нравится это.
  7. cereberlum

    cereberlum

    Регистрация:
    26 май 2013
    Сообщения:
    740
    Симпатии:
    267
    Все так, работает. а вот у меня такая проблема фильтрпро передает в урл параметры портировки, я понимаю что это сделано чтобы сортировка не сбивалась при пажинации, но если даже не применять ни какой сортировке в урле присутствует что-то типа
    Код:
    #category_id=70&page=2&path=70&sort=p.sort_order&order=ASC&limit=27&min_price=19900&max_price=149234
    мне кажется это не есть гуд, ни кто не боролся с этим?
     
  8. wwizard

    wwizard

    Регистрация:
    20 мар 2013
    Сообщения:
    50
    Симпатии:
    1
    Картинки, повторы могу убрать так?
    Вместо:
    Код:
      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'] = '';
          }
     
  9. cereberlum

    cereberlum

    Регистрация:
    26 май 2013
    Сообщения:
    740
    Симпатии:
    267
    Можно, только не так, так Вы убираете проверку на присутствие активной картинки, да и вообще это код контроллера, а картинку отсекать надо в темплейте собственно с учетом того что картинка выводится при помощи
    Код:
    <div class="image"><img src="<?php echo $thumb; ?>" alt="<?php echo $heading_title; ?>" /></div>
    внутри <div class="category-info"> то решение которое подсказал Vlad-i-Slav, и так убирать картинку должно.
     
  10. wwizard

    wwizard

    Регистрация:
    20 мар 2013
    Сообщения:
    50
    Симпатии:
    1
    в темплейте у меня не получилось, так как я не сильно знаком как это правильно делать. в темплейте самого шаблона, вставил, а оно никак не изменилось. или это надо в другом файле делать не в шаблоне.
     
  11. cereberlum

    cereberlum

    Регистрация:
    26 май 2013
    Сообщения:
    740
    Симпатии:
    267
    каталог/вайв/тем/ваша тема/продукт/категори.тпл покажите
     
  12. wwizard

    wwizard

    Регистрация:
    20 мар 2013
    Сообщения:
    50
    Симпатии:
    1
    http://www.unit.od.ua/category.rar
    Вот
     
  13. cereberlum

    cereberlum

    Регистрация:
    26 май 2013
    Сообщения:
    740
    Симпатии:
    267
    попробовать заменить
    Код:
    <?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 } ?>
     
  14. wwizard

    wwizard

    Регистрация:
    20 мар 2013
    Сообщения:
    50
    Симпатии:
    1
    т.е. этим я уберу только повтор картинки в категориях при переключении на следующие страницы page-2,page3 и т.д., так? или и повтор дескрипшен и дискрипшен1 я тоже так убираю?
    почему же неправилен тот способ что я написал выше. Я не понимаю, если Вам не сложно объяснить, буду Вам премного благодарен.
     
  15. cereberlum

    cereberlum

    Регистрация:
    26 май 2013
    Сообщения:
    740
    Симпатии:
    267
    Это должно убирать и описание и изображение. Почему не правильно?
    Код:
    if ($category_info['image']) {
    этот кусок кода осуществляет в контроллере проверку на активную картинку и тот код что следует за ним (тот который делает ресайз изображения) - выполняется только при наличии картинки. заменяя
    Код:
    if ($category_info['image']) {
    на
    Код:
    if ($page == 1) {
    1) вы убираете проверку на присутствие картинки, т.е. ресайз выходит должен выполняться даже при отсутствии картинки. 2) делаете вместо проверки на активную картинку,проверку на страницу, таким образом выходит что ресайз должен быть только для страницы с номером 1. Получается какая-то ерунда.
     
  16. wwizard

    wwizard

    Регистрация:
    20 мар 2013
    Сообщения:
    50
    Симпатии:
    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 (поле под товарами)
     
    Последнее редактирование: 5 дек 2013
  17. cereberlum

    cereberlum

    Регистрация:
    26 май 2013
    Сообщения:
    740
    Симпатии:
    267
    все так же
    Код:
    <?php if (!isset($_GET['page']) || $_GET['page']==1) { ?>
    <?php if ($description1) { ?>
    <div style="margin-bottom: 15px;"><?php echo $description1; ?></div>
    <?php } ?>
    <?php } ?>
     
    winner7 и wwizard нравится это.