Автоматическое занесение в поле seo url соответствующей строки

Тема в разделе "Общие вопросы", создана пользователем BigsS, 3 дек 2015.

  1. BigsS

    BigsS Новичок

    Сообщения:
    20
    Симпатии:
    2
    ..дело в том, что новая строка 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, порой, не соответствует нормам. Править скрипт по мере поступления вопросов - это изобретать велосипед (можно сказать нечто иное и непотребное в приличной компании). Именно поэтому и необходима помощь)
     
    Последнее редактирование: 3 дек 2015
  2. optimlab

    optimlab Продвинутый пользователь

    Сообщения:
    924
    Симпатии:
    240
  3. BigsS

    BigsS Новичок

    Сообщения:
    20
    Симпатии:
    2
    Благодарю. Буду разбираться.
     
  4. BigsS

    BigsS Новичок

    Сообщения:
    20
    Симпатии:
    2
    Нет, это не то. Ваша реализация не решает проблемы.

    Мы с вами опять занимаемся реализацией того, что уже создано.. зачем?
    Мой скрипт обрабатывает исходную строку так:
    Исходная строка: "Моя любовь, оч Страстная" обрабатывается так: "moja-ljubov-och strastnaja" (существует недопустимый пробел между "och strastnaja" . Ваш, наверно, то же самое допускает. Скрипт ОС все делает корректно. (переход в обработке от сточных к прописным)

    Я просил, по возможности, помочь с файлом ява-скррипт, который уже реализован в ОС
     
    Последнее редактирование: 3 дек 2015
  5. optimlab

    optimlab Продвинутый пользователь

    Сообщения:
    924
    Симпатии:
    240
    :eek::confused:o_O;)
    "Наверное" вам надо пожелать Успехов!)))
     
  6. BigsS

    BigsS Новичок

    Сообщения:
    20
    Симпатии:
    2
    Вы обиделись, хотя я этого не желал. И вам успехов в будущих проблемах (ваша "радость" в представленных смайликах о многом говорит). ваш скрипт повторяет мною предлагаемый - в чем обида, если я об этом прямо упомянул. Чувство собственного достоинства? да, мы приехали...
     
    Последнее редактирование: 3 дек 2015
  7. Ravilr

    Ravilr Специалист

    Сообщения:
    3.877
    Симпатии:
    1.064
    http://forum.opencart-russia.ru/threads/rekomendacii-po-oformleniju-koda-i-voprosov.460/

    естесвенно ничего не поменяется. JS скрипт работает на "лету" прямо в админке. Т.е когда вводим, он берет и изменяет значения поля. Т.е ничего не заносит в базу итд, только делает транслит.

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

    Или вам нужно просто решить проблему с пробелом?
     
  8. BigsS

    BigsS Новичок

    Сообщения:
    20
    Симпатии:
    2
    Спасибо за отклик и советы - действительно я работаю с собственным модулем. И в нем существует некая функция, которая и своими и естественными средствами движка все заносит в базу. В БД все осуществляется только средствами ОС, но есно с новыми добавками.
    . все что необходимо добавить в базу из контроллера заносится в data[]
    . /model/моя_модель содержит мой код выше
    Вот и все. более ничего не придумано. Код выше прекрасно работает, но работает топорно. Поэтому и возникла мысль вернуть к тому, что до меня люди давно уже сделали где-то......



    ... вот, опираясь на это и надо обойти, точнее "предугадать" ситуацию наличия строки БЕЗ онлайн АНАЛИЗА - то есть простым образом. Т.е.. скрипт не должен ее (инфу) анализировать на ввод - нам нужно реализовать следующее: существует ли возможность скормить скрипту уже существующую инфу в БД под именем Тайтл и вернуть ее туда как seo url.
    ТО есть прямое действие: взять тайтл - преобазовать его - вернуть в БД. все должно идти на автомате.

    Много написал, но, наверно, сумбурно..
     
    Последнее редактирование: 3 дек 2015
  9. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
    доработайте свой и все. Из php в js не обратится...
     
  10. BigsS

    BigsS Новичок

    Сообщения:
    20
    Симпатии:
    2
    Vlad, дорабатываю почти месяц руками. Вы будете удивляться склько косяков уже выловлено и сколько еще предстоит выловить.(один из нерешеннных вариатов выше представлен). Давайте становимся на совете, кот, выше :
    доработайте свой и все. Из php в js не обратится...
    ..... по моему это самый дельный совет.
    Тему для себя закрываю. Всем спасибо.
     
  11. optimlab

    optimlab Продвинутый пользователь

    Сообщения:
    924
    Симпатии:
    240
    Да нет, вы просто вот этим:
    вызвали у меня недоумение.
    Объясните как можно проглядеть вот это, да еще и с комментариями в коде:
    PHP:
        // заменям все ненужное нам на "-"
        
    $str preg_replace('~[^-a-z0-9_]+~u''-'$str);
        
    // удаляем начальные и конечные '-'
        
    $str trim($str"-");
    И не проверив работоспособность скрипта, написать то, что вы написали?
    Да, я написал ответ в виде сарказма. А как еще, если человек даже не старается?
    Тот скрипт даже не мой. Мне просто было влом писать с нуля, то что уже многократно исписано. Я ввел в гугле "транслит php", и первый же сайт мне выдал тот скрипт: http://htmlweb.ru/php/example/translit.php
    Я его просто подставил под запрос из базы и всё получилось..
     
    Последнее редактирование: 3 дек 2015