Модуль Cataloger. Вопрос по Item

Обсуждение CMS Made Simple в России.

Moderators: iturbay, wdwp

User avatar
Fedork
Forum Members
Forum Members
Posts: 23
Joined: Wed Nov 19, 2008 11:32 am

Модуль Cataloger. Вопрос по Item

Post by Fedork »

Привет! Установил модуль Cataloger
создал необходимые категории, теперь добавляю к ним объекты. загружаю фотографии, все нормально, но когда заполняю текстовые поля с описанием - они пустые... Кто знает в чем проблема? Может дело в шаблоне Item-CSS-based

Прошу помощи!  ???
User avatar
Fedork
Forum Members
Forum Members
Posts: 23
Joined: Wed Nov 19, 2008 11:32 am

Re: Модуль Cataloger. Вопрос по Item

Post by Fedork »

Немного разобрался, получается так что нельзя поля Item заполнять на русском. Иначе в шаблоне будет такая вот ерундна {$���������}
Соответственно ничего показываться там и не будет.

Что делать?  :-[
Sonya

Re: Модуль Cataloger. Вопрос по Item

Post by Sonya »

Если ты подразумеваешь вывод, то там что-то в стандартном шаблоне было, не помню точно, нет стандартной установки под рукой
{$notes} и {$description} - по-моему чего-то не хватало.
Sonya

Re: Модуль Cataloger. Вопрос по Item

Post by Sonya »

Fedork wrote: Немного разобрался, получается так что нельзя поля Item заполнять на русском. Иначе в шаблоне будет такая вот ерундна {$���������}
Соответственно ничего показываться там и не будет.

Что делать?  :-[
Да, там есть такой баг. Поля нужно называть латынью, не используя никаких посторонних знаков, а при выводе переводить их на русский.

Code: Select all

{section name=at loop=$attrlist}
<p><strong>
{if $attrlist[at].name == 'Price'}
Цена
{/if}
{if $attrlist[at].name == 'Color'}
Цвет
{/if}
</strong>: {eval var=$attrlist[at].key}</p>
{/section}
К сожалению, модуль оказался более глючный, чем я думала в начале.  :-\
User avatar
Fedork
Forum Members
Forum Members
Posts: 23
Joined: Wed Nov 19, 2008 11:32 am

Re: Модуль Cataloger. Вопрос по Item

Post by Fedork »

Попробовал твой код, почемуто 2 раза пишется описание...  ???
Sonya

Re: Модуль Cataloger. Вопрос по Item

Post by Sonya »

{$notes} или {$description} может еще до {section} выводиться?
User avatar
Fedork
Forum Members
Forum Members
Posts: 23
Joined: Wed Nov 19, 2008 11:32 am

Re: Модуль Cataloger. Вопрос по Item

Post by Fedork »

Sonya wrote: {$notes} или {$description} может еще до {section} выводиться?
Смотрел, вроде нет...

Code: Select all

<div class="catalog_item">
<p>{$title}</p>
<div class="item_images"><img name="item_image" id="item_image" src="{$image_1_url}" alt="{$title}" title="{$title}" />
<div class="item_thumbnails">{section name=ind loop=$image_url_array}
<a href="javascript:repl('{$image_url_array[ind]}')"><img src="{$image_thumb_url_array[ind]}" title="{$title}" alt="{$title}" /></a>
{/section}</div></div>
{section name=at loop=$attrlist}
<div class="item_attribute_name">{$attrlist[at].name}:</div><div class="item_attribute_val">{eval var=$attrlist[at].key}</div>
{/section}
{literal}
<__script__ type="text/javascript">
function repl(img)
   {
   document.item_image.src=img;
   }
</__script>
{/literal}

</div>


{section name=at loop=$attrlist}
<p><strong>
{if $attrlist[at].name == 'Info'}
Инфо
{/if}
{if $attrlist[at].name == 'Price'}
Цена
{/if}
</strong>: {eval var=$attrlist[at].key}</p>
{/section}
User avatar
Fedork
Forum Members
Forum Members
Posts: 23
Joined: Wed Nov 19, 2008 11:32 am

Re: Модуль Cataloger. Вопрос по Item

Post by Fedork »

Получается так:

Info:
Ул.Демьяна бедного
Price:
1500

Инфо : Ул.Демьяна бедного

Цена : 1500
User avatar
Fedork
Forum Members
Forum Members
Posts: 23
Joined: Wed Nov 19, 2008 11:32 am

Re: Модуль Cataloger. Вопрос по Item

Post by Fedork »

Все, я ступил, я не убрал стандартный вывод

{section name=at loop=$attrlist}
{$attrlist[at].name}:{eval var=$attrlist[at].key}
{/section}

Спасибо за помощь!
User avatar
tranquility
New Member
New Member
Posts: 7
Joined: Tue Jan 06, 2009 9:48 pm

Re: Модуль Cataloger. Вопрос по Item

Post by tranquility »

Переводить поля при выводе, конечно самое быстрое решение.  :)

Но, если надо сдавать сайт заказчику, то, к сожалению, шаблоны переписывать каждый раз при изменении/добавлении атрибута - не катит  8). Необходимо, чтобы все делалось автоматом и без лишних усилий.

