..дело в том, что новая строка url не заносится автоматически в соответствующее поле. Тайтл товара в случае формирования сответ строки сео-урл обрабатывается только в том случае, если товар добавляется "руками" в карточке заказа. Пример: добавляю товар, минуя админку, автоматом, непосредственно в БД, не затрагивая поля keyword в таблице url_alias . Открываю в админке добавленный товар и ничего не изменяя там (вообще ничего больше не делая) вновь его сохраняю. После этой манипуляции поле keyword в таблице url_alias остается пустым. Можно при редактировании вносить любые изменения любых характеристик товара, но если при этом не затрагивать поле тайтла, но "заветный сео-урл" в БД не появится. Решил напрямую в БД добавлять и соот. урл. Тут все почти без проблем, за исключением того, что не могу использовать уже имеющийся в ОС translit.js (просто не знаю как это реализовать). Добавляю так: if (isset($data['keyword'])) { $this->db->query("INSERT INTO " . DB_PREFIX . "url_alias SET query = 'product_id=" . (int)$product_id . "', keyword = '" . $this->db->escape($data['keyword']) . "'"); } else { $tr = array ("А"=>"a","Б"=>"b","В"=>"v","Г"=>"g","Д"=>"d","Е"=>"e","Ж"=>"zh","З"=>"z","И"=>"i","Й"=>"j","К"=>"k","Л"=>"l", "М"=>"m","Н"=>"n","О"=>"o","П"=>"p","Р"=>"r","С"=>"s","Т"=>"t","У"=>"u","Ф"=>"f","Х"=>"h","Ц"=>"ts","Ч"=>"ch", "Ш"=>"sh","Щ"=>"sch","Ъ"=>"","Ы"=>"y","Ь"=>"","Э"=>"e","Ю"=>"yu","Я"=>"ja","а"=>"a","б"=>"b","в"=>"v","г"=>"g", "д"=>"d","е"=>"e","ж"=>"j","з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l","м"=>"m","н"=>"n","о"=>"o","п"=>"p", "р"=>"r","с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h","ц"=>"ts","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"y","ы"=>"yi", "ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya","."=>""," "=>"-","?"=>"","/"=>"-","\\"=>"-","("=>"",")"=>"",","=>"",":"=>"","*"=>"-", ">"=>"-","|"=>"-","'"=>"","-"=>"","»"=>"","«"=>"","…"=>""); $my_seo_url = strtr($value['name'] ,$tr); $seo_url = $product_id . '-' . $my_seo_url; $this->db->query("INSERT INTO " . DB_PREFIX . "url_alias SET query = 'product_id=" . (int)$product_id . "', keyword = '" . $seo_url . "'"); } (не смог найти в вашем редакторе функции добавления кода) Вопрос мой заключается в том, как в моем случае использовать не "мой" костыль, а translit.js (костыль функционален лишь на стадии примитива. Строка url, порой, не соответствует нормам. Править скрипт по мере поступления вопросов - это изобретать велосипед (можно сказать нечто иное и непотребное в приличной компании). Именно поэтому и необходима помощь)
Нет, это не то. Ваша реализация не решает проблемы. Мы с вами опять занимаемся реализацией того, что уже создано.. зачем? Мой скрипт обрабатывает исходную строку так: Исходная строка: "Моя любовь, оч Страстная" обрабатывается так: "moja-ljubov-och strastnaja" (существует недопустимый пробел между "och strastnaja" . Ваш, наверно, то же самое допускает. Скрипт ОС все делает корректно. (переход в обработке от сточных к прописным) Я просил, по возможности, помочь с файлом ява-скррипт, который уже реализован в ОС
Вы обиделись, хотя я этого не желал. И вам успехов в будущих проблемах (ваша "радость" в представленных смайликах о многом говорит). ваш скрипт повторяет мною предлагаемый - в чем обида, если я об этом прямо упомянул. Чувство собственного достоинства? да, мы приехали...
http://forum.opencart-russia.ru/threads/rekomendacii-po-oformleniju-koda-i-voprosov.460/ естесвенно ничего не поменяется. JS скрипт работает на "лету" прямо в админке. Т.е когда вводим, он берет и изменяет значения поля. Т.е ничего не заносит в базу итд, только делает транслит. Если вы добавляете товары не через админку, вам нужно реализовать транслит в своем модуле (приложении). Если вы расскажете как добавляете товар, то думаю быстрее найдем решение. Или вам нужно просто решить проблему с пробелом?
Спасибо за отклик и советы - действительно я работаю с собственным модулем. И в нем существует некая функция, которая и своими и естественными средствами движка все заносит в базу. В БД все осуществляется только средствами ОС, но есно с новыми добавками. . все что необходимо добавить в базу из контроллера заносится в data[] . /model/моя_модель содержит мой код выше Вот и все. более ничего не придумано. Код выше прекрасно работает, но работает топорно. Поэтому и возникла мысль вернуть к тому, что до меня люди давно уже сделали где-то...... ... вот, опираясь на это и надо обойти, точнее "предугадать" ситуацию наличия строки БЕЗ онлайн АНАЛИЗА - то есть простым образом. Т.е.. скрипт не должен ее (инфу) анализировать на ввод - нам нужно реализовать следующее: существует ли возможность скормить скрипту уже существующую инфу в БД под именем Тайтл и вернуть ее туда как seo url. ТО есть прямое действие: взять тайтл - преобазовать его - вернуть в БД. все должно идти на автомате. Много написал, но, наверно, сумбурно..
Vlad, дорабатываю почти месяц руками. Вы будете удивляться склько косяков уже выловлено и сколько еще предстоит выловить.(один из нерешеннных вариатов выше представлен). Давайте становимся на совете, кот, выше : доработайте свой и все. Из php в js не обратится... ..... по моему это самый дельный совет. Тему для себя закрываю. Всем спасибо.
Да нет, вы просто вот этим: вызвали у меня недоумение. Объясните как можно проглядеть вот это, да еще и с комментариями в коде: PHP: // заменям все ненужное нам на "-" $str = preg_replace('~[^-a-z0-9_]+~u', '-', $str); // удаляем начальные и конечные '-' $str = trim($str, "-"); И не проверив работоспособность скрипта, написать то, что вы написали? Да, я написал ответ в виде сарказма. А как еще, если человек даже не старается? Тот скрипт даже не мой. Мне просто было влом писать с нуля, то что уже многократно исписано. Я ввел в гугле "транслит php", и первый же сайт мне выдал тот скрипт: http://htmlweb.ru/php/example/translit.php Я его просто подставил под запрос из базы и всё получилось..