Sergio022 Опубликовано 1 сентября, 2012 Жалоба Поделиться Опубликовано 1 сентября, 2012 Подскажите, как разбить большой список брендов по алфавиту. Например, чтобы при нажитии на кнопку А, выводились бренды только на букву А, или на 123, только бренды, которые начинаются с цифр. Видел такое на множестве интернет-магазинов, но что-то не получилось.И еще вопрос, как можно сделать вывод разбивки по первым буквам, например:AArmaini...BBoscoBvlgari... Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 1 сентября, 2012 Жалоба Поделиться Опубликовано 1 сентября, 2012 Самый простой вариант - использовать 2 Джейквери-плагина: лист-меню и (блин, второй не помню, как называется :-) ) из той же серии...Или заплатить немного денег тому, кто знает, как это делается... Цитата Ссылка на сообщение Поделиться на другие сайты
venDETTa Опубликовано 29 октября, 2014 Жалоба Поделиться Опубликовано 29 октября, 2014 я делал для Симплы 2.3.6 от 14.07.14Brands.php public function get_all_brands($filter = array()) { $brands = array(); $category_id_filter = ''; $visible_filter = ''; if(isset($filter['visible'])) $visible_filter = $this->db->placehold('AND p.visible=?', intval($filter['visible'])); if(!empty($filter['category_id'])) $category_id_filter = $this->db->placehold("LEFT JOIN __products p ON p.brand_id=b.id LEFT JOIN __products_categories pc ON p.id = pc.product_id WHERE pc.category_id in(?@) $visible_filter", (array)$filter['category_id']); // Выбираем все бренды $query = $this->db->placehold("SELECT DISTINCT b.id, b.name, b.url, b.meta_title, b.meta_keywords, b.meta_description, b.description, b.image FROM __brands b $category_id_filter ORDER BY b.name"); $this->db->query($query); // return $this->db->results(); $bnds = $this->db->results(); foreach($bnds as $brnd){ $first_letter = mb_strtoupper(substr($brnd->name, 0, 1)); $otp[$first_letter][] = $brnd; } return $otp; } в шаблоне где нужно вывести (в моем случае я выводил в шаблоне page) {get_all_brands var=all_brands} {if $all_brands} {foreach $all_brands as $kbrnds => $brnds} <h3>{$kbrnds}</h3> <ul class="all_brands"> {foreach $brnds as $b} <li><a href="brands/{$b->url}">{$b->name}</a></li> {/foreach} </ul> {/foreach} {/if} Код писал на скорую, поэтому несуразные имена переменных, и кривосли аля накой черд я узал функцию чтобы вырезать первую букву хотя можно было сделать просто '$first = $str[0];' и чтобы это дело работало в View.php $this->design->smarty->registerPlugin("function", "get_all_brands", array($this, 'get_all_brands_plugin')); public function get_all_brands_plugin($params, &$smarty) { if(!isset($params['visible'])) $params['visible'] = 1; if(!empty($params['var'])) $smarty->assign($params['var'], $this->brands->get_all_brands($params)); } Цитата Ссылка на сообщение Поделиться на другие сайты
Maksclub Опубликовано 4 июля, 2015 Жалоба Поделиться Опубликовано 4 июля, 2015 (изменено) Подниму тему — как начать вывод с A? а то в начале всякие цифры и скобки лезут...Также русский алфАвит не работает... Изменено 4 июля, 2015 пользователем Maksclub Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 4 июля, 2015 Жалоба Поделиться Опубликовано 4 июля, 2015 Подниму тему — как начать вывод с A? а то в начале всякие цифры и скобки лезут...Также русский алфАвит не работает... а у вас есть цыфры в названиях? по коду первые буквы бренда сохраняются. если у вас нет таких брендов, то не должно быть цыфр и скобок foreach($bnds as $brnd){ $first_letter = mb_strtoupper(substr($brnd->name, 0, 1)); $otp[$first_letter][] = $brnd; } Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 4 июля, 2015 Жалоба Поделиться Опубликовано 4 июля, 2015 а у вас есть цыфры в названиях? по коду первые буквы бренда сохраняются. если у вас нет таких брендов, то не должно быть цыфр и скобок foreach($bnds as $brnd){ $first_letter = mb_strtoupper(substr($brnd->name, 0, 1)); $otp[$first_letter][] = $brnd; } Почему Вы решили, что там должны сохраняться непременно первые буквы? С ходу видно, что в коде используется substr... Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 4 июля, 2015 Жалоба Поделиться Опубликовано 4 июля, 2015 Почему Вы решили, что там должны сохраняться непременно первые буквы? С ходу видно, что в коде используется substr... видимо потому что substr с параметром 0,1. Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 4 июля, 2015 Жалоба Поделиться Опубликовано 4 июля, 2015 видимо потому что substr с параметром 0,1.А как насчет того, чтобы догадаться, что с русскими буквами это может давать ошибку? На нее довольно явно указал maksclub. Тем более рядом в коде стоит подсказка mb_strtoupper... Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 4 июля, 2015 Жалоба Поделиться Опубликовано 4 июля, 2015 (изменено) Попробуйте mb_substr ...........Или даже так $first_letter = mb_strtoupper(preg_replace('/^([^\w]*)([\w]{1}).*$/ui', '$2', $brnd->name)); Это разрешит только буквы и цифры Изменено 4 июля, 2015 пользователем yr4ik Цитата Ссылка на сообщение Поделиться на другие сайты
Maksclub Опубликовано 4 июля, 2015 Жалоба Поделиться Опубликовано 4 июля, 2015 а у вас есть цыфры в названиях? по коду первые буквы бренда сохраняются. если у вас нет таких брендов, то не должно быть цыфр и скобок Есть названия брендов, начинающиесяс цифр (со скобкой не правильно назвал), но нужно с А и чтобы русские буквы работали... эт оважно, так функционал брендов задействован в качестве автора, т оесть их очень много Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 4 июля, 2015 Жалоба Поделиться Опубликовано 4 июля, 2015 У меня есть рабочий вариант, но в нем сначала идут цифры, потом английский алфавит, а потом русский Цитата Ссылка на сообщение Поделиться на другие сайты
madison21 Опубликовано 4 мая, 2018 Жалоба Поделиться Опубликовано 4 мая, 2018 У меня есть рабочий вариант, но в нем сначала идут цифры, потом английский алфавит, а потом русскийЕсли не сложно, поделитесь..Я тоже такую страничку хочу вывести. Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 2 февраля, 2022 Жалоба Поделиться Опубликовано 2 февраля, 2022 В 04.05.2018 в 15:56, madison21 сказал: Если не сложно, поделитесь.. Я тоже такую страничку хочу вывести. https://ericsteinborn.com/jquery-listnav/ Цитата Ссылка на сообщение Поделиться на другие сайты
madison21 Опубликовано 14 февраля, 2022 Жалоба Поделиться Опубликовано 14 февраля, 2022 В 02.02.2022 в 15:46, Noxter сказал: https://ericsteinborn.com/jquery-listnav/ спасибо! Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.