Kerm Posted June 7, 2012 Share Posted June 7, 2012 (edited) Проблема решена Модуль, пашет на 1.4.8.3: SpecialsCenter.zip Edited June 8, 2012 by Kerm (see edit history) Link to comment Share on other sites More sharing options...
gabdr Posted June 7, 2012 Share Posted June 7, 2012 данный модуль есть я видел в рунете Link to comment Share on other sites More sharing options...
Ronaldo Perez Posted June 7, 2012 Share Posted June 7, 2012 classes/Product.php -> getRandomSpecial $id_product = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($sql); на //$id_product = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($sql); ниже $row= ... WHERE p.id_product = '.(int)$id_product); на WHERE p.id_product IN ('.implode(', ', $ids_product).'); ниже getProductProperties на getProductsProperties ну и в шаблоне будь готов принять массив. Link to comment Share on other sites More sharing options...
Kerm Posted June 7, 2012 Author Share Posted June 7, 2012 А в шаблоне что прописать? Link to comment Share on other sites More sharing options...
Kerm Posted June 7, 2012 Author Share Posted June 7, 2012 В шаблоне bestsellers нету же параметра {foreach...., что там указывать в 'from' и 'name'? Link to comment Share on other sites More sharing options...
SPolischook Posted June 7, 2012 Share Posted June 7, 2012 Хакнутый метод вернет массив, ищи по названию метода где он используется. В blockspecials.php найдешь код: global $smarty; if (!$special = Product::getRandomSpecial((int)($params['cookie']->id_lang)) AND !Configuration::get('PS_BLOCK_SPECIALS_DISPLAY')) return; $smarty->assign(array( 'special' => $special, 'priceWithoutReduction_tax_excl' => Tools::ps_round($special['price_without_reduction'], 2), 'mediumSize' => Image::getSize('medium') )); Переменная {special} хранит в себе массив товаров по спец ценам. Link to comment Share on other sites More sharing options...
Ronaldo Perez Posted June 7, 2012 Share Posted June 7, 2012 о, Серый уже) да, чтобы было проще можешь вывести на страницу себе массив этот, добавь в blockspecials.php if (!$special = Product::getRandomSpecial((int)($params['cookie']->id_lang)) AND !Configuration::get('PS_BLOCK_SPECIALS_DISPLAY')) return; // эту строку var_export($special); и далее по аналогии с бестселлерами действуй <dl> {foreach from=$best_sellers item=product name=myLoop} <dt class="{if $smarty.foreach.myLoop.first}first_item{elseif $smarty.foreach.myLoop.last}last_item{else}item{/if}"><a href="{$product.link}" title="{$product.name|escape:'htmlall':'UTF-8'}">{$product.name|strip_tags:'UTF-8'|escape:'htmlall':'UTF-8'}</a></dt> {/foreach} </dl> {foreach from=$best_sellers item=product name=myLoop} from=$special item= пофиг, оставь продукт name=тоже пофиг,это чтобы к свойствам обращаться, можешь оставить как есть Link to comment Share on other sites More sharing options...
Kerm Posted June 7, 2012 Author Share Posted June 7, 2012 (edited) nvm Edited June 7, 2012 by Kerm (see edit history) Link to comment Share on other sites More sharing options...
Ronaldo Perez Posted June 7, 2012 Share Posted June 7, 2012 обнови страницу и смотри выше) Link to comment Share on other sites More sharing options...
Kerm Posted June 7, 2012 Author Share Posted June 7, 2012 Тут ошибка какая то, точно все правильно написано? редактор показывает по крайней мере одну ошибку что верхняя запятая где то пропущена: WHERE p.id_product IN ('.implode(', ', $ids_product).'); Link to comment Share on other sites More sharing options...
SPolischook Posted June 7, 2012 Share Posted June 7, 2012 echo запрос и быстренько в phpMyAdmin дебажить.... Link to comment Share on other sites More sharing options...
Kerm Posted June 7, 2012 Author Share Posted June 7, 2012 Да блин причем тут это, в самой строчке ошибка.. Link to comment Share on other sites More sharing options...
Kerm Posted June 7, 2012 Author Share Posted June 7, 2012 (edited) Как я понял там еще нужно убрать после закомментированной строчки (//$id_product = Db::getInstance...) вот это: if (!$id_product) return false; Но по прежнему непонятки с: WHERE p.id_product IN ('.implode(', ', $ids_product).'); Edited June 7, 2012 by Kerm (see edit history) Link to comment Share on other sites More sharing options...
Ronaldo Perez Posted June 7, 2012 Share Posted June 7, 2012 (edited) $row = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' SELECT p.*, pl.`description`, pl.`description_short`, pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`, pl.`name`, p.`ean13`, p.`upc`, i.`id_image`, il.`legend`, t.`rate` FROM `'._DB_PREFIX_.'product` p LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)($id_lang).') LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1) LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)($id_lang).') LEFT JOIN `'._DB_PREFIX_.'tax_rule` tr ON (p.`id_tax_rules_group` = tr.`id_tax_rules_group` AND tr.`id_country` = '.(int)Country::getDefaultCountryId().' AND tr.`id_state` = 0) LEFT JOIN `'._DB_PREFIX_.'tax` t ON (t.`id_tax` = tr.`id_tax`) WHERE p.id_product IN ('.implode(', ', $ids_product).')'; п.с. и да if (!$id_product) return false; надо убрать, я пропустил Edited June 7, 2012 by SergeyH (see edit history) Link to comment Share on other sites More sharing options...
Kerm Posted June 7, 2012 Author Share Posted June 7, 2012 (edited) Вставляю твою строчку и получаю ошибку на сайте: Parse error: syntax error, unexpected ';' in /var/www/user/data/www/site.ru/classes/Product.php on line 1482 Вот там такой код: $row = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' SELECT p.*, pl.`description`, pl.`description_short`, pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`, pl.`name`, p.`ean13`, p.`upc`, i.`id_image`, il.`legend`, t.`rate` FROM `'._DB_PREFIX_.'product` p LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)($id_lang).') LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1) LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)($id_lang).') LEFT JOIN `'._DB_PREFIX_.'tax_rule` tr ON (p.`id_tax_rules_group` = tr.`id_tax_rules_group` AND tr.`id_country` = '.(int)Country::getDefaultCountryId().' AND tr.`id_state` = 0) LEFT JOIN `'._DB_PREFIX_.'tax` t ON (t.`id_tax` = tr.`id_tax`) WHERE p.id_product = '.(int)$id_product); Edited June 7, 2012 by Kerm (see edit history) Link to comment Share on other sites More sharing options...
Kerm Posted June 7, 2012 Author Share Posted June 7, 2012 Вот как с твоим примером у меня выгледит кусок кода: ORDER BY RAND()'; //$id_product = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($sql); //if (!$id_product) //return false; $row = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' SELECT p.*, pl.`description`, pl.`description_short`, pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`, pl.`name`, p.`ean13`, p.`upc`, i.`id_image`, il.`legend`, t.`rate` FROM `'._DB_PREFIX_.'product` p LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)($id_lang).') LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1) LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)($id_lang).') LEFT JOIN `'._DB_PREFIX_.'tax_rule` tr ON (p.`id_tax_rules_group` = tr.`id_tax_rules_group` AND tr.`id_country` = '.(int)Country::getDefaultCountryId().' AND tr.`id_state` = 0) LEFT JOIN `'._DB_PREFIX_.'tax` t ON (t.`id_tax` = tr.`id_tax`) WHERE p.id_product IN ('.implode(', ', $ids_product).')'; return Product::getProductsProperties($id_lang, $row); } Link to comment Share on other sites More sharing options...
Kerm Posted June 7, 2012 Author Share Posted June 7, 2012 (edited) Помогло вот это: WHERE p.id_product IN ('.implode(', ', $ids_product).')'); Скобку еще в конце поставил... Страница стала отображаться, но опять с ошибками: Notice: Uninitialized string offset: 0 in /var/www/user/data/www/site.ru/classes/Product.php on line 2682 Notice: Undefined index: price_without_reduction in /var/www/user/data/www/site.ru/modules/blockspecials/blockspecials.php on line 112 Новинки На 2682 находится: if (!$row['id_product']) return false; Но если закомментировать то еще больше ошибок вылазиет.. Edited June 7, 2012 by Kerm (see edit history) Link to comment Share on other sites More sharing options...
Kerm Posted June 7, 2012 Author Share Posted June 7, 2012 (edited) В общем мне не удается вывести цену товара( Так же заметил что в блоке выводится больше товаров чем есть на самом деле...например у меня сейчас в магазине 9 товаров, а в этом блоке их 20! Проблему с ценой можно решить используя этот код: {if $product.show_price AND !isset($restricted_country_mode) AND !$PS_CATALOG_MODE}<span class="price">{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span>{/if} Но мне нужно чтобы цена именно со скидкой выводилась! Пробовал вот так: {if $special.specific_prices} {assign var='specific_prices' value=$special.specific_prices} {if $specific_prices.reduction_type == 'percentage' && ($specific_prices.from == $specific_prices.to OR ($smarty.now|date_format:'%Y-%m-%d %H:%M:%S' <= $specific_prices.to && $smarty.now|date_format:'%Y-%m-%d %H:%M:%S' >= $specific_prices.from))} <span class="price">(-{$specific_prices.reduction*100|floatval}%)</span> {/if} {/if} Т.е. как в оригинальном файле, в результате получаю: Notice: Undefined index: price_without_reduction in /var/www/user/data/www/site.ru/modules/blockspecials/blockspecials.php on line 111 и Notice: Undefined index: specific_prices in /var/www/user/data/www/site.ru/tools/smarty/compile/ebff801aaae5a8ec66d6efb86f9bf390c69732f6.file.blockspecials-shoo.tpl.php on line 52 Edited June 7, 2012 by Kerm (see edit history) Link to comment Share on other sites More sharing options...
Ronaldo Perez Posted June 7, 2012 Share Posted June 7, 2012 я не проверял что именно там вылазиет, визуально - код правильный. Нотайсы - не критические ошибки какбы, готовое решение - в личку, сделаю завтра за символическую плату Link to comment Share on other sites More sharing options...
Kerm Posted June 7, 2012 Author Share Posted June 7, 2012 (edited) А цена у тебя когда ты это делал была со скидкой там или обычная? Блин только что заметил что эти 20 товаров, в место 9, это один и тот же товар... Edited June 7, 2012 by Kerm (see edit history) Link to comment Share on other sites More sharing options...
Kerm Posted June 7, 2012 Author Share Posted June 7, 2012 Нашел возможное решение http://www.prestashop.com/forums/topic/20501-how-do-i-add-more-than-1-special-in-the-blockspecials-module/page__hl__blockspecials__st__20 днем попробую... Блин зачем они туда рендом засунули, вернее почему не сделали в админке переключение с рендома на не рендом и выбор кол-во товаров выводить(( Link to comment Share on other sites More sharing options...
Kerm Posted June 8, 2012 Author Share Posted June 8, 2012 (edited) Гррррр Notice: Undefined variable: special in /var/www/user/data/www/site.ru/modules/blockspecials/blockspecials.php on line 110 Notice: Undefined variable: specials in /var/www/user/data/www/site.ru/tools/smarty/sysplugins/smarty_internal_data.php on line 291 Edited June 8, 2012 by Kerm (see edit history) Link to comment Share on other sites More sharing options...
Kerm Posted June 8, 2012 Author Share Posted June 8, 2012 Нашел готовый модуль!!! Пашет на 1.4.8.3!!! Настраивается через админку!!! SpecialsCenter.zip 1 Link to comment Share on other sites More sharing options...
gabdr Posted June 8, 2012 Share Posted June 8, 2012 (edited) Нашел готовый модуль!!! Пашет на 1.4.8.3!!! Настраивается через админку!!! а там случаем нет модуля новинок и лидеры продаж в центре? Edited June 8, 2012 by gabdr (see edit history) Link to comment Share on other sites More sharing options...
Kerm Posted June 8, 2012 Author Share Posted June 8, 2012 (edited) Новинки и лидеры продаж в отличии от блока товаров со скидками устанавливатся в центр на много проще, там надо в пхп прописать хук home, после в низу еще хук прописать по аналогии с другим хуком, левой колонки к примеру. Да и вроде блок новинок сам по себе без каких то изменений выводится в центр..ну и в админке после добавит модули в хук home. Edited June 8, 2012 by Kerm (see edit history) Link to comment Share on other sites More sharing options...
Recommended Posts