ФорумПрограммированиеPHP для идиотов → Замена ссылок на другие

Замена ссылок на другие

  • developer

    Сообщения: 241 Репутация: N Группа: Кто попало

    Spritz 10 декабря 2009 г. 19:44

    Не знаю знаком ли кто нибудь с модулем Ultimate SEO URLs для OSCommerce, он заменяет все ссылки в магазине с product_info.php?products_id=61 на nazvanie-producta-p-61.html

    Делаю по аналогии модуль для Shop-Script'a Premium, в принципе наваял вывод такого вида: доп. характеристика - название - p - id_товара.html (пример: Bridgestone-Hakkapelita-M728-p-116.html), но столкнулся с проблеммой замены url'ов в самом магазине.

    Грубо говоря понимаю что нужно парсить и заменять старые урл. на новые. Опять же проблемма стоит в том чтобы из каждого спарсеного url'а выделять id товара, для того чтобы из базы вытащить нужные данные и потом уже заменить урл'ы на свои.

    Прошу помощи в направлении куда копать, бо я в замешательстве :(
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz 11 декабря 2009 г. 0:48, спустя 5 часов 4 минуты 46 секунд

    developer, Элементрано:
    получаеш весь адрес с серверной переменной $_SERVER['REQUEST_URI'] и explode'ш его с разделителем "слеш".
    После этого второй элемент в полученном массиве и будет указанное тобою сокращение. Ты его уже explode'ш, только на сей раз разделитель берешь как тире "-".
    Полученный массив переворачиваешь, и первый элемент будет АйДишкой, второй указывает на тип получаемых данных ("p" - продукт, "c" - категория и т.д.). Ну и остальное в этом массиве - это модель, либо прочее, из чего ты и создавал сам УРЛ :).
  • developer

    Сообщения: 241 Репутация: N Группа: Кто попало

    Spritz 11 декабря 2009 г. 10:28, спустя 9 часов 39 минут 17 секунд

    это понятно, но как быть если на странице index.php?categoryID=79
    выводится список товаров:
    index.php?productID=116
    index.php?productID=117
    index.php?productID=118
    И их все нужно заменить?
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 11 декабря 2009 г. 10:35, спустя 7 минут 28 секунд

    я юзаю регекспы для чпу, как в джанге


    urlpatterns = patterns('',
    (r'^index.php?productID=([0-9]{1,5})$', product),
    )
    # или можно получить GET… кому что



    <?php
    Panjo::url('^index.php?productID=(?<id>\d+)$', 'product');
    Спустя 69 сек.
    таким образом можно любые вызовы завязать на один вью

    <?php
    Panjo::url('^index.php?productID=(?<id>\d+)$', 'product');
    Panjo::url('^/product/(?<id>\d+)/$', 'product');
    adw/0
  • developer

    Сообщения: 241 Репутация: N Группа: Кто попало

    Spritz 11 декабря 2009 г. 10:42, спустя 7 минут 6 секунд

    ob_start();

    …. тело index.php

    $re = array("'index.php\?productID=([0-9]*)'");
    $out = array("-p-\\1.html");

    $contents = ob_get_contents();
    ob_end_clean();

    print preg_replace($re,$out,$contents);


    идет замена, а вот отделить всё что после productID= не могу, это нужно для того чтобы я мог выгрузить в него транслит названия и марки для прописания перед -p-
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 11 декабря 2009 г. 10:47, спустя 4 минуты 25 секунд

    developer, типа сначала формировать ссылки вида

    index.php?productID=116
    index.php?productID=117
    index.php?productID=118

    а потом их заменять? И так каждый раз? Oo
    adw/0
  • developer

    Сообщения: 241 Репутация: N Группа: Кто попало

    Spritz 11 декабря 2009 г. 10:57, спустя 9 минут 48 секунд


    developer, типа сначала формировать ссылки вида

    index.php?productID=116
    index.php?productID=117
    index.php?productID=118

    а потом их заменять? И так каждый раз? Oo

    они уже сформированы :( скрипт сам их формирует.
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 11 декабря 2009 г. 11:07, спустя 10 минут 46 секунд

    developer, хы) вопрос знакомый. на серче топик видел седня
    Спустя 81 сек.
    зы: иногда проще "пройтись гребенкой чем снова вспахать поле" (с) дуд (с) конечно же он.

    я за то, чтобы тоже регуляркой пофиксить ссылки и все :)
    Сапожник без сапог
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 11 декабря 2009 г. 11:08, спустя 29 секунд

    developer, а скрипт этот нельзя сразу переписать? Или накладно?
    adw/0
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 11 декабря 2009 г. 11:08, спустя 25 секунд


    developer, а скрипт этот нельзя сразу переписать? Или накладно?
    это инет магазин 90%
    Сапожник без сапог
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 11 декабря 2009 г. 11:09, спустя 1 минуту 2 секунды


    developer, хы) вопрос знакомый. на серче топик видел седня
    тебя же там уволили, херли там еще делать :) я вообще там 1-2 раза появлялся, там сброд уровня phpforum
    Спустя 30 сек.


    developer, а скрипт этот нельзя сразу переписать? Или накладно?
    это инет магазин 90%
    ну у меня тоже магазин, только на своем движке :)
    adw/0
  • developer

    Сообщения: 241 Репутация: N Группа: Кто попало

    Spritz 11 декабря 2009 г. 11:17, спустя 8 минут 2 секунды


    developer, хы) вопрос знакомый. на серче топик видел седня
    Спустя 81 сек.
    зы: иногда проще "пройтись гребенкой чем снова вспахать поле" (с) дуд (с) конечно же он.

    я за то, чтобы тоже регуляркой пофиксить ссылки и все :)


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

    да, скрипт магазина. сейчас конечно посижу попробую в самом магазине дописать транслитерацию и вывод в шаблон смарти нужного кода (название-производитель), а в самих шаблонах в ручную поменяю index.php?productID={$product_info.productID} на {$seo}-p-{$product_info.productID}.html

    правда пока не знаю как, ибо не могу найти то место где происходит выборка товаров из базы и формирование $product_info.productID
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 11 декабря 2009 г. 11:21, спустя 4 минуты 1 секунду

    phpdude, ну раз ты за способ с регуляркой, то помоги ТСу
    adw/0
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 11 декабря 2009 г. 11:26, спустя 4 минуты 22 секунды


    phpdude, ну раз ты за способ с регуляркой, то помоги ТСу
    я помог :)

    сказал куда читать =)
    Сапожник без сапог
  • developer

    Сообщения: 241 Репутация: N Группа: Кто попало

    Spritz 11 декабря 2009 г. 13:10, спустя 1 час 44 минуты 33 секунды

    можно ещё так в шаблонах: {$product_info.name|regex_replace:"/[ ]/":"_"}-p-{$product_info.productID}.html

    но вот как транслит делать пока не нашёл

Пожалуйста, авторизуйтесь, чтобы написать комментарий!