Foх Опубликовано 27 февраля, 2017 Жалоба Поделиться Опубликовано 27 февраля, 2017 Добрый день! Подскажите как вытащить свойства у товара на главной и в каталоге. По форуму рыскал, но что то ничего на нашел. Есть только запись что нужно править View и ProductsView Цитата Ссылка на сообщение Поделиться на другие сайты
Smartycms Опубликовано 27 февраля, 2017 Жалоба Поделиться Опубликовано 27 февраля, 2017 (изменено) /view/ProductsView.php заменить $properties = $this->features->get_options(array('product_id'=>$products_ids)); foreach($properties as $property) $products[$property->product_id]->options[] = $property; */ на /* $properties = $this->features->get_options(array('product_id'=>$products_ids)); foreach($properties as $property) $products[$property->product_id]->options[] = $property; */ Вот и все. Теперь в шаблон products.tpl в нужное место пишем: {if $product->options} <!-- Характеристики товара --> <ul class="features"> {foreach $product->options as $f} <li> <label>{$f->name}</label> <span>{$f->value}</span> </li> {/foreach} </ul> <!-- Характеристики товара (The End)--> {/if} Вывод характеристик (свойств) товара на главную страницу 1. В блок Рекомендуемые товары:Открываем на фтп файл /view/View.php, находим функцию get_featured_products_plugin и в нее вставляем: $properties = $this->features->get_product_options($products_ids); foreach($properties as $property) { $products[$property->product_id]->options[] = $property; }Я вставил на 208 строку. 2. В блок Новинки:Открываем тот же файл (/view/View.php), находим функцию get_new_products_plugin и в нее вставляем: $properties = $this->features->get_product_options($products_ids); foreach($properties as $property) { $products[$property->product_id]->options[] = $property; }Я вставил на 254 строку (без учета вставки кода в рекомендуемые товары). 3. В блок Акционные товары:Все тот же файл /view/View.php, находим функцию get_discounted_products_plugin, вставляем в нее код: $properties = $this->features->get_product_options($products_ids); foreach($properties as $property) { $products[$property->product_id]->options[] = $property; }Я вставил на 299 строку кода (без учета 2-х предыдущих правок). В шаблоне main.tpl в нужное место (в блок Рекомендуемые товары, Новинки или Акционные товары, а можно сразу во все) добавляем следующий код: {if $product->options} <!-- Характеристики товара --> <ul class="features"> {foreach $product->options as $f} <li> <label>{$f->name}</label> <span>{$f->value}</span> </li> {/foreach} </ul> <!-- Характеристики товара (The End)--> {/if}А если хотите выбирать свойства, которые выводить у товара, а которые нет прямо из админки - пишите, есть такая доработка, 20$. Изменено 27 февраля, 2017 пользователем smartycms Цитата Ссылка на сообщение Поделиться на другие сайты
Foх Опубликовано 27 февраля, 2017 Автор Жалоба Поделиться Опубликовано 27 февраля, 2017 (изменено) /view/ProductsView.php заменить $properties = $this->features->get_options(array('product_id'=>$products_ids)); foreach($properties as $property) $products[$property->product_id]->options[] = $property; */ на /* $properties = $this->features->get_options(array('product_id'=>$products_ids)); foreach($properties as $property) $products[$property->product_id]->options[] = $property; */ Вот и все. Теперь в шаблон products.tpl в нужное место пишем: {if $product->options} <!-- Характеристики товара --> <ul class="features"> {foreach $product->options as $f} <li> <label>{$f->name}</label> <span>{$f->value}</span> </li> {/foreach} </ul> <!-- Характеристики товара (The End)--> {/if} Вывод характеристик (свойств) товара на главную страницу 1. В блок Рекомендуемые товары:Открываем на фтп файл /view/View.php, находим функцию get_featured_products_plugin и в нее вставляем: $properties = $this->features->get_product_options($products_ids); foreach($properties as $property) { $products[$property->product_id]->options[] = $property; }Я вставил на 208 строку. 2. В блок Новинки:Открываем тот же файл (/view/View.php), находим функцию get_new_products_plugin и в нее вставляем: $properties = $this->features->get_product_options($products_ids); foreach($properties as $property) { $products[$property->product_id]->options[] = $property; }Я вставил на 254 строку (без учета вставки кода в рекомендуемые товары). 3. В блок Акционные товары:Все тот же файл /view/View.php, находим функцию get_discounted_products_plugin, вставляем в нее код: $properties = $this->features->get_product_options($products_ids); foreach($properties as $property) { $products[$property->product_id]->options[] = $property; }Я вставил на 299 строку кода (без учета 2-х предыдущих правок). В шаблоне main.tpl в нужное место (в блок Рекомендуемые товары, Новинки или Акционные товары, а можно сразу во все) добавляем следующий код: {if $product->options} <!-- Характеристики товара --> <ul class="features"> {foreach $product->options as $f} <li> <label>{$f->name}</label> <span>{$f->value}</span> </li> {/foreach} </ul> <!-- Характеристики товара (The End)--> {/if} А если хотите выбирать свойства, которые выводить у товара, а которые нет прямо из админки - пишите, есть такая доработка, 20$. В productsview данная строка закомментированна, но свойства не выводятся. На главной тоже не выводятся. Стандартная симпла 2.3.7 Изменено 27 февраля, 2017 пользователем Foх Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 27 февраля, 2017 Жалоба Поделиться Опубликовано 27 февраля, 2017 /view/ProductsView.php А если хотите выбирать свойства, которые выводить у товара, а которые нет прямо из админки - пишите, есть такая доработка, 20$. вот нахрена было копипастить решение для главной из топика http://forum.simplacms.ru/topic/9252-вывод-характеристик-в-maintpl/?p=69248 а решение для каталога вообще не правильное. там как было закомментирована часть кода отвечающая за свойства так и осталась. меняем закомментированную часть кода на такую-же Цитата Ссылка на сообщение Поделиться на другие сайты
Smartycms Опубликовано 27 февраля, 2017 Жалоба Поделиться Опубликовано 27 февраля, 2017 вот нахрена было копипастить решение для главной из топика http://forum.simplacms.ru/topic/9252-вывод-характеристик-в-maintpl/?p=69248 а решение для каталога вообще не правильное. там как было закомментирована часть кода отвечающая за свойства так и осталась. меняем закомментированную часть кода на такую-же Да с productsview наоборот, закомментированную заменить.А копипастил не с топика, а с сайта webkab Цитата Ссылка на сообщение Поделиться на другие сайты
Foх Опубликовано 27 февраля, 2017 Автор Жалоба Поделиться Опубликовано 27 февраля, 2017 вот нахрена было копипастить решение для главной из топика http://forum.simplacms.ru/topic/9252-вывод-характеристик-в-maintpl/?p=69248 а решение для каталога вообще не правильное. там как было закомментирована часть кода отвечающая за свойства так и осталась. меняем закомментированную часть кода на такую-жеСпасибо большое Мишаня. Цитата Ссылка на сообщение Поделиться на другие сайты
Foх Опубликовано 27 февраля, 2017 Автор Жалоба Поделиться Опубликовано 27 февраля, 2017 вот нахрена было копипастить решение для главной из топика http://forum.simplacms.ru/topic/9252-вывод-характеристик-в-maintpl/?p=69248 а решение для каталога вообще не правильное. там как было закомментирована часть кода отвечающая за свойства так и осталась. меняем закомментированную часть кода на такую-жеа свойства связанных (похожих товаров) можно вывести в product.tpl?? Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 27 февраля, 2017 Жалоба Поделиться Опубликовано 27 февраля, 2017 (изменено) а свойства связанных (похожих товаров) можно вывести в product.tpl?? ну почему не пользуетесь поиском. есть же http://forum.simplacms.ru/topic/12033-%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4-%D1%81%D0%B2%D0%BE%D0%B9%D1%81%D1%82%D0%B2-%D0%B2-%D1%81%D0%B2%D1%8F%D0%B7%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%B0%D1%85/ Изменено 27 февраля, 2017 пользователем mishanya Цитата Ссылка на сообщение Поделиться на другие сайты
Foх Опубликовано 27 февраля, 2017 Автор Жалоба Поделиться Опубликовано 27 февраля, 2017 ну почему не пользуетесь поиском. есть же http://forum.simplacms.ru/topic/12033-%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4-%D1%81%D0%B2%D0%BE%D0%B9%D1%81%D1%82%D0%B2-%D0%B2-%D1%81%D0%B2%D1%8F%D0%B7%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%B0%D1%85/Спасибо! Искал, но видно где то пропустил. Цитата Ссылка на сообщение Поделиться на другие сайты
artbe Опубликовано 15 августа, 2017 Жалоба Поделиться Опубликовано 15 августа, 2017 (изменено) Данное решение (вывод свойств на главной) не работает на версии 2.3.8. Изменено 15 августа, 2017 пользователем artbe Цитата Ссылка на сообщение Поделиться на другие сайты
Kami Опубликовано 15 августа, 2017 Жалоба Поделиться Опубликовано 15 августа, 2017 Данное решение (вывод свойств на главной) не работает на версии 2.3.8. Все работает, проверяйте внимательно. Цитата Ссылка на сообщение Поделиться на другие сайты
artbe Опубликовано 15 августа, 2017 Жалоба Поделиться Опубликовано 15 августа, 2017 (изменено) Все работает, проверяйте внимательно. Проверял перед написание предыдущего сообщения. На чистой simpla без доработок. Свойства на главной странице не выводятся Изменено 15 августа, 2017 пользователем artbe Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 15 августа, 2017 Жалоба Поделиться Опубликовано 15 августа, 2017 покажите view/View.php Цитата Ссылка на сообщение Поделиться на другие сайты
artbe Опубликовано 17 августа, 2017 Жалоба Поделиться Опубликовано 17 августа, 2017 покажите view/View.php <?PHP /** * Simpla CMS * * @copyright 2011 Denis Pikusov * @link http://simp.la * @author Denis Pikusov * * Базовый класс для всех View * */ require_once('api/Simpla.php'); class View extends Simpla { /* Смысл класса в доступности следующих переменных в любом View */ public $currency; public $currencies; public $user; public $group; public $page; /* Класс View похож на синглтон, храним статически его инстанс */ private static $view_instance; public function __construct() { parent::__construct(); // Если инстанс класса уже существует - просто используем уже существующие переменные if(self::$view_instance) { $this->currency = &self::$view_instance->currency; $this->currencies = &self::$view_instance->currencies; $this->user = &self::$view_instance->user; $this->group = &self::$view_instance->group; $this->page = &self::$view_instance->page; } else { // Сохраняем свой инстанс в статической переменной, // чтобы в следующий раз использовать его self::$view_instance = $this; // Все валюты $this->currencies = $this->money->get_currencies(array('enabled'=>1)); // Выбор текущей валюты if($currency_id = $this->request->get('currency_id', 'integer')) { $_SESSION['currency_id'] = $currency_id; header("Location: ".$this->request->url(array('currency_id'=>null))); } // Берем валюту из сессии if(isset($_SESSION['currency_id'])) $this->currency = $this->money->get_currency($_SESSION['currency_id']); // Или первую из списка else $this->currency = reset($this->currencies); // Пользователь, если залогинен if(isset($_SESSION['user_id'])) { $u = $this->users->get_user(intval($_SESSION['user_id'])); if($u && $u->enabled) { $this->user = $u; $this->group = $this->users->get_group($this->user->group_id); } } // Текущая страница (если есть) $subdir = substr(dirname(dirname(__FILE__)), strlen($_SERVER['DOCUMENT_ROOT'])); $page_url = trim(substr($_SERVER['REQUEST_URI'], strlen($subdir)),"/"); if(strpos($page_url, '?') !== false) $page_url = substr($page_url, 0, strpos($page_url, '?')); $this->page = $this->pages->get_page((string)$page_url); $this->design->assign('page', $this->page); // Передаем в дизайн то, что может понадобиться в нем $this->design->assign('currencies', $this->currencies); $this->design->assign('currency', $this->currency); $this->design->assign('user', $this->user); $this->design->assign('group', $this->group); $this->design->assign('config', $this->config); $this->design->assign('settings', $this->settings); // Настраиваем плагины для смарти $this->design->smarty->registerPlugin("function", "get_posts", array($this, 'get_posts_plugin')); $this->design->smarty->registerPlugin("function", "get_brands", array($this, 'get_brands_plugin')); $this->design->smarty->registerPlugin("function", "get_browsed_products", array($this, 'get_browsed_products')); $this->design->smarty->registerPlugin("function", "get_featured_products", array($this, 'get_featured_products_plugin')); $this->design->smarty->registerPlugin("function", "get_new_products", array($this, 'get_new_products_plugin')); $this->design->smarty->registerPlugin("function", "get_discounted_products", array($this, 'get_discounted_products_plugin')); } } /** * * Отображение * */ function fetch() { return false; } /** * * Плагины для смарти * */ public function get_posts_plugin($params, &$smarty) { if(!isset($params['visible'])) $params['visible'] = 1; if(!empty($params['var'])) $smarty->assign($params['var'], $this->blog->get_posts($params)); } public function get_brands_plugin($params, &$smarty) { if(!isset($params['visible'])) $params['visible'] = 1; if(!empty($params['var'])) $smarty->assign($params['var'], $this->brands->get_brands($params)); } public function get_browsed_products($params, &$smarty) { if(!empty($_COOKIE['browsed_products'])) { $browsed_products_ids = explode(',', $_COOKIE['browsed_products']); $browsed_products_ids = array_reverse($browsed_products_ids); if(isset($params['limit'])) $browsed_products_ids = array_slice($browsed_products_ids, 0, $params['limit']); $products = array(); foreach($this->products->get_products(array('id'=>$browsed_products_ids, 'visible'=>1)) as $p) $products[$p->id] = $p; $browsed_products_images = $this->products->get_images(array('product_id'=>$browsed_products_ids)); foreach($browsed_products_images as $browsed_product_image) if(isset($products[$browsed_product_image->product_id])) $products[$browsed_product_image->product_id]->images[] = $browsed_product_image; foreach($browsed_products_ids as $id) { if(isset($products[$id])) { if(isset($products[$id]->images[0])) $products[$id]->image = $products[$id]->images[0]; $result[] = $products[$id]; } } $smarty->assign($params['var'], $result); } } public function get_featured_products_plugin($params, &$smarty) { if(!isset($params['visible'])) $params['visible'] = 1; $params['featured'] = 1; if(!empty($params['var'])) { foreach($this->products->get_products($params) as $p) $products[$p->id] = $p; if(!empty($products)) { // id выбраных товаров $products_ids = array_keys($products); // Выбираем варианты товаров $variants = $this->variants->get_variants(array('product_id'=>$products_ids, 'in_stock'=>true)); // Для каждого варианта foreach($variants as &$variant) { // добавляем вариант в соответствующий товар $products[$variant->product_id]->variants[] = $variant; } // Выбираем изображения товаров $images = $this->products->get_images(array('product_id'=>$products_ids)); foreach($images as $image) $products[$image->product_id]->images[] = $image; foreach($products as &$product) { if(isset($product->variants[0])) $product->variant = $product->variants[0]; if(isset($product->images[0])) $product->image = $product->images[0]; } } $properties = $this->features->get_product_options($products_ids); foreach($properties as $property) { $products[$property->product_id]->options[] = $property; } $smarty->assign($params['var'], $products); } } public function get_new_products_plugin($params, &$smarty) { if(!isset($params['visible'])) $params['visible'] = 1; if(!isset($params['sort'])) $params['sort'] = 'created'; if(!empty($params['var'])) { foreach($this->products->get_products($params) as $p) $products[$p->id] = $p; if(!empty($products)) { // id выбраных товаров $products_ids = array_keys($products); // Выбираем варианты товаров $variants = $this->variants->get_variants(array('product_id'=>$products_ids, 'in_stock'=>true)); // Для каждого варианта foreach($variants as &$variant) { // добавляем вариант в соответствующий товар $products[$variant->product_id]->variants[] = $variant; } // Выбираем изображения товаров $images = $this->products->get_images(array('product_id'=>$products_ids)); foreach($images as $image) $products[$image->product_id]->images[] = $image; foreach($products as &$product) { if(isset($product->variants[0])) $product->variant = $product->variants[0]; if(isset($product->images[0])) $product->image = $product->images[0]; } } $properties = $this->features->get_product_options($products_ids); foreach($properties as $property) { $products[$property->product_id]->options[] = $property; } $smarty->assign($params['var'], $products); } } public function get_discounted_products_plugin($params, &$smarty) { if(!isset($params['visible'])) $params['visible'] = 1; $params['discounted'] = 1; if(!empty($params['var'])) { foreach($this->products->get_products($params) as $p) $products[$p->id] = $p; if(!empty($products)) { // id выбраных товаров $products_ids = array_keys($products); // Выбираем варианты товаров $variants = $this->variants->get_variants(array('product_id'=>$products_ids, 'in_stock'=>true)); // Для каждого варианта foreach($variants as &$variant) { // добавляем вариант в соответствующий товар $products[$variant->product_id]->variants[] = $variant; } // Выбираем изображения товаров $images = $this->products->get_images(array('product_id'=>$products_ids)); foreach($images as $image) $products[$image->product_id]->images[] = $image; foreach($products as &$product) { if(isset($product->variants[0])) $product->variant = $product->variants[0]; if(isset($product->images[0])) $product->image = $product->images[0]; } } $properties = $this->features->get_product_options($products_ids); foreach($properties as $property) { $products[$property->product_id]->options[] = $property; } $smarty->assign($params['var'], $products); } } } View.php Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 17 августа, 2017 Жалоба Поделиться Опубликовано 17 августа, 2017 ... а в шаблоне как выводите Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.