farshmac Опубліковано: 27 квітня 2021 Share Опубліковано: 27 квітня 2021 (змінено) Подскажите пожалуйста, как правильно реализовать. Сам в программировании не силен, по этому прошу не смеяться и отвечать по проще) Вот это ванильный код из контролера категории. Спойлер foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height')); } if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); } else { $special = false; } if ($this->config->get('config_tax')) { $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price'], $this->session->data['currency']); } else { $tax = false; } if ($this->config->get('config_review_status')) { $rating = (int)$result['rating']; } else { $rating = false; } $data['products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'description' => utf8_substr(trim(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'))), 0, $this->config->get('theme_' . $this->config->get('config_theme') . '_product_description_length')) . '..', 'price' => $price, 'special' => $special, 'tax' => $tax, 'minimum' => $result['minimum'] > 0 ? $result['minimum'] : 1, 'rating' => $result['rating'], 'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url) ); } Как его модифицировать, чтоб он мне выводил в название товара в категории из массива поочередно. Т.е. подставлял перед названием значение из массива. (Сами товары у меня содержат в названии только фирму и модель.) Сам я только до такого варианта дошел, но он работает только, если никто не будет увеличивать кол-во товаров на витрине, в другом случае сыпятся ошибки. Наверное стоит, как то через foreach сделать, но мне не хватает знаний. Прошу подсказать. Вот мой вариант. Спойлер foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height')); } if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); } else { $special = false; } if ($this->config->get('config_tax')) { $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price'], $this->session->data['currency']); } else { $tax = false; } if ($this->config->get('config_review_status')) { $rating = (int)$result['rating']; } else { $rating = false; } if (in_array($category_id, [94, 95, 100, 102], TRUE)) { $category_prefix = array(); $category_prefix[] = "Элеткрокамин "; $category_prefix[] = "Эл камин "; $category_prefix[] = "Электрокамин "; $category_prefix[] = "Электрический камин "; $category_prefix[] = "Элеткрокамин "; $category_prefix[] = "Каминокомплект "; $category_prefix[] = "Элеткрокамин "; $category_prefix[] = "Каминокомплект "; $category_prefix[] = "Элеткрокамин "; $category_prefix[] = "Каминокомплект "; $category_prefix[] = "Элеткрокамин "; $category_prefix[] = "Каминокомплект "; $category_prefix[] = "Элеткрокамин "; $category_prefix[] = "Каминокомплект "; $category_prefix[] = "Элеткрокамин "; $category_prefix[] = "Каминокомплект "; $category_prefix[] = "Элеткрокамин "; $category_prefix[] = "Каминокомплект "; $category_prefix[] = "Элеткрокамин "; $category_prefix[] = "Каминокомплект "; $category_prefix[] = "Элеткрокамин "; $category_prefix[] = "Эл камин "; $category_prefix[] = "Электрокамин "; $category_prefix[] = "Электрический камин "; $category_prefix[] = "Элеткрокамин "; $category_prefix[] = "Каминокомплект "; $category_prefix[] = "Элеткрокамин "; $category_prefix[] = "Каминокомплект "; $category_prefix[] = "Элеткрокамин "; $category_prefix[] = "Каминокомплект "; $category_prefix[] = "Элеткрокамин "; $category_prefix[] = "Каминокомплект "; $category_prefix[] = "Элеткрокамин "; $category_prefix[] = "Каминокомплект "; $category_prefix[] = "Элеткрокамин "; $category_prefix[] = "Каминокомплект "; $category_prefix[] = "Элеткрокамин "; $category_prefix[] = "Каминокомплект "; $category_prefix[] = "Элеткрокамин "; $category_prefix[] = "Каминокомплект "; } elseif ($category_id == '138') { $category_prefix = array(); $category_prefix[] = "Элекрокаменка "; $category_prefix[] = "Элекрокаменка "; $category_prefix[] = "Элекрокаменка "; $category_prefix[] = "Элекропечь "; $category_prefix[] = "Элекрическая печь "; $category_prefix[] = "Элекрическая печь "; $category_prefix[] = "Элекрическая печь "; $category_prefix[] = "Элекрическая печь "; $category_prefix[] = "Элекрическая печь "; $category_prefix[] = "Элекрическая печь "; $category_prefix[] = "Элекрическая печь "; $category_prefix[] = "Элекрическая печь "; $category_prefix[] = "Элекрическая печь "; $category_prefix[] = "Элекрическая печь "; $category_prefix[] = "Элекрическая печь "; $category_prefix[] = "Элекрическая печь "; $category_prefix[] = "Элекрическая печь "; $category_prefix[] = "Элекрическая печь "; $category_prefix[] = "Элекрическая печь "; $category_prefix[] = "Элекрическая печь "; $category_prefix[] = "Элекрокаменка "; } elseif ($category_id == '78') { $category_prefix = "Печь для бани "; } else { $category_prefix = null; }; //Проверка типа переменной if (is_array($category_prefix)) { $prefix = $category_prefix[++$a]; } elseif (is_string($category_prefix)) { $prefix = $category_prefix; } else { $prefix = null; }; $data['products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $prefix.$result['name'], 'description' => utf8_substr(trim(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'))), 0, $this->config->get('theme_' . $this->config->get('config_theme') . '_product_description_length')) . '..', 'price' => $price, 'special' => $special, 'tax' => $tax, 'minimum' => $result['minimum'] > 0 ? $result['minimum'] : 1, 'rating' => $result['rating'], 'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url) ); } Змінено 27 квітня 2021 користувачем farshmac Надіслати Поділитися на інших сайтах More sharing options...
Prooksius Опубліковано: 27 квітня 2021 Share Опубліковано: 27 квітня 2021 7 минут назад, farshmac сказал: чтоб он мне выводил в название товара в категории из массива поочередно. вот эту фразу можно по-подробнее, не понянто, что в итоге надо. К названию товара подставлять еще и его категории по иерархии? Подставлять только текущую категорию ,в которой находимся? Надіслати Поділитися на інших сайтах More sharing options... farshmac Опубліковано: 27 квітня 2021 Автор Share Опубліковано: 27 квітня 2021 (змінено) 56 минут назад, Prooksius сказал: К названию товара подставлять еще и его категории по иерархии? Подставлять только текущую категорию ,в которой находимся? В зависимости от категории подставлять значение из заданного массива. if ($category_id == '138') { $category_prefix = array(); $category_prefix[] = "Элекрокаменка "; $category_prefix[] = "Печька "; } В данном примере, в массиве 2 значения, надо чтобы первому товару ушло первое - Электрокамина название товара, второму второе - Печька название товара и далее по кругу, 3 товар - Электрокамина название товара. (устроит вариант, где не будет по кругу, а первым двум будет присвоено значение, а дальше пустые пойдут). Змінено 27 квітня 2021 користувачем farshmac Надіслати Поділитися на інших сайтах More sharing options... Prooksius Опубліковано: 27 квітня 2021 Share Опубліковано: 27 квітня 2021 Посетитель поменял сортировку у вас в магазине - и все названия перепутались. Удалили товар(ы) в админке - и снова все перепуталось. Уж я не говорю про смену языка на сайте... так а в названии товара просто добавить это все через админку почему не хотите? Я смотрю, товаров у вас немного. P.S. А, пардон, ясно, зависит от того, в какой категории находимся.. Надіслати Поділитися на інших сайтах More sharing options... farshmac Опубліковано: 27 квітня 2021 Автор Share Опубліковано: 27 квітня 2021 (змінено) Спасибо конечно за беспокойство, но если можно, то хотелось бы помощь в реализации идеи. А так ничего не изменится, что бы пользователь не сделал. Или какие товары не удалить/добавить. Все манипуляции идут в контролере категории, и подстановка слов идет соответственно на странице категории и ей совершенно все равно, какой именно товар и с какой сортировкой в ней выводится. Я хочу, что бы к товару, только на уровне категории добавились ключевые слова, которые мне нужны. И у первого товара, каким бы он не был было одно и тоже слово (фраза) перед названием. Т.е. в категории 25 товаров выводится и если мы задали массив из 25 значений, то как ты не мешай товары, у первого в списке будет название с первым значением массива. Что в принципе я уже сделал, но как раз если увеличить число выводимых товаров, приводит к ошибкам (для юзера не видимых), но я хотел бы этого избежать. ЗЫ я привел пример, товаров у меня тысячи. Вот пример в скринах, с разной сортировкой: Спойлер Змінено 27 квітня 2021 користувачем farshmac Надіслати Поділитися на інших сайтах More sharing options... Prooksius Опубліковано: 27 квітня 2021 Share Опубліковано: 27 квітня 2021 Во-первых, нужно перед началом цикла перебора товаров определить три переменные: // Это массив первого условия $category_prefix1 = array('Элеткрокамин', 'Эл камин', 'Электрокамин', ... , 'Каминокомплект'); // Это массив второго условия $category_prefix2 = array('Элекрокаменка', 'Элекрокаменка', 'Элекрокаменка', ... , 'Элекрокаменка'); // это когда только одно значение добавки $category_prefix3 = 'Печь для бани'; и уже в цикле вписать ваши условия в зав. от категорий if (in_array($category_id, [94, 95, 100, 102], TRUE)) { $category_prefix = $category_prefix1; } elseif ($category_id == '138') { $category_prefix = $category_prefix2; } // ну и так далее потом непонятно что вот здесь за $a: $prefix = $category_prefix[++$a]; предполагаю, порядковый номер товара в цикле. ну как вариант, если мешают ошибки, вероятно, не находится по номеру. Можно так сделать: $prefix = isset($category_prefix[++$a]) ? $category_prefix[$a] : ''; и уже в заполнении названия товара: 'name' => (!empty($prefix) ? ' ' . $prefix : '') . $result['name'], - пробел можно один раз добавить. Но это все страшный костыль, конечно... 1 Надіслати Поділитися на інших сайтах More sharing options... Prooksius Опубліковано: 27 квітня 2021 Share Опубліковано: 27 квітня 2021 непонятно, как в разной сортировке товаров подходят одни и те же добавки.. По идее нужно для каждого товара в админке сделать такое поле, "добавка", но оно будет сложное, в зав. от категорий. То есть выбираем категорию - для нее задаем добавку к этому товару, выбираем еще категорию - и к ней добавку. И уже на сайте читать эти значения из БД и просто добавлять к названию. Так будет правильнее. Надіслати Поділитися на інших сайтах More sharing options... farshmac Опубліковано: 27 квітня 2021 Автор Share Опубліковано: 27 квітня 2021 (змінено) Спасибо, написал по вашему примеру, по итогу ничего не изменилось. Поясню. Мне надо оптимизировать страницы категорий под поисковик. Самый удобный вариант, как по мне проработать пару сотен категорий, пусть даже тысячу, чем десятки тысяч товаров. Как правильно, меня мало волнует, у многих конкурентов такой вариант, который я пытаюсь сделать реализован, как они мне конечно не скажут. Но мне кажется я иду по пути наименьшего сопротивления. Важно создать плотность по основному ключу и добавить все другие, которые мне нужны, и которые трудно добавить не в названии товара. Да может показаться, что проще проработать выдачу по каждой категории, но это не так. Все товары имеют несколько категорий, некоторые более 10. И как сделать так, чтобы задавать сортировку по определенной категории мне не известно. И так? вот в чем моя проблема. Это уже после ваших правок. ЗЫ У меня не хватает знаний и поиск не помогает. Есть ли какая-то возможность зациклить массив, чтоб он отдавал 21, 22... какое-то значение. И как это сделать уже в цикле) Спойлер Вот какой код у меня получился. Спойлер //Элекрокамины $category_electrokamin = array(); $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Эл камин "; $category_electrokamin[] = "Электрокамин "; $category_electrokamin[] = "Электрический камин "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Эл камин "; $category_electrokamin[] = "Электрокамин "; $category_electrokamin[] = "Электрический камин "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; //Элекрокаменка ($category_id == '138') { $category_elecrokamenka = array(); $category_elecrokamenka[] = "Элекрокаменка "; $category_elecrokamenka[] = "Элекрокаменка "; $category_elecrokamenka[] = "Элекрокаменка "; $category_elecrokamenka[] = "Элекропечь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрокаменка "; //Печь для бани $category-dly-bany = "Печь для бани "; $product_total = $this->model_catalog_product->getTotalProducts($filter_data); $results = $this->model_catalog_product->getProducts($filter_data); foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height')); } if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); } else { $special = false; } if ($this->config->get('config_tax')) { $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price'], $this->session->data['currency']); } else { $tax = false; } if ($this->config->get('config_review_status')) { $rating = (int)$result['rating']; } else { $rating = false; } if (in_array($category_id, [94, 95, 100, 102], TRUE)) { $category_prefix = $category_electrokamin; } elseif ($category_id == '138') { $category_prefix = $category_elecrokamenka; } elseif ($category_id == '78') { $category_prefix = $category-dly-bany; } $prefix = isset($category_prefix[++$a]) ? $category_prefix[$a] : ''; $data['products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' > (!empty($prefix) ? ' ' . $prefix : '') . $result['name'], 'description' => utf8_substr(trim(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'))), 0, $this->config->get('theme_' . $this->config->get('config_theme') . '_product_description_length')) . '..', 'price' => $price, 'special' => $special, 'tax' => $tax, 'minimum' => $result['minimum'] > 0 ? $result['minimum'] : 1, 'rating' => $result['rating'], 'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url) ); } Змінено 27 квітня 2021 користувачем farshmac Надіслати Поділитися на інших сайтах More sharing options... Prooksius Опубліковано: 28 квітня 2021 Share Опубліковано: 28 квітня 2021 нужно знать какая строка №372 у вас в коде. Модификаторы обновили? Надіслати Поділитися на інших сайтах More sharing options... farshmac Опубліковано: 28 квітня 2021 Автор Share Опубліковано: 28 квітня 2021 (змінено) Обновил, еще раз все перепроверил и переделал. 1) В итоге ругается на строку, в любых категориях: Undefined variable: a Цитата $prefix = isset($category_prefix[++$a]) ? $category_prefix[$a] : ''; Что такое [++$a] я точно не знаю, я думал с помощью этого перебираются ключи массива по очереди. 2) Там где нет массива, а одно значение выводятся знаки вопросов. 17 часов назад, Prooksius сказал: $category_prefix3 = 'Печь для бани'; Спойлер А так выводятся 3 "добавки", если в массиве 3 ключа, что в принципе меня устраивает. Хотя возможно лучше бы было бы, что бы шло повторение. Спойлер Змінено 28 квітня 2021 користувачем farshmac Надіслати Поділитися на інших сайтах More sharing options... Prooksius Опубліковано: 28 квітня 2021 Share Опубліковано: 28 квітня 2021 вместо foreach ($results as $result) { напишите foreach ($results as $a => $result) { и тогда ++ уберите из той строки, где ошибка 52 минуты назад, farshmac сказал: Хотя возможно лучше бы было бы, что бы шло повторение так продублируйте значения в вашем массиве Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 1 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Название товаров в категории Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
farshmac Опубліковано: 27 квітня 2021 Автор Share Опубліковано: 27 квітня 2021 (змінено) 56 минут назад, Prooksius сказал: К названию товара подставлять еще и его категории по иерархии? Подставлять только текущую категорию ,в которой находимся? В зависимости от категории подставлять значение из заданного массива. if ($category_id == '138') { $category_prefix = array(); $category_prefix[] = "Элекрокаменка "; $category_prefix[] = "Печька "; } В данном примере, в массиве 2 значения, надо чтобы первому товару ушло первое - Электрокамина название товара, второму второе - Печька название товара и далее по кругу, 3 товар - Электрокамина название товара. (устроит вариант, где не будет по кругу, а первым двум будет присвоено значение, а дальше пустые пойдут). Змінено 27 квітня 2021 користувачем farshmac Надіслати Поділитися на інших сайтах More sharing options...
Prooksius Опубліковано: 27 квітня 2021 Share Опубліковано: 27 квітня 2021 Посетитель поменял сортировку у вас в магазине - и все названия перепутались. Удалили товар(ы) в админке - и снова все перепуталось. Уж я не говорю про смену языка на сайте... так а в названии товара просто добавить это все через админку почему не хотите? Я смотрю, товаров у вас немного. P.S. А, пардон, ясно, зависит от того, в какой категории находимся.. Надіслати Поділитися на інших сайтах More sharing options... farshmac Опубліковано: 27 квітня 2021 Автор Share Опубліковано: 27 квітня 2021 (змінено) Спасибо конечно за беспокойство, но если можно, то хотелось бы помощь в реализации идеи. А так ничего не изменится, что бы пользователь не сделал. Или какие товары не удалить/добавить. Все манипуляции идут в контролере категории, и подстановка слов идет соответственно на странице категории и ей совершенно все равно, какой именно товар и с какой сортировкой в ней выводится. Я хочу, что бы к товару, только на уровне категории добавились ключевые слова, которые мне нужны. И у первого товара, каким бы он не был было одно и тоже слово (фраза) перед названием. Т.е. в категории 25 товаров выводится и если мы задали массив из 25 значений, то как ты не мешай товары, у первого в списке будет название с первым значением массива. Что в принципе я уже сделал, но как раз если увеличить число выводимых товаров, приводит к ошибкам (для юзера не видимых), но я хотел бы этого избежать. ЗЫ я привел пример, товаров у меня тысячи. Вот пример в скринах, с разной сортировкой: Спойлер Змінено 27 квітня 2021 користувачем farshmac Надіслати Поділитися на інших сайтах More sharing options... Prooksius Опубліковано: 27 квітня 2021 Share Опубліковано: 27 квітня 2021 Во-первых, нужно перед началом цикла перебора товаров определить три переменные: // Это массив первого условия $category_prefix1 = array('Элеткрокамин', 'Эл камин', 'Электрокамин', ... , 'Каминокомплект'); // Это массив второго условия $category_prefix2 = array('Элекрокаменка', 'Элекрокаменка', 'Элекрокаменка', ... , 'Элекрокаменка'); // это когда только одно значение добавки $category_prefix3 = 'Печь для бани'; и уже в цикле вписать ваши условия в зав. от категорий if (in_array($category_id, [94, 95, 100, 102], TRUE)) { $category_prefix = $category_prefix1; } elseif ($category_id == '138') { $category_prefix = $category_prefix2; } // ну и так далее потом непонятно что вот здесь за $a: $prefix = $category_prefix[++$a]; предполагаю, порядковый номер товара в цикле. ну как вариант, если мешают ошибки, вероятно, не находится по номеру. Можно так сделать: $prefix = isset($category_prefix[++$a]) ? $category_prefix[$a] : ''; и уже в заполнении названия товара: 'name' => (!empty($prefix) ? ' ' . $prefix : '') . $result['name'], - пробел можно один раз добавить. Но это все страшный костыль, конечно... 1 Надіслати Поділитися на інших сайтах More sharing options... Prooksius Опубліковано: 27 квітня 2021 Share Опубліковано: 27 квітня 2021 непонятно, как в разной сортировке товаров подходят одни и те же добавки.. По идее нужно для каждого товара в админке сделать такое поле, "добавка", но оно будет сложное, в зав. от категорий. То есть выбираем категорию - для нее задаем добавку к этому товару, выбираем еще категорию - и к ней добавку. И уже на сайте читать эти значения из БД и просто добавлять к названию. Так будет правильнее. Надіслати Поділитися на інших сайтах More sharing options... farshmac Опубліковано: 27 квітня 2021 Автор Share Опубліковано: 27 квітня 2021 (змінено) Спасибо, написал по вашему примеру, по итогу ничего не изменилось. Поясню. Мне надо оптимизировать страницы категорий под поисковик. Самый удобный вариант, как по мне проработать пару сотен категорий, пусть даже тысячу, чем десятки тысяч товаров. Как правильно, меня мало волнует, у многих конкурентов такой вариант, который я пытаюсь сделать реализован, как они мне конечно не скажут. Но мне кажется я иду по пути наименьшего сопротивления. Важно создать плотность по основному ключу и добавить все другие, которые мне нужны, и которые трудно добавить не в названии товара. Да может показаться, что проще проработать выдачу по каждой категории, но это не так. Все товары имеют несколько категорий, некоторые более 10. И как сделать так, чтобы задавать сортировку по определенной категории мне не известно. И так? вот в чем моя проблема. Это уже после ваших правок. ЗЫ У меня не хватает знаний и поиск не помогает. Есть ли какая-то возможность зациклить массив, чтоб он отдавал 21, 22... какое-то значение. И как это сделать уже в цикле) Спойлер Вот какой код у меня получился. Спойлер //Элекрокамины $category_electrokamin = array(); $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Эл камин "; $category_electrokamin[] = "Электрокамин "; $category_electrokamin[] = "Электрический камин "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Эл камин "; $category_electrokamin[] = "Электрокамин "; $category_electrokamin[] = "Электрический камин "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; //Элекрокаменка ($category_id == '138') { $category_elecrokamenka = array(); $category_elecrokamenka[] = "Элекрокаменка "; $category_elecrokamenka[] = "Элекрокаменка "; $category_elecrokamenka[] = "Элекрокаменка "; $category_elecrokamenka[] = "Элекропечь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрокаменка "; //Печь для бани $category-dly-bany = "Печь для бани "; $product_total = $this->model_catalog_product->getTotalProducts($filter_data); $results = $this->model_catalog_product->getProducts($filter_data); foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height')); } if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); } else { $special = false; } if ($this->config->get('config_tax')) { $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price'], $this->session->data['currency']); } else { $tax = false; } if ($this->config->get('config_review_status')) { $rating = (int)$result['rating']; } else { $rating = false; } if (in_array($category_id, [94, 95, 100, 102], TRUE)) { $category_prefix = $category_electrokamin; } elseif ($category_id == '138') { $category_prefix = $category_elecrokamenka; } elseif ($category_id == '78') { $category_prefix = $category-dly-bany; } $prefix = isset($category_prefix[++$a]) ? $category_prefix[$a] : ''; $data['products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' > (!empty($prefix) ? ' ' . $prefix : '') . $result['name'], 'description' => utf8_substr(trim(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'))), 0, $this->config->get('theme_' . $this->config->get('config_theme') . '_product_description_length')) . '..', 'price' => $price, 'special' => $special, 'tax' => $tax, 'minimum' => $result['minimum'] > 0 ? $result['minimum'] : 1, 'rating' => $result['rating'], 'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url) ); } Змінено 27 квітня 2021 користувачем farshmac Надіслати Поділитися на інших сайтах More sharing options... Prooksius Опубліковано: 28 квітня 2021 Share Опубліковано: 28 квітня 2021 нужно знать какая строка №372 у вас в коде. Модификаторы обновили? Надіслати Поділитися на інших сайтах More sharing options... farshmac Опубліковано: 28 квітня 2021 Автор Share Опубліковано: 28 квітня 2021 (змінено) Обновил, еще раз все перепроверил и переделал. 1) В итоге ругается на строку, в любых категориях: Undefined variable: a Цитата $prefix = isset($category_prefix[++$a]) ? $category_prefix[$a] : ''; Что такое [++$a] я точно не знаю, я думал с помощью этого перебираются ключи массива по очереди. 2) Там где нет массива, а одно значение выводятся знаки вопросов. 17 часов назад, Prooksius сказал: $category_prefix3 = 'Печь для бани'; Спойлер А так выводятся 3 "добавки", если в массиве 3 ключа, что в принципе меня устраивает. Хотя возможно лучше бы было бы, что бы шло повторение. Спойлер Змінено 28 квітня 2021 користувачем farshmac Надіслати Поділитися на інших сайтах More sharing options... Prooksius Опубліковано: 28 квітня 2021 Share Опубліковано: 28 квітня 2021 вместо foreach ($results as $result) { напишите foreach ($results as $a => $result) { и тогда ++ уберите из той строки, где ошибка 52 минуты назад, farshmac сказал: Хотя возможно лучше бы было бы, что бы шло повторение так продублируйте значения в вашем массиве Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 1 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Название товаров в категории Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
farshmac Опубліковано: 27 квітня 2021 Автор Share Опубліковано: 27 квітня 2021 (змінено) Спасибо конечно за беспокойство, но если можно, то хотелось бы помощь в реализации идеи. А так ничего не изменится, что бы пользователь не сделал. Или какие товары не удалить/добавить. Все манипуляции идут в контролере категории, и подстановка слов идет соответственно на странице категории и ей совершенно все равно, какой именно товар и с какой сортировкой в ней выводится. Я хочу, что бы к товару, только на уровне категории добавились ключевые слова, которые мне нужны. И у первого товара, каким бы он не был было одно и тоже слово (фраза) перед названием. Т.е. в категории 25 товаров выводится и если мы задали массив из 25 значений, то как ты не мешай товары, у первого в списке будет название с первым значением массива. Что в принципе я уже сделал, но как раз если увеличить число выводимых товаров, приводит к ошибкам (для юзера не видимых), но я хотел бы этого избежать. ЗЫ я привел пример, товаров у меня тысячи. Вот пример в скринах, с разной сортировкой: Спойлер Змінено 27 квітня 2021 користувачем farshmac Надіслати Поділитися на інших сайтах More sharing options...
Prooksius Опубліковано: 27 квітня 2021 Share Опубліковано: 27 квітня 2021 Во-первых, нужно перед началом цикла перебора товаров определить три переменные: // Это массив первого условия $category_prefix1 = array('Элеткрокамин', 'Эл камин', 'Электрокамин', ... , 'Каминокомплект'); // Это массив второго условия $category_prefix2 = array('Элекрокаменка', 'Элекрокаменка', 'Элекрокаменка', ... , 'Элекрокаменка'); // это когда только одно значение добавки $category_prefix3 = 'Печь для бани'; и уже в цикле вписать ваши условия в зав. от категорий if (in_array($category_id, [94, 95, 100, 102], TRUE)) { $category_prefix = $category_prefix1; } elseif ($category_id == '138') { $category_prefix = $category_prefix2; } // ну и так далее потом непонятно что вот здесь за $a: $prefix = $category_prefix[++$a]; предполагаю, порядковый номер товара в цикле. ну как вариант, если мешают ошибки, вероятно, не находится по номеру. Можно так сделать: $prefix = isset($category_prefix[++$a]) ? $category_prefix[$a] : ''; и уже в заполнении названия товара: 'name' => (!empty($prefix) ? ' ' . $prefix : '') . $result['name'], - пробел можно один раз добавить. Но это все страшный костыль, конечно... 1 Надіслати Поділитися на інших сайтах More sharing options... Prooksius Опубліковано: 27 квітня 2021 Share Опубліковано: 27 квітня 2021 непонятно, как в разной сортировке товаров подходят одни и те же добавки.. По идее нужно для каждого товара в админке сделать такое поле, "добавка", но оно будет сложное, в зав. от категорий. То есть выбираем категорию - для нее задаем добавку к этому товару, выбираем еще категорию - и к ней добавку. И уже на сайте читать эти значения из БД и просто добавлять к названию. Так будет правильнее. Надіслати Поділитися на інших сайтах More sharing options... farshmac Опубліковано: 27 квітня 2021 Автор Share Опубліковано: 27 квітня 2021 (змінено) Спасибо, написал по вашему примеру, по итогу ничего не изменилось. Поясню. Мне надо оптимизировать страницы категорий под поисковик. Самый удобный вариант, как по мне проработать пару сотен категорий, пусть даже тысячу, чем десятки тысяч товаров. Как правильно, меня мало волнует, у многих конкурентов такой вариант, который я пытаюсь сделать реализован, как они мне конечно не скажут. Но мне кажется я иду по пути наименьшего сопротивления. Важно создать плотность по основному ключу и добавить все другие, которые мне нужны, и которые трудно добавить не в названии товара. Да может показаться, что проще проработать выдачу по каждой категории, но это не так. Все товары имеют несколько категорий, некоторые более 10. И как сделать так, чтобы задавать сортировку по определенной категории мне не известно. И так? вот в чем моя проблема. Это уже после ваших правок. ЗЫ У меня не хватает знаний и поиск не помогает. Есть ли какая-то возможность зациклить массив, чтоб он отдавал 21, 22... какое-то значение. И как это сделать уже в цикле) Спойлер Вот какой код у меня получился. Спойлер //Элекрокамины $category_electrokamin = array(); $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Эл камин "; $category_electrokamin[] = "Электрокамин "; $category_electrokamin[] = "Электрический камин "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Эл камин "; $category_electrokamin[] = "Электрокамин "; $category_electrokamin[] = "Электрический камин "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; //Элекрокаменка ($category_id == '138') { $category_elecrokamenka = array(); $category_elecrokamenka[] = "Элекрокаменка "; $category_elecrokamenka[] = "Элекрокаменка "; $category_elecrokamenka[] = "Элекрокаменка "; $category_elecrokamenka[] = "Элекропечь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрокаменка "; //Печь для бани $category-dly-bany = "Печь для бани "; $product_total = $this->model_catalog_product->getTotalProducts($filter_data); $results = $this->model_catalog_product->getProducts($filter_data); foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height')); } if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); } else { $special = false; } if ($this->config->get('config_tax')) { $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price'], $this->session->data['currency']); } else { $tax = false; } if ($this->config->get('config_review_status')) { $rating = (int)$result['rating']; } else { $rating = false; } if (in_array($category_id, [94, 95, 100, 102], TRUE)) { $category_prefix = $category_electrokamin; } elseif ($category_id == '138') { $category_prefix = $category_elecrokamenka; } elseif ($category_id == '78') { $category_prefix = $category-dly-bany; } $prefix = isset($category_prefix[++$a]) ? $category_prefix[$a] : ''; $data['products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' > (!empty($prefix) ? ' ' . $prefix : '') . $result['name'], 'description' => utf8_substr(trim(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'))), 0, $this->config->get('theme_' . $this->config->get('config_theme') . '_product_description_length')) . '..', 'price' => $price, 'special' => $special, 'tax' => $tax, 'minimum' => $result['minimum'] > 0 ? $result['minimum'] : 1, 'rating' => $result['rating'], 'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url) ); } Змінено 27 квітня 2021 користувачем farshmac Надіслати Поділитися на інших сайтах More sharing options... Prooksius Опубліковано: 28 квітня 2021 Share Опубліковано: 28 квітня 2021 нужно знать какая строка №372 у вас в коде. Модификаторы обновили? Надіслати Поділитися на інших сайтах More sharing options... farshmac Опубліковано: 28 квітня 2021 Автор Share Опубліковано: 28 квітня 2021 (змінено) Обновил, еще раз все перепроверил и переделал. 1) В итоге ругается на строку, в любых категориях: Undefined variable: a Цитата $prefix = isset($category_prefix[++$a]) ? $category_prefix[$a] : ''; Что такое [++$a] я точно не знаю, я думал с помощью этого перебираются ключи массива по очереди. 2) Там где нет массива, а одно значение выводятся знаки вопросов. 17 часов назад, Prooksius сказал: $category_prefix3 = 'Печь для бани'; Спойлер А так выводятся 3 "добавки", если в массиве 3 ключа, что в принципе меня устраивает. Хотя возможно лучше бы было бы, что бы шло повторение. Спойлер Змінено 28 квітня 2021 користувачем farshmac Надіслати Поділитися на інших сайтах More sharing options... Prooksius Опубліковано: 28 квітня 2021 Share Опубліковано: 28 квітня 2021 вместо foreach ($results as $result) { напишите foreach ($results as $a => $result) { и тогда ++ уберите из той строки, где ошибка 52 минуты назад, farshmac сказал: Хотя возможно лучше бы было бы, что бы шло повторение так продублируйте значения в вашем массиве Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 1 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Название товаров в категории Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich
Prooksius Опубліковано: 27 квітня 2021 Share Опубліковано: 27 квітня 2021 непонятно, как в разной сортировке товаров подходят одни и те же добавки.. По идее нужно для каждого товара в админке сделать такое поле, "добавка", но оно будет сложное, в зав. от категорий. То есть выбираем категорию - для нее задаем добавку к этому товару, выбираем еще категорию - и к ней добавку. И уже на сайте читать эти значения из БД и просто добавлять к названию. Так будет правильнее. Надіслати Поділитися на інших сайтах More sharing options... farshmac Опубліковано: 27 квітня 2021 Автор Share Опубліковано: 27 квітня 2021 (змінено) Спасибо, написал по вашему примеру, по итогу ничего не изменилось. Поясню. Мне надо оптимизировать страницы категорий под поисковик. Самый удобный вариант, как по мне проработать пару сотен категорий, пусть даже тысячу, чем десятки тысяч товаров. Как правильно, меня мало волнует, у многих конкурентов такой вариант, который я пытаюсь сделать реализован, как они мне конечно не скажут. Но мне кажется я иду по пути наименьшего сопротивления. Важно создать плотность по основному ключу и добавить все другие, которые мне нужны, и которые трудно добавить не в названии товара. Да может показаться, что проще проработать выдачу по каждой категории, но это не так. Все товары имеют несколько категорий, некоторые более 10. И как сделать так, чтобы задавать сортировку по определенной категории мне не известно. И так? вот в чем моя проблема. Это уже после ваших правок. ЗЫ У меня не хватает знаний и поиск не помогает. Есть ли какая-то возможность зациклить массив, чтоб он отдавал 21, 22... какое-то значение. И как это сделать уже в цикле) Спойлер Вот какой код у меня получился. Спойлер //Элекрокамины $category_electrokamin = array(); $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Эл камин "; $category_electrokamin[] = "Электрокамин "; $category_electrokamin[] = "Электрический камин "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Эл камин "; $category_electrokamin[] = "Электрокамин "; $category_electrokamin[] = "Электрический камин "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; //Элекрокаменка ($category_id == '138') { $category_elecrokamenka = array(); $category_elecrokamenka[] = "Элекрокаменка "; $category_elecrokamenka[] = "Элекрокаменка "; $category_elecrokamenka[] = "Элекрокаменка "; $category_elecrokamenka[] = "Элекропечь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрокаменка "; //Печь для бани $category-dly-bany = "Печь для бани "; $product_total = $this->model_catalog_product->getTotalProducts($filter_data); $results = $this->model_catalog_product->getProducts($filter_data); foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height')); } if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); } else { $special = false; } if ($this->config->get('config_tax')) { $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price'], $this->session->data['currency']); } else { $tax = false; } if ($this->config->get('config_review_status')) { $rating = (int)$result['rating']; } else { $rating = false; } if (in_array($category_id, [94, 95, 100, 102], TRUE)) { $category_prefix = $category_electrokamin; } elseif ($category_id == '138') { $category_prefix = $category_elecrokamenka; } elseif ($category_id == '78') { $category_prefix = $category-dly-bany; } $prefix = isset($category_prefix[++$a]) ? $category_prefix[$a] : ''; $data['products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' > (!empty($prefix) ? ' ' . $prefix : '') . $result['name'], 'description' => utf8_substr(trim(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'))), 0, $this->config->get('theme_' . $this->config->get('config_theme') . '_product_description_length')) . '..', 'price' => $price, 'special' => $special, 'tax' => $tax, 'minimum' => $result['minimum'] > 0 ? $result['minimum'] : 1, 'rating' => $result['rating'], 'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url) ); } Змінено 27 квітня 2021 користувачем farshmac Надіслати Поділитися на інших сайтах More sharing options... Prooksius Опубліковано: 28 квітня 2021 Share Опубліковано: 28 квітня 2021 нужно знать какая строка №372 у вас в коде. Модификаторы обновили? Надіслати Поділитися на інших сайтах More sharing options... farshmac Опубліковано: 28 квітня 2021 Автор Share Опубліковано: 28 квітня 2021 (змінено) Обновил, еще раз все перепроверил и переделал. 1) В итоге ругается на строку, в любых категориях: Undefined variable: a Цитата $prefix = isset($category_prefix[++$a]) ? $category_prefix[$a] : ''; Что такое [++$a] я точно не знаю, я думал с помощью этого перебираются ключи массива по очереди. 2) Там где нет массива, а одно значение выводятся знаки вопросов. 17 часов назад, Prooksius сказал: $category_prefix3 = 'Печь для бани'; Спойлер А так выводятся 3 "добавки", если в массиве 3 ключа, что в принципе меня устраивает. Хотя возможно лучше бы было бы, что бы шло повторение. Спойлер Змінено 28 квітня 2021 користувачем farshmac Надіслати Поділитися на інших сайтах More sharing options... Prooksius Опубліковано: 28 квітня 2021 Share Опубліковано: 28 квітня 2021 вместо foreach ($results as $result) { напишите foreach ($results as $a => $result) { и тогда ++ уберите из той строки, где ошибка 52 минуты назад, farshmac сказал: Хотя возможно лучше бы было бы, что бы шло повторение так продублируйте значения в вашем массиве Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 1 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Название товаров в категории
farshmac Опубліковано: 27 квітня 2021 Автор Share Опубліковано: 27 квітня 2021 (змінено) Спасибо, написал по вашему примеру, по итогу ничего не изменилось. Поясню. Мне надо оптимизировать страницы категорий под поисковик. Самый удобный вариант, как по мне проработать пару сотен категорий, пусть даже тысячу, чем десятки тысяч товаров. Как правильно, меня мало волнует, у многих конкурентов такой вариант, который я пытаюсь сделать реализован, как они мне конечно не скажут. Но мне кажется я иду по пути наименьшего сопротивления. Важно создать плотность по основному ключу и добавить все другие, которые мне нужны, и которые трудно добавить не в названии товара. Да может показаться, что проще проработать выдачу по каждой категории, но это не так. Все товары имеют несколько категорий, некоторые более 10. И как сделать так, чтобы задавать сортировку по определенной категории мне не известно. И так? вот в чем моя проблема. Это уже после ваших правок. ЗЫ У меня не хватает знаний и поиск не помогает. Есть ли какая-то возможность зациклить массив, чтоб он отдавал 21, 22... какое-то значение. И как это сделать уже в цикле) Спойлер Вот какой код у меня получился. Спойлер //Элекрокамины $category_electrokamin = array(); $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Эл камин "; $category_electrokamin[] = "Электрокамин "; $category_electrokamin[] = "Электрический камин "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Эл камин "; $category_electrokamin[] = "Электрокамин "; $category_electrokamin[] = "Электрический камин "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; $category_electrokamin[] = "Элеткрокамин "; $category_electrokamin[] = "Каминокомплект "; //Элекрокаменка ($category_id == '138') { $category_elecrokamenka = array(); $category_elecrokamenka[] = "Элекрокаменка "; $category_elecrokamenka[] = "Элекрокаменка "; $category_elecrokamenka[] = "Элекрокаменка "; $category_elecrokamenka[] = "Элекропечь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрическая печь "; $category_elecrokamenka[] = "Элекрокаменка "; //Печь для бани $category-dly-bany = "Печь для бани "; $product_total = $this->model_catalog_product->getTotalProducts($filter_data); $results = $this->model_catalog_product->getProducts($filter_data); foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height')); } if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); } else { $special = false; } if ($this->config->get('config_tax')) { $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price'], $this->session->data['currency']); } else { $tax = false; } if ($this->config->get('config_review_status')) { $rating = (int)$result['rating']; } else { $rating = false; } if (in_array($category_id, [94, 95, 100, 102], TRUE)) { $category_prefix = $category_electrokamin; } elseif ($category_id == '138') { $category_prefix = $category_elecrokamenka; } elseif ($category_id == '78') { $category_prefix = $category-dly-bany; } $prefix = isset($category_prefix[++$a]) ? $category_prefix[$a] : ''; $data['products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' > (!empty($prefix) ? ' ' . $prefix : '') . $result['name'], 'description' => utf8_substr(trim(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'))), 0, $this->config->get('theme_' . $this->config->get('config_theme') . '_product_description_length')) . '..', 'price' => $price, 'special' => $special, 'tax' => $tax, 'minimum' => $result['minimum'] > 0 ? $result['minimum'] : 1, 'rating' => $result['rating'], 'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url) ); } Змінено 27 квітня 2021 користувачем farshmac Надіслати Поділитися на інших сайтах More sharing options...
Prooksius Опубліковано: 28 квітня 2021 Share Опубліковано: 28 квітня 2021 нужно знать какая строка №372 у вас в коде. Модификаторы обновили? Надіслати Поділитися на інших сайтах More sharing options... farshmac Опубліковано: 28 квітня 2021 Автор Share Опубліковано: 28 квітня 2021 (змінено) Обновил, еще раз все перепроверил и переделал. 1) В итоге ругается на строку, в любых категориях: Undefined variable: a Цитата $prefix = isset($category_prefix[++$a]) ? $category_prefix[$a] : ''; Что такое [++$a] я точно не знаю, я думал с помощью этого перебираются ключи массива по очереди. 2) Там где нет массива, а одно значение выводятся знаки вопросов. 17 часов назад, Prooksius сказал: $category_prefix3 = 'Печь для бани'; Спойлер А так выводятся 3 "добавки", если в массиве 3 ключа, что в принципе меня устраивает. Хотя возможно лучше бы было бы, что бы шло повторение. Спойлер Змінено 28 квітня 2021 користувачем farshmac Надіслати Поділитися на інших сайтах More sharing options... Prooksius Опубліковано: 28 квітня 2021 Share Опубліковано: 28 квітня 2021 вместо foreach ($results as $result) { напишите foreach ($results as $a => $result) { и тогда ++ уберите из той строки, где ошибка 52 минуты назад, farshmac сказал: Хотя возможно лучше бы было бы, что бы шло повторение так продублируйте значения в вашем массиве Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 1 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
farshmac Опубліковано: 28 квітня 2021 Автор Share Опубліковано: 28 квітня 2021 (змінено) Обновил, еще раз все перепроверил и переделал. 1) В итоге ругается на строку, в любых категориях: Undefined variable: a Цитата $prefix = isset($category_prefix[++$a]) ? $category_prefix[$a] : ''; Что такое [++$a] я точно не знаю, я думал с помощью этого перебираются ключи массива по очереди. 2) Там где нет массива, а одно значение выводятся знаки вопросов. 17 часов назад, Prooksius сказал: $category_prefix3 = 'Печь для бани'; Спойлер А так выводятся 3 "добавки", если в массиве 3 ключа, что в принципе меня устраивает. Хотя возможно лучше бы было бы, что бы шло повторение. Спойлер Змінено 28 квітня 2021 користувачем farshmac Надіслати Поділитися на інших сайтах More sharing options...
Prooksius Опубліковано: 28 квітня 2021 Share Опубліковано: 28 квітня 2021 вместо foreach ($results as $result) { напишите foreach ($results as $a => $result) { и тогда ++ уберите из той строки, где ошибка 52 минуты назад, farshmac сказал: Хотя возможно лучше бы было бы, что бы шло повторение так продублируйте значения в вашем массиве Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 1
Recommended Posts