Matrix Опубликовано 4 февраля, 2011 Жалоба Поделиться Опубликовано 4 февраля, 2011 Ещё один вопрос.Хочу что бы в url автоматически добавлялся артикул (как бренд и категория)В шаблоне product.tpl есть функцияfunction set_meta(){ var category_name = item_form.category_id.options[item_form.category_id.selectedIndex].getAttribute('category_name'); var brand_name = item_form.brand_id.options[item_form.brand_id.selectedIndex].getAttribute('brand_name'); var product_name = item_form.model.value; var sku_name = ???; .................... // Url if(!url_touched) item_form.url.value = generate_url(category_name, brand_name, product_name, sku_name); }я добавил в неё параметр sku_name. А вот как из формы вытащить переменную sku я не знаю. var sku_name = ???;перепробовал кучу вариантов, но ни один из них не работает.Может кто нибудь подскажет? Цитата Ссылка на сообщение Поделиться на другие сайты
Гость Опубликовано 4 февраля, 2011 Жалоба Поделиться Опубликовано 4 февраля, 2011 Похоже вы перепутали движок. В симпле нет таких строк Цитата Ссылка на сообщение Поделиться на другие сайты
mart Опубликовано 5 февраля, 2011 Жалоба Поделиться Опубликовано 5 февраля, 2011 Денис, это в админке в редактировании product.tpl Цитата Ссылка на сообщение Поделиться на другие сайты
Гость Опубликовано 6 февраля, 2011 Жалоба Поделиться Опубликовано 6 февраля, 2011 Точно, простите, на производстве был пян Цитата Ссылка на сообщение Поделиться на другие сайты
Matrix Опубликовано 7 февраля, 2011 Автор Жалоба Поделиться Опубликовано 7 февраля, 2011 )))))))))))) с кем не бывает. А по существу вопроса какие нибудь соображения есть? Цитата Ссылка на сообщение Поделиться на другие сайты
Matrix Опубликовано 8 февраля, 2011 Автор Жалоба Поделиться Опубликовано 8 февраля, 2011 Денис, ну подскажи пожалуйста, очень надо!!! Цитата Ссылка на сообщение Поделиться на другие сайты
Гость Опубликовано 8 февраля, 2011 Жалоба Поделиться Опубликовано 8 февраля, 2011 Дело в том, что артиколов может быть несколько.Надо как-то на javascript вытащить его из этого: <ul id=product_variants class=sortable> {if $Item->variants} {foreach from=$Item->variants item=variant name=variants} <li> <div class=variant_move><img {if $Item->variants|@count<=1}style='display:none;'{/if} src='images/move.gif'></div> <div class=variant_name><input type=text name=variants[name][{$variant->variant_id}] value='{$variant->name|escape}' {if $Item->variants|@count<=1}id=first_variant_name style='display:none;'{/if}><input type=hidden name=variants[id][{$variant->variant_id}] value='{$variant->variant_id}'> <a href='#' class=add_variant id=add_multivariants {if $Item->variants|@count>1}style='display:none;'{/if}>Добавить вариант</a></div> <div class=variant_sku><input type=text name=variants[sku][{$variant->variant_id}] value='{$variant->sku|escape}'></div> <div class=variant_price><input type=text name=variants[price][{$variant->variant_id}] value='{$variant->price|escape}'></div> <div class=variant_stock><input type=text name=variants[stock][{$variant->variant_id}] value='{$variant->stock|escape}'></div> <div class=variant_delete><a {if $Item->variants|@count<=1}style='display:none;'{/if} href='#' class=delete_variant><img src='images/delete_variant.gif'></a></div> </li> {/foreach} Цитата Ссылка на сообщение Поделиться на другие сайты
mart Опубликовано 8 февраля, 2011 Жалоба Поделиться Опубликовано 8 февраля, 2011 Я Matrix'у говорил в скайпе (или асе от этом). Вся соль в том, что у товара с 1 вариантом как такового sku нету, а у товара с множеством - смысла нет делать подобное.Единственный выход - вручную дописывать sku в url после генерации по названию. Цитата Ссылка на сообщение Поделиться на другие сайты
Matrix Опубликовано 8 февраля, 2011 Автор Жалоба Поделиться Опубликовано 8 февраля, 2011 Артём, у товара с 1 вариантом sku есть, я его нормально использую в выводе товара. Только вот как его в скрипт засунуть, никак не найду решение.Думал может сам создатель знает :-)Решение нужно имеенно если вариант один, для множества не надо. Цитата Ссылка на сообщение Поделиться на другие сайты
aimatrix Опубликовано 8 февраля, 2011 Жалоба Поделиться Опубликовано 8 февраля, 2011 # MatrixВ теле функции set_meta() файла admin/templates/products.tpl вместо следующих указанных вами строк// Urlif(!url_touched) item_form.url.value = generate_url(category_name, brand_name, product_name, product_description); напишите так// Urlif (!url_touched) {/literal} {if $Item->variants && ($Item->variants|@count == 1) && $Item->variants[0]->sku} item_form.url.value = generate_url(category_name, brand_name, product_name + ' {$Item->variants[0]->sku|escape}'); {else} item_form.url.value = generate_url(category_name, brand_name, product_name); {/if} {literal}В данном случае артикул подставится в конец URL, но только если для товара этот артикул был задан. Для иных товаров URL будет обычным, то есть без артикула.Если нужно, чтобы работало для любых товаров, вне зависимости от количества вариантов в них, тогда строки напишите так// Urlif (!url_touched) {/literal} {if $Item->variants && ($Item->variants|@count >= 1) && $Item->variants[0]->sku} item_form.url.value = generate_url(category_name, brand_name, product_name + ' {$Item->variants[0]->sku|escape}'); {else} item_form.url.value = generate_url(category_name, brand_name, product_name); {/if} {literal}В этом случае в URL для многовариантых товаров попадет артикул первого варианта в списке.----------------------------------------------------Если хотите, чтобы артикул оказался в начале URL, тогда строку item_form.url.value = generate_url(category_name, brand_name, product_name + ' {$Item->variants[0]->sku|escape}');напишите так item_form.url.value = generate_url('{$Item->variants[0]->sku|escape} ' + category_name, brand_name, product_name); Цитата Ссылка на сообщение Поделиться на другие сайты
Matrix Опубликовано 9 февраля, 2011 Автор Жалоба Поделиться Опубликовано 9 февраля, 2011 не работает, вместо артикула выдаёт undefined Цитата Ссылка на сообщение Поделиться на другие сайты
aimatrix Опубликовано 9 февраля, 2011 Жалоба Поделиться Опубликовано 9 февраля, 2011 Проверил, все работает. Создаю новый товар, ввожу название, например "принтер", ввожу артикул "art0001", сохраняю. Сначала url поставился "принтер". Теперь захожу редактировать этот товар. Начинаю изменять его название, и в url сразу появляется "принтер_art0001".Возможная причина "undefined" в вашем случае - есть какие-то принципиальные изменения/отличия в коде вашего файла products.tpl, из-за чего Smarty дает "undefined" на обращение к $Item->variants[0]->sku (если из вашей реплики я правильно понял место появления ошибки).Вообще говоря, так как при создании товара ни $Item->variants, ни артикула в нем еще нет, то чтобы прикрепление артикула к url работало эффектно, нужно подключить событие onchange поля артикула у первого варианта к функции set_meta, а в ней убрать проверку условия if(!url_touched). Однако при удалении этого условия исчезнет возможность задавать url свой, автоматически не регенерируемый при изменении названия, категории, бренда, артикула товара. Цитата Ссылка на сообщение Поделиться на другие сайты
Matrix Опубликовано 9 февраля, 2011 Автор Жалоба Поделиться Опубликовано 9 февраля, 2011 вот жесть, легче вручную добавить :-) Цитата Ссылка на сообщение Поделиться на другие сайты
mart Опубликовано 9 февраля, 2011 Жалоба Поделиться Опубликовано 9 февраля, 2011 Матрикс, то что предложил АИматрикс - оно не отработает потому, что УРЛ генерится при создании товара, а массив вариантов есть только при редактировании. Чтобы работало так как Вы хотите - надо переписать функцию генерации... Дело в том, что она отрабатывает после ввода названия, а вариант находятся уже после этого названия.Если очень-очень надо - напишите мне в асю или скайп - решим проблему за вознаграждение (работа такая). Цитата Ссылка на сообщение Поделиться на другие сайты
Matrix Опубликовано 9 февраля, 2011 Автор Жалоба Поделиться Опубликовано 9 февраля, 2011 да это в общем то не проблема, просто захотелось сделать так. но раз это так сложно, то обойдусь. всем спасибо. Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.