Атрибут "цвет" на странице категорий

Автор baton94, 12 августа 2014, 02:16:26

« назад - далее »

Adik

Цитироватьв файле /config/defines.inc.php
/* Debug only */
define('_PS_MODE_DEV_', true);
define('_PS_DEBUG_PROFILING_', true
Внизу страницы будут показанны все значения переменных.
Или у каждого товара
{$product|var_dump} 

baton94

Ни с того ни с сего все заработало. Остался последний вопрос, как сделать так чтобы где надо показывалась картинка цвета, а где не надо там просто цвет фона, ну т.е. как в самом товаре происходит.

Adik

#17
Так-же как в product.tpl 
{if isset($product.colors) && $product.colors}
<ul class="colors">
{foreach from=$product.colors key='id_attribute' item='color'}
    <li><a style="background: {$color.value};" title="{$color.name}" class="color_pick">
                    {if file_exists(_PS_COL_IMG_DIR_|cat:$id_attribute|cat:'.jpg')}
            <img src="_PS_COL_IMG_DIR_{$id_attribute}.jpg" alt="{$id_attribute.name}" width="20" height="20" />
    {/if}
            </a></li>
{/foreach}
</ul>
{/if}

DarinSr

_PS_COL_IMG_DIR_
Определять в контроллере нужно. Так работать не будет.

Adik

Согласен, что-то затупил. В конроллере нужно добавить
$this->context->smarty->assign('col_img_dir', _PS_COL_IMG_DIR_);
а в шаблоне поменять
_PS_COL_IMG_DIR_
на
$col_img_dir

baton94

При попытке внести данный код цвета опять стали множаться, как раньше. И при этом внизу есть такая ошибка

Fatal error: Uncaught exception 'Exception' with message 'Serialization of 'SimpleXMLElement' is not allowed'
in .../tools/profiling/Controller.php:267 Stack trace: #0 .../tools/profiling/Controller.php(267):
serialize(Object(Context)) #1 .../tools/profiling/Controller.php(310): Controller->sizeofvar(Object(Context)) #2
.../tools/profiling/Controller.php(237): Controller->displayDebug() #3 .../classes/Dispatcher.php(349): Controller->run()
#4 .../index.php(28): DispatcherCore->dispatch() #5 {main} thrown in .../tools/profiling/Controller.php on line 267


Что это вообще за ошибка, кто-нибудь знает?

coder

Это вообще не относиться к замене шаблона.
При чем тут сериализауия XML?
Вы что-то берете их XML файла?

tigran


baton94

Цитата: coder от 13 августа 2014, 17:45:54
Это вообще не относиться к замене шаблона.
При чем тут сериализауия XML?
Вы что-то берете их XML файла?
Я понятия не имею, при включении режима отладки на страницах сайта внизу вылезает эта ошибка, вот я и подумал, что это может быть связано с тем, что цвета плодятся.

baton94

Цитата: tigran от 13 августа 2014, 17:48:38
Пофиксено в последней версии - Try to fix warning

Теперь вот такая ошибка

[PHP Recoverable error #4096] Object of class Context could not be converted to string (,,,/tools/profiling/Controller.php, line 270)

Но я так понял это все равно не относится к моей проблеме.

tigran

Похоже что есть другие проблемы с сайтом. Отключать модули нужно и проверять после каждого отключения.
Вернуть стандарные шаблоны и тоже проверить. Так можно будет установить причину.

baton94

Фишка в том, что когда я первый раз мудрил, то были такие же проблемы, но вдруг почему то все нормально стало отображаться(хотя я точно ничего не делал), но тогда не отображались картинки, а вот теперь опять та же история, но уже с картинками, т.е. сейчас опять должно что то невероятное произойти и все будет работать и с картинками.

baton94

Цвета плодиться перестали, но картинки цветов все равно не показываются, т.е. те цвета которые не просто цвета а добавлялись при помощи картинки тупо не показываются.
Делаю вот так:

1. В /controllers/front/CategoryController.php добавляю код

$this->context->smarty->assign('col_img_dir', _PS_COL_IMG_DIR_);

2. в product-list моего шаблона добавляю этот код

<ul class="colors" style="display: flex; height: 60px;">
        {foreach from=$product.colors key='id_attribute' item='color'}
                <li style="border: none;width: 25px;height: 25px; border-radius: 25px;margin: 0px 7px 0px 0px;"><span style="background: {$color.value};width: 25px;height: 25px;border-radius: 25px;border: 1px solid #9B9696;position: absolute;text-indent: -10000px;" title="{$color.name}" class="color_pick">
{if file_exists($col_img_dir|cat:$id_attribute|cat:'.jpg')}
            <img src="$col_img_dir{$id_attribute}.jpg" alt="{$id_attribute.name}" width="20" height="20" />
    {/if}
</span></li>
        {/foreach}
        </ul>


В итоге просто цвета отображаются хорошо, а цвета у которых есть картинки - нет. Все ли я делаю правильно? проверьте, пожалуйста.

coder

1. Ошибка в шаблоне
<img src="$col_img_dir{$id_attribute}.jpg" alt="{$id_attribute.name}" width="20" height="20" />
нужно вот так
<img src="{$col_img_dir}{$id_attribute}.jpg" alt="{$color.name}" width="20" height="20" />
2. Чтобы показывало не только цвета но и палитру (картинки цветов), нужно изменить в классе Product
...
if (Db::getInstance()->numRows())
{
    foreach ($attributesGroups AS $k => $rowcolo)
   {
       // Вот тут
       if (isset($rowcolo['is_color_group']) AND $rowcolo['is_color_group'] )
       {
       ....

baton94

Да!!! Наконец то все заработало)) Всем большое спасибо, очень выручили)