calvin Опубликовано 25 сентября, 2012 Жалоба Поделиться Опубликовано 25 сентября, 2012 Помогите с $product->features - хочу разобраться, как выводить характеристики товара в Yandex.phpНашёл в product.tpl такой код: {if $product->features} <!-- Характеристики товара --> <h2>Характеристики</h2> <ul class="features"> {foreach $product->features as $f} <li> <label>{$f->name}</label> <span>{$f->value}</span> </li> {/foreach} </ul> <!-- Характеристики товара (The End)--> {/if}По аналогиии добавил в Yandex.php следующие строки:if ($p->features){ foreach ($p->features as $f){ print "<param name=".htmlspecialchars($f->name).">".htmlspecialchars($f->value)."</param>"; }}Но не работает, строчка <param ... не выводится вовсе Ж8-(Помогите - что в моём коде не так? Цитата Ссылка на сообщение Поделиться на другие сайты
osben Опубликовано 25 сентября, 2012 Жалоба Поделиться Опубликовано 25 сентября, 2012 все очевидно просто, обэкт $p->features не существует Цитата Ссылка на сообщение Поделиться на другие сайты
osben Опубликовано 25 сентября, 2012 Жалоба Поделиться Опубликовано 25 сентября, 2012 по ФПИ его можно получить через $simpla->features->get_product_options(array('product_id'=>$p->id))только $p тоже должен содержать ид Цитата Ссылка на сообщение Поделиться на другие сайты
osben Опубликовано 25 сентября, 2012 Жалоба Поделиться Опубликовано 25 сентября, 2012 SELECT v.price, меняем на SELECT p.id, v.price,Надеюсь дальше сами справитесь Цитата Ссылка на сообщение Поделиться на другие сайты
calvin Опубликовано 26 сентября, 2012 Автор Жалоба Поделиться Опубликовано 26 сентября, 2012 osben, спасибо за помощьПро SELECT p.id, v.price, ... - понял где находитсяпопробую ....$simpla->features->get_product_options(array('product_id'=>$p->id))добавить перед вызовом$p->features? Цитата Ссылка на сообщение Поделиться на другие сайты
calvin Опубликовано 26 сентября, 2012 Автор Жалоба Поделиться Опубликовано 26 сентября, 2012 Я поглядел внимательнее - в этом запросе уже есть p.id, поэтому этот SELECT я оставил прежним// Товары $simpla->db->query("SELECT v.price, v.id as variant_id, p.name as product_name, v.name as variant_name, v.position as variant_position, p.id as product_id, p.url, p.annotation, pc.category_id, i.filename as image FROM __variants v LEFT JOIN __products p ON v.product_id=p.id LEFT JOIN __products_categories pc ON p.id = pc.product_id AND pc.position=(SELECT MIN(position) FROM __products_categories WHERE product_id=p.id LIMIT 1) LEFT JOIN __images i ON p.id = i.product_id AND i.position=(SELECT MIN(position) FROM __images WHERE product_id=p.id LIMIT 1) WHERE p.visible AND (v.stock >0 OR v.stock is NULL) GROUP BY v.id ORDER BY p.id, v.position ");Добавил следующий код$simpla->features->get_product_options(array('product_id'=>$p->product_id));if ($simpla->features){ foreach ($simpla->features as $f){ print "<param name=".htmlspecialchars($f->name).">".htmlspecialchars($f->value)."</param>"; }}Все равно не работает ... Цитата Ссылка на сообщение Поделиться на другие сайты
calvin Опубликовано 26 сентября, 2012 Автор Жалоба Поделиться Опубликовано 26 сентября, 2012 Вот так работает$p->features = $simpla->features->get_product_options(array('product_id'=>$p->product_id)); if ($p->features){ foreach ($p->features as $f){ print "<param name='".htmlspecialchars($f->name)."'>".htmlspecialchars($f->value)."</param> "; }}Но только 1 раз !!! - выводится в прайс-лист только один товар Видимо вызов get_product_options нарушает выполнение циклаwhile($p = $simpla->db->result())Подскажите - куда копать ??? Цитата Ссылка на сообщение Поделиться на другие сайты
calvin Опубликовано 10 октября, 2012 Автор Жалоба Поделиться Опубликовано 10 октября, 2012 Что это - нерешаемая проблема ??? Цитата Ссылка на сообщение Поделиться на другие сайты
calvin Опубликовано 15 октября, 2012 Автор Жалоба Поделиться Опубликовано 15 октября, 2012 Того, кто поможет мне добавить характеристики товара в yandex.php, готов премировать небольшой денежной премией! Цитата Ссылка на сообщение Поделиться на другие сайты
calvin Опубликовано 16 октября, 2012 Автор Жалоба Поделиться Опубликовано 16 октября, 2012 kors, спасибо за идею - использовать для вывода характеристик отдельный запрос. Присылай в личку номер своего КИВИ или ЯМ кошелька.Попробую это реализовать в ближайшее время.Не знаю, может быть это и замедлит скорость выдачи yandex.php (генерация дополнительного JOIN запроса для каждого товара в прайс-листе), но так у меня не 10000, а всего 100 товаров - думаю, что это замедление будет не существенным.Точно надо характеристики перед image и названием товара выводить? Я думал, что они в самом конце идут. Цитата Ссылка на сообщение Поделиться на другие сайты
apophis Опубликовано 28 сентября, 2017 Жалоба Поделиться Опубликовано 28 сентября, 2017 (изменено) Та же проблема, только первый товар экспортируется после добавления кода. И только если ставить перед image и vendor. $features[$p->product_id] = $simpla->features->get_product_options(array('product_id'=>$p->product_id)); if (!empty($features[$p->product_id])) { foreach($features[$p->product_id] as $feature) { unset($strrpos_count); $comma_count = strrpos($feature->name,", "); if ($comma_count) { print "<param name='".htmlspecialchars(substr($feature->name, 0, $comma_count))."' unit='".htmlspecialchars(substr($feature->name, $comma_count + 2, 999))."'>".htmlspecialchars(strip_tags(trim($feature->value)))."</param> "; } else { print "<param name='".htmlspecialchars(strip_tags(trim($feature->name)))."'>".htmlspecialchars(strip_tags(trim($feature->value)))."</param> "; } } } Суть все та же - добавить в экспорт яндекса параметры для товара. <param name="Размер экрана" unit="дюйм">27</param> <param name="Материал">алюминий</param> <param name="Wi-Fi">есть</param> Если вопрос решен, прошу помощи. Отблагодарю! Изменено 28 сентября, 2017 пользователем apophis Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.