MrNix21
@MrNix21

Как вывести ссылки на категории OCFilter в карточке товара OpenCart 2.3?

Здравствуйте. На сайте установлен всем известный модуль фильтрации OCFilter. С помощью него созданы посадочные страницы. Вопрос: как вывести на странице карточки товара ссылки на посадочные страницы к которым принадлежит этот товар?
Есть такой код для вывода этих ссылок в категориях:
catalog/controller/product/category.php
$data['ocfilter_pages'] = array();

      $this->load->model('catalog/ocfilter');

      $ocfilter_pages = $this->model_catalog_ocfilter->getPages();

      foreach ($ocfilter_pages as $ocfilter_page) {
        if ($ocfilter_page['category_id'] != $category_id) {
          continue;
        }

        if (isset($this->request->get['path'])) {
          $link = rtrim($this->url->link('product/category', 'path=' . $this->request->get['path']), '/');
        } else {
          $link = rtrim($this->url->link('product/category', 'path=' . $ocfilter_page['category_id']), '/');
        }

        if ($ocfilter_page['keyword']) {
          $link .= '/' . $ocfilter_page['keyword'];
        } else {
          $link .= '/' . $ocfilter_page['params'];
        }

        if ($this->config->get('config_seo_url_type') == 'seo_pro') {
          $link .= '/';
        }

        $data['ocfilter_pages'][] = array(
          'text' => $ocfilter_page['title'],
          'selected' => (!empty($ocfilter_page_info) && $ocfilter_page_info['ocfilter_page_id'] == $ocfilter_page['ocfilter_page_id']),
          'href' => $link
        );
      }

Вывод в шаблоне catalog/view/theme/*/template/product/category.tpl
<?php if (!empty($ocfilter_pages)) { ?>
    <hr />
    <ul class="list-inline">
      <?php foreach ($ocfilter_pages as $ocfilter_page) { ?>
      <li>
        <?php if ($ocfilter_page['selected']) { ?>
        <strong><?php echo $ocfilter_page['text']; ?></strong>
        <?php } else { ?>
        <a href="<?php echo $ocfilter_page['href']; ?>"><?php echo $ocfilter_page['text']; ?></a>
        <?php } ?>
      </li>
      <?php } ?>
    </ul>
    <?php } ?>

Как нужно модифицировать код контроллера category.php для product.php? Сам разработчик такими доработками не занимается.
Как я понимаю, надо модифицировать эту часть кода, который будет пропускать все ссылки, к которым не принадлежит этот товар:
if ($ocfilter_page['category_id'] != $category_id) {
          continue;
        }

Или не только это? Пожалуйста, помогите в решении.
  • Вопрос задан
  • 842 просмотра
Пригласить эксперта
Ответы на вопрос 1
zoozag
@zoozag
Opencart
В $ocfilter_page храните массив товаров, которые на ней есть.
И вместо
if ($ocfilter_page['category_id'] != $category_id) {
          continue;
        }

Проверяйте наличие товара на странице:
if (!in_array($product_id, $ocfilter_page['products'])) {
          continue;
        }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы