ipsus, ну а дальше-то вообще элементарно.
На буквы алфавита вешаете ссылки с get-параметром, указывающим необходимость фильтрации по. Например
<a href="/shop/group_1/?sort_alfabet=A">A</a> <a href="/shop/group_1/?sort_alfabet=B">B</a>
Затем в коде ТДС, где-нибудь перед вызовом метода ShowShop() вставляете условие, в котором проверяете что передан get-параметр sort_alfabet, и если передан, то получаете его значение (обязательно фильтруем его функциями to_str() и quote_smart()!!!) и передаете в тот же самый фильтр, который вы реализовали на отдельной странице. Получится что-то типа
if(isset($_GET['sort_alfabet']))
{
$letter = quote_smart(to_str($_GET['sort_alfabet']));
$element = array();
$element['type']= 0;
$element['prefix'] = 'and';
$element['name'] = 'shop_items_catalog_name';
$element['if'] = 'LIKE ';
$element['value'] = $letter . '%';
$element['sufix'] = '';
$param['select'][] = $element;
}
И будет вам Щястье.
P.S. По-хорошему бы, надо после определения переменной $letter добавить какой-нибудь фильтр, например, регуляркой, чтобы отсеять все символы кроме разрешенных, а потом еще и проверить длину оставшейся строки, и если она равна 0 то ничего не фильтровать, т.к. будет SQL-ошибка, а если она больше 1 символа, то откусить от строки первый из них и фильтровать по нему. (Так, на всякий случай, мало ли кому чего приспичит дописать в ссылку после ?sort_alfabet= а она, хоть профильтрована от инъекций, но все-таки передается напрямую в запрос к БД, а значит может намусорить в выводе.)
Но эту часть я оставляю на вашей совести
P.P.S. А вот вопрос как в xslt автоматически формировать строку алфавита, с подстановкой нужных путей и букв - уже более интересен
