Adems Опубликовано: января 21, 2017 Жалоба Поделиться Опубликовано: января 21, 2017 Здравствуйте! Посоветуйте как реализовать вывод у товаров со статусом В наличии вот такого тега: <meta itemprop="availability" content="http://schema.org/InStock"> Необходимо вывести его в шаблоне товара рядом с ценой, в одном списке. Не у всех подряд а именно у тех которые имеют статус В наличии. Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Это популярное сообщение. Fedka Опубликовано: января 21, 2017 Это популярное сообщение. Жалоба Поделиться Опубликовано: января 21, 2017 Я у себя на сайтах вывожу после проверки <?php if ($price) { ?> Имеет вид, примерно: <div itemprop="offers" itemscope itemtype="http://schema.org/Offer"> <span itemprop="price" content="1000.00">1,000.00</span> <span itemprop="priceCurrency" content="UAH">ГРН.-</span> <link itemprop="availability" href="http://schema.org/InStock" /> </div> Pelmen 1 Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Adems Опубликовано: января 22, 2017 Автор Жалоба Поделиться Опубликовано: января 22, 2017 10 часов назад, Fedka сказал: Я у себя на сайтах вывожу после проверки <?php if ($price) { ?> Имеет вид, примерно: <div itemprop="offers" itemscope itemtype="http://schema.org/Offer"> <span itemprop="price" content="1000.00">1,000.00</span> <span itemprop="priceCurrency" content="UAH">ГРН.-</span> <link itemprop="availability" href="http://schema.org/InStock" /> </div> Спасибо за ответ, да с этим всё понятно. Немного другой вопрос: как вывести это тег у товаров именно со статусом В наличии, лепить всем подряд <meta itemprop="availability" content="http://schema.org/InStock"> как то не правильно. Надо думать или модуль какой-то, или в контролере что то менять с выводом нового значения по id метки. Отдаётся эта метка с со своим id значит тег выводится не отдается значит не выводится. Иначе это смотрится как спам в разметке, хотя многие так и живут, но я чего то не хочу выводить его ради того чтоб просто было. Решил для себя делать всё как положено. Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Fedka Опубликовано: января 22, 2017 Жалоба Поделиться Опубликовано: января 22, 2017 11 час назад, Adems сказал: Спасибо за ответ, да с этим всё понятно. Немного другой вопрос: как вывести это тег у товаров именно со статусом В наличии, лепить всем подряд <meta itemprop="availability" content="http://schema.org/InStock"> как то не правильно. Надо думать или модуль какой-то, или в контролере что то менять с выводом нового значения по id метки. Отдаётся эта метка с со своим id значит тег выводится не отдается значит не выводится. Иначе это смотрится как спам в разметке, хотя многие так и живут, но я чего то не хочу выводить его ради того чтоб просто было. Решил для себя делать всё как положено. <link itemprop="availability" href="http://schema.org/<?php echo (($availability) ? 'InStock' : 'OutOfStock') ?>" /> Эту проверку вставить в product.tpl А в контроллер product.php добавить где-то $data['availability'] = ($product_info['quantity'] > 0) ? true : false; И получиться будет, если количество для товара есть, больше нуля, тогда будет писаться, что есть в наличии, если меньше, будет выводится, что нет... Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Adems Опубликовано: января 23, 2017 Автор Жалоба Поделиться Опубликовано: января 23, 2017 21 час назад, Fedka сказал: <link itemprop="availability" href="http://schema.org/<?php echo (($availability) ? 'InStock' : 'OutOfStock') ?>" /> Эту проверку вставить в product.tpl А в контроллер product.php добавить где-то $data['availability'] = ($product_info['quantity'] > 0) ? true : false; И получиться будет, если количество для товара есть, больше нуля, тогда будет писаться, что есть в наличии, если меньше, будет выводится, что нет... Отлично! Огромное спасибо! Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Adems Опубликовано: января 29, 2017 Автор Жалоба Поделиться Опубликовано: января 29, 2017 В 22.01.2017 at 22:16, Fedka сказал: <link itemprop="availability" href="http://schema.org/<?php echo (($availability) ? 'InStock' : 'OutOfStock') ?>" /> Эту проверку вставить в product.tpl А в контроллер product.php добавить где-то $data['availability'] = ($product_info['quantity'] > 0) ? true : false; И получиться будет, если количество для товара есть, больше нуля, тогда будет писаться, что есть в наличии, если меньше, будет выводится, что нет... Здравствуйте! Извиняюсь не подскажете такое же решение только для списка товаров в категории? Если можно. Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Fedka Опубликовано: января 29, 2017 Жалоба Поделиться Опубликовано: января 29, 2017 1 час назад, Adems сказал: Здравствуйте! Извиняюсь не подскажете такое же решение только для списка товаров в категории? Если можно. Аналогично как на странице товара, только это все делать внутри foreach ($results as $result) { И вставлять в массив - $data['products'] Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Adems Опубликовано: января 30, 2017 Автор Жалоба Поделиться Опубликовано: января 30, 2017 20 часов назад, Fedka сказал: Аналогично как на странице товара, только это все делать внутри foreach ($results as $result) { И вставлять в массив - $data['products'] Извините подскажите подробнее что куда вставить, уже голову сломал. Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Fedka Опубликовано: января 30, 2017 Жалоба Поделиться Опубликовано: января 30, 2017 27 минут назад, Adems сказал: Извините подскажите подробнее что куда вставить, уже голову сломал. Открываем файл catalog\controller\product\category.php Ищем: Скрытый текст foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height')); } if (($this->config->get('config_customer_price') && $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'))); } 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'))); } else { $special = false; } if ($this->config->get('config_tax')) { $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']); } 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(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_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) ); } у меня это 205 строчка в файле. И заменяем его на: Скрытый текст foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height')); } if (($this->config->get('config_customer_price') && $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'))); } 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'))); } else { $special = false; } if ($this->config->get('config_tax')) { $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']); } else { $tax = false; } if ($this->config->get('config_review_status')) { $rating = (int)$result['rating']; } else { $rating = false; } $availability = ($result['quantity'] > 0) ? true : false; $data['products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_product_description_length')) . '..', 'availability'=> $availability, '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) ); } И в файле шаблона, Вы водим по аналогии с тем, как на странице товара выводилось...Переменная будет $product['availability'] Но конечно лучше это все эти изменения делать через oCmod, что б не было потом никаких проблем с установкой каких-либо дополнений Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Adems Опубликовано: января 30, 2017 Автор Жалоба Поделиться Опубликовано: января 30, 2017 31 минуту назад, Fedka сказал: Показать содержимое foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height')); } if (($this->config->get('config_customer_price') && $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'))); } 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'))); } else { $special = false; } if ($this->config->get('config_tax')) { $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']); } 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(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_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 ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height')); } if (($this->config->get('config_customer_price') && $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'))); } 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'))); } else { $special = false; } if ($this->config->get('config_tax')) { $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']); } else { $tax = false; } if ($this->config->get('config_review_status')) { $rating = (int)$result['rating']; } else { $rating = false; } $availability = ($result['quantity'] > 0) ? true : false; $data['products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_product_description_length')) . '..', 'availability'=> $availability, '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) ); } И в файле шаблона, Вы водим по аналогии с тем, как на странице товара выводилось...Переменная будет $product['availability'] Но конечно лучше это все эти изменения делать через oCmod, что б не было потом никаких проблем с установкой каких-либо дополнений Спасибо Большое! всё ок! Приятно с вами иметь дело. Да лучше oCmod но его же написать надо. Я в php поверхностно. Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Fedka Опубликовано: января 30, 2017 Жалоба Поделиться Опубликовано: января 30, 2017 1 час назад, Adems сказал: Спасибо Большое! всё ок! Приятно с вами иметь дело. Да лучше oCmod но его же написать надо. Я в php поверхностно. Вот нашел вроде норм сборку, как раз то что Вам нужно https://liveopencart.ru/opencart-moduli-shablony/moduli/seo/microdata-schema-org-[10-v-1] Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Adems Опубликовано: января 30, 2017 Автор Жалоба Поделиться Опубликовано: января 30, 2017 Спасибо еще раз, да то что надо, есть там конечно некоторые моменты, но индивидуально можно поправить на своё усмотрение. Возьму на вооружение. Еще раз СПАСИБО! Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сейчас и зарегистрироваться позже. Если у вас есть учётная запись, войдите, чтобы публиковать под своей учётной записью.