У меня ситуация именно такая.

Если кому нужно - решил проблему через дополнительное поле в табличке 'module_catalog_attr' (по-хорошему надо бы через дополнительную табичку, но язык на сайе один - и так сойдет  :)).

Общая идея такая: в дефолтном поле 'attribute' табличики 'module_catalog_attr' храним значение имени атрибута в транслите (допустим задаем атрибут 'Цена', тогда в 'attribute' будет 'tsena'). А в дополнительном поле ('attribute_RU') храним значение имени атрибута на русском ('Цена') и выводим это значение везде, где выводится название атрибута.

Времени, к сожалению, не очень много, так что как смогу - так опишу.

Значит по порядку:

1) изменяем табличку 'module_catalog_attr':
ALTER TABLE `module_catalog_attr` ADD `attribute_RU` VARCHAR( 255 ) NULL DEFAULT NULL ;

2) правим файл modules/Cataloger/action.adminattrs.php (правленный файл в аттаче)
3) правим файл modules/Cataloger/action.submitattrs.php (правленный файл в аттаче)
4) правим файл modules/Cataloger/contenttype.catalogitem.php, конкретнее функцию 'function PopulateParams(&$params)' (правленный файл в аттаче)
4) правим файл modules/Cataloger/Cataloger.module.php, конкретнее функцию 'function getUserAttributes($global_ref='catalog_attrs')' (правленный файл в аттаче)
5) Через админку меняем подшаблон, Cataloger->Manage Sub-templates->Item-CSS-based
нужно
{$attrlist[at].name}:{$attrlist[at].ru_name}:attr));
            if ($thisAttr->is_text)
                {
                $ret[] = array($thisAttr->attr,
                    create_textarea($wysiwyg, $this->GetPropertyValue($thisAttr->attr), $safeattr, '', $thisAttr->attr, '', $stylesheet, 80, 10));
                }
            else
                {
                $ret[] = array($thisAttr->attr,
                    'GetPropertyValue($thisAttr->attr),ENT_QUOTES).
                    '" />');
                }
      }

на вот этот:

$safeattr = strtolower(preg_replace('/\W/','', $thisAttr->attr));
            if ($thisAttr->is_text)
                {
                $ret[] = array($thisAttr->ru_name,
                    create_textarea($wysiwyg, $this->GetPropertyValue($thisAttr->attr), $safeattr, '', $thisAttr->attr, '', $stylesheet, 80, 10));
                }
            else
                {
                $ret[] = array($thisAttr->ru_name,
                    'GetPropertyValue($thisAttr->attr),ENT_QUOTES).
                    '" />');
                }
      }

ВСЁ  ;)

PS: zip-архивы заливать не дают  :o, в общем залил как files.txt, нужно переименовать в files.zip и распаковать

Update: txt-файл оказывается битым при скачивании, презалил в двух вариантах (rar и zip) с расширением pdf
Attachments

[The extension pdf has been deactivated and can no longer be displayed.]

[The extension pdf has been deactivated and can no longer be displayed.]

Last edited by tranquility on Thu Jan 08, 2009 1:07 pm, edited 1 time in total.
AlVelin
New Member
New Member
Posts: 8
Joined: Sat Dec 06, 2008 10:13 pm

Re: Модуль Cataloger. Вопрос по Item

Post by AlVelin »

К сожалению, говорит, что битый архив...  :-[не могли бы вы загрузить с другим расширением (возможно, .pdf, под которым рар с инфой для восстановления)?
ZYV
Language Partners
Language Partners
Posts: 868
Joined: Tue Nov 15, 2005 9:08 pm

Re: Модуль Cataloger. Вопрос по Item

Post by ZYV »

Че-то я не понял, зачем всё так сложно делается. Есть такой класс - Translit от PixelApes, там есть транслитератор туда/сюда однозначный. Т.е. может переводить в транслит, а потом из транслита в киррилицу однозначным образом. Таких классов вообще-то дофига, но мне нравится этот. Ну и вставляем ровно два вызова его - один - при сохранении поля в базе транслитом, если в нем присутствует киррилица (translit_moyo_pole), а второй - для обратного декодирования, если префикс у поля translit_....

А вообще надо просто посмотреть, в чем проблема - может этот самый safeatrr корежит его - и исправить.
unsigned double ZYV;
User avatar
tranquility
New Member
New Member
Posts: 7
Joined: Tue Jan 06, 2009 9:48 pm

Re: Модуль Cataloger. Вопрос по Item

Post by tranquility »

AlVelin wrote: К сожалению, говорит, что битый архив...   :-[не могли бы вы загрузить с другим расширением (возможно, .pdf, под которым рар с инфой для восстановления)?
Хм, действительно. Перезалил в исходном сообщении (http://forum.cmsmadesimple.org/index.ph ... #msg140634).
User avatar
tranquility
New Member
New Member
Posts: 7
Joined: Tue Jan 06, 2009 9:48 pm

Re: Модуль Cataloger. Вопрос по Item

Post by tranquility »

ZYV wrote: А вообще надо просто посмотреть, в чем проблема - может этот самый safeatrr корежит его - и исправить.
Проблема в том, что везде в качестве идентификаторов (БД, id и name инпутов) используется имя атрибута, соотв-но имя д.б. латиницей и без спецсимволов.
ZYV wrote: Че-то я не понял, зачем всё так сложно делается. Есть такой класс - Translit от PixelApes, там есть транслитератор туда/сюда однозначный. Т.е. может переводить в транслит, а потом из транслита в киррилицу однозначным образом. Таких классов вообще-то дофига, но мне нравится этот. Ну и вставляем ровно два вызова его - один - при сохранении поля в базе транслитом, если в нем присутствует киррилица (translit_moyo_pole), а второй - для обратного декодирования, если префикс у поля translit_....
Изначально идея была именно такая - взаимооднозначная транслитерация. Только не додумался воспользоваться готовым решением (кстати pixel-apes.com у меня пока не открывается) - полез изобретать велосипед и в итоге решил сделать по-другому. А текущее решение имеет свои преимущества:

Во-первых, не нужно подключать дополнительные классы (транслитерация делается через встроенную ф-ию munge_string_to_url()).

Во-вторых, можно использовать любые символы в имени атрибута.

Любые замечания - welcome.
ZYV
Language Partners
Language Partners
Posts: 868
Joined: Tue Nov 15, 2005 9:08 pm

Re: Модуль Cataloger. Вопрос по Item

Post by ZYV »

http://zaytsev.net/misc/translit/ - но он не единственный. Ну мне кажется так проще... :)
unsigned double ZYV;
Post Reply

Return to “Russian - русский”