Уникальный url для каждого размера

Добрый день!
Подскажите пожалуйста в какую сторону копать.

Нужно что бы при выборе размера товара менялся url, ну и при переходе по этому урлу я попадал на страницу товара с уже выбранным размером.
Дай Бог здоровья тому кто поможет (:
Artem
02 августа 2015, 11:27
modx.pro
2
955
0

Комментарии: 2

Ганин Роман
02 августа 2015, 15:06
+2
Можно решить с помощью GET-параметров, это исключит дублирование страниц товаров, отличающихся друг от друга значением, например, выпадающего списка. А в нём уже (в выпадающем списке) проверяете наличие этого параметра, например, если используете pdoTools c fastParsers:

url: mysite.com/items/item100500?size=XXL

<label for="size">Размер:</label>
<select name="size" id="size">
  <option value="S"    [[#GET.size:is=`S`:then=`selected`:else=``]]    >S</option>
  <option value="M"    [[#GET.size:is=`M`:then=`selected`:else=``]]    >M</option>
  <option value="L"    [[#GET.size:is=`L`:then=`selected`:else=``]]    >L</option>
  <option value="XL"   [[#GET.size:is=`XL`:then=`selected`:else=``]]   >XL</option>
  <option value="XXL"  [[#GET.size:is=`XXL`:then=`selected`:else=``]]  >XXL</option>
  <option value="XXXL" [[#GET.size:is=`XXXL`:then=`selected`:else=``]] >XXXL</option>
</select>
Только добавьте проверку на JS поддержки window.history. Если поддерживает, меняете URL в адресной строке без перезагрузки страницы, если нет — просто window.location.href на новый адрес при изменении значения выпадающего списка.
    Ivan Shvindin
    02 августа 2015, 15:13
    0
    Связями реалиpуется, выводить как-нибудь так, может потом как-нибудь зарефакторю в более приличное состояние)

    <select name="options[color]" onchange="this.options[this.selectedIndex].value && (window.location = this.options[this.selectedIndex].value);">
      [[msOptions?name=`color` &tplOuter=`@INLINE [[+rows]]`]]
      [[!msProducts?
        &parents=`0`
        &master=`[[*id]]`
        &link=`1`
        &tpl=`tpl1`
        &tplWrapper=`@INLINE [[+output]]`
        &limit=`0`
        &wrapIfEmpty=`0`
        &cache=`1`
      ]]
    </select>
    tpl1
    [[!msOptions?
      &name=`color`
      &product=`[[+id]]`
      &tplRow=`@INLINE <option value="/[[+uri]]" [[+selected]]>[[+value]]</option>`
      &tplOuter=`@INLINE [[+rows]]`
    ]]
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      2