Как вывести новости начинающиеся с буквы "Б" и т.п

Например заголовоки новостей:
1. Белка
2. Барсук
3. бегемот
4. Шаурма
5. Лавашь

Как вывести новости начинающиеся с буквы «Б» и т.п.

Решение тут
Spam
17 февраля 2015, 10:45
modx.pro
1
2 771
0

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

G@G
G@G
17 февраля 2015, 14:16
0
...where...like=Б%…
    Spam
    17 февраля 2015, 14:18
    0
    только как реализовать? через pdotools или снипет надо писать?
      G@G
      G@G
      17 февраля 2015, 14:24
      0
      Это зависит от вашей задачи.
      Сформулируйте задачу максимально полно и вам обязательно подскажут наиболее рациональное решение :)
        Spam
        17 февраля 2015, 14:30
        0
        50-100к новостей надо выводить по начальным буквам и цифрам
        site.ru/news/A
        site.ru/news/B
        site.ru/news/7
          G@G
          G@G
          17 февраля 2015, 14:48
          0
          Уточнение.
          1. У новостей один родитель?
          2. Постраничная навигация будет?
          3. На одной странице только новости на одну букву?

          ajax не рассматриваете?
            G@G
            G@G
            17 февраля 2015, 14:51
            0
            Делал алфавитный рубрикатор GetResources+ajax. Если интересно, могу поделиться.
              G@G
              G@G
              17 февраля 2015, 15:10
              1
              +1
              Вот демо:
              lab.nikann.ru/catalog#abc
              Не подойдет?
                Spam
                17 февраля 2015, 15:15
                0
                если вы имеете виду создавать категорию для каждого раздела и туда закидывать, то это не очень приемлемо. Как вариант юзать аддон modx.com/extras/package/tagger где указывать букву
                  Wassi Wassinen
                  17 февраля 2015, 16:43
                  +1
                  Закажите плагин для pdoPage который будет парсить первую букву pagetitle или longtitle и по ним выводить пагинацию. На modstore.pro есть каталог разработчиков.
                    Wassi Wassinen
                    17 февраля 2015, 16:46
                    0
                    Или по простому &where=LIKE=А% OR a% для вывода pdoPage и несколько закладок на одной странице для каждой буквы. В каждой закладке вызов pdoPage с &where=LIKE=букваалфавита% который вызывается ajax'om по клику на вкладке.
                      G@G
                      G@G
                      17 февраля 2015, 23:37
                      +2
                      Нет. Я сделал через сниппет (GetResources+ajax). При нажатии на букву загрузка только ресурсов при совпадении первой буквы в названии.
                      Использовал вот этот пример: modx.ws/urok-modx-ajax-zagruzka-resursov

                      Александр Наумов
                      18 февраля 2015, 00:23
                      0
                      Поделитесь, буду сильно благодарен!
                      Spam
                      18 февраля 2015, 09:49
                      0
                      а вообще, если не жалко выложили бы в «готовые решения», это помогло бы развитию Modx
          Василий Наумкин
          18 февраля 2015, 09:56
          1
          +4
          Берём заметку про роутинг, сниппет pdoResources с его параметром where, и за полчаса делаем симпатичный вывод каталога по ссылкам типа
          site.ru/catalog/А
          site.ru/catalog/Б
          site.ru/catalog/В
            Spam
            18 февраля 2015, 21:57
            0
            у меня вышло как то так, но не работает. Шаблон стандартный
            <?php
            if ($modx->event->name != 'OnPageNotFound') {return false;}
            $alias = $modx->context->getOption('request_param_alias', 'q');
            if (!isset($_REQUEST[$alias])) {return false;}
            
            $request = $_REQUEST[$alias];
            $tmp = explode('/', $request);
            
            // Ссылка подходит под заданный формат: brands/brandname
            if ($tmp[0] == 'genre' && count($tmp) >= 2) {
                // Определяем id раздела /brands/.
                // Конечно, можно его и руками прописать - но так гибче
                if (!$section = $modx->findResource($tmp[0] . '/')) {
                    // Если вдруг раздел куда-то делся - выходим.
                    return false;
                }
                // Теперь очищаем имя бренда от возможного расширения
                $name = str_replace('.html', '', $tmp[1]);
                // Если очищенное имя не равно запрошенному - то можно отредиректить юзера
                // Также возможен вариант с косой на конце имени бренда - его тоже учитываем
                // SEOшники должны оценить =)
                if ($tmp[1] != $name || (isset($tmp[2]) && $tmp[2] == '')) {
                    $modx->sendRedirect($tmp[0] . '/' . $name);
                }
            
                // Люди с неправильной ссылкой ушли на правильную и дошли до этого момента со второго раза
                // Дальше проверяем наличие запрошенного бренда
                if ($genre = $modx->getObject('modResource', array('pagetitle:LIKE' => $name . "%"))) {
                    $newsParams = array();
                    $newsParams['parents'] = '2';
                    $newsParams['depth'] = '0';
                    $newsParams['showLog'] = '1';
                    $newsParams['where'] = '{"pagetitle:LIKE": "' . $name .'%"}';
            
                    return $modx->runSnippet('pdoResources', $newsParams);
                } else {
                    //для теста
                    echo '<pre>';
                    print_r($_REQUEST);
                    print_r($_SERVER);
                    die();
                }
            }
            Logs:
            [2015-02-18 21:54:58] (ERROR @ /index.php) [OnPageNotFound]<pre>Array
            (
                [id] => 5
                [type] => document
                [contentType] => text/html
                [pagetitle] => Quest
                [longtitle] => 
                [description] => 
                [alias] => quest
                [link_attributes] => 
                [published] => 1
                [pub_date] => 0
                [unpub_date] => 0
                [parent] => 2
                [isfolder] => 1
                [introtext] => 
                [richtext] => 1
                [template] => 3
                [menuindex] => 0
                [searchable] => 1
                [cacheable] => 1
                [createdby] => 1
                [createdon] => 1423186205
                [editedby] => 1
                [editedon] => 1423834707
                [deleted] => 0
                [deletedon] => 0
                [deletedby] => 0
                [publishedon] => 1423186200
                [publishedby] => 1
                [menutitle] => 
                [donthit] => 0
                [privateweb] => 0
                [privatemgr] => 0
                [content_dispo] => 0
                [hidemenu] => 0
                [class_key] => TicketsSection
                [context_key] => web
                [content_type] => 1
                [uri] => games/quest/
                [uri_override] => 0
                [hide_children_in_tree] => 0
                [show_in_tree] => 1
                [properties] => Array
                    (
                        [tickets] => Array
                            (
                                [template] => 
                                [uri] => %alias%ext
                                [show_in_tree] => 
                                [hidemenu] => 0
                                [disable_jevix] => 
                                [process_tags] => 
                            )
            
                    )
            
                [idx] => 1
                [link] => 
            )
            </pre><pre class="pdoResourcesLog">0.0001979: pdoTools loaded
            0.0000629: xPDO query object created
            0.0006740: Added selection of <b>modResource</b>: <small>SQL_CALC_FOUND_ROWS `id`, `type`, `contentType`, `pagetitle`, `longtitle`, `description`, `alias`, `link_attributes`, `published`, `pub_date`, `unpub_date`, `parent`, `isfolder`, `introtext`, `richtext`, `template`, `menuindex`, `searchable`, `cacheable`, `createdby`, `createdon`, `editedby`, `editedon`, `deleted`, `deletedon`, `deletedby`, `publishedon`, `publishedby`, `menutitle`, `donthit`, `privateweb`, `privatemgr`, `content_dispo`, `hidemenu`, `class_key`, `context_key`, `content_type`, `uri`, `uri_override`, `hide_children_in_tree`, `show_in_tree`, `properties`</small>
            0.0000570: Processed additional conditions
            0.0007119: Added where condition: <b>pagetitle:LIKE=Q%, modResource.parent:IN(2), modResource.published=1, modResource.deleted=0</b>
            0.0001462: Sorted by <b>modResource.publishedon</b>, <b>DESC</b>
            0.0000060: Limited to <b>10</b>, offset <b>0</b>
            0.0005710: SQL prepared <small>"SELECT SQL_CALC_FOUND_ROWS `modResource`.`id`, `modResource`.`type`, `modResource`.`contentType`, `modResource`.`pagetitle`, `modResource`.`longtitle`, `modResource`.`description`, `modResource`.`alias`, `modResource`.`link_attributes`, `modResource`.`published`, `modResource`.`pub_date`, `modResource`.`unpub_date`, `modResource`.`parent`, `modResource`.`isfolder`, `modResource`.`introtext`, `modResource`.`richtext`, `modResource`.`template`, `modResource`.`menuindex`, `modResource`.`searchable`, `modResource`.`cacheable`, `modResource`.`createdby`, `modResource`.`createdon`, `modResource`.`editedby`, `modResource`.`editedon`, `modResource`.`deleted`, `modResource`.`deletedon`, `modResource`.`deletedby`, `modResource`.`publishedon`, `modResource`.`publishedby`, `modResource`.`menutitle`, `modResource`.`donthit`, `modResource`.`privateweb`, `modResource`.`privatemgr`, `modResource`.`content_dispo`, `modResource`.`hidemenu`, `modResource`.`class_key`, `modResource`.`context_key`, `modResource`.`content_type`, `modResource`.`uri`, `modResource`.`uri_override`, `modResource`.`hide_children_in_tree`, `modResource`.`show_in_tree`, `modResource`.`properties` FROM `modx_site_content` AS `modResource` WHERE  ( `modResource`.`pagetitle` LIKE 'Q%' AND `modResource`.`parent` IN (2) AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 )  ORDER BY modResource.publishedon DESC LIMIT 10 "</small>
            0.0005012: SQL executed
            0.0001271: Total rows: <b>1</b>
            0.0000300: Rows fetched
            0.0001070: Returning processed chunks
            0.0035169: <b>Total time</b>
            11 796 480: <b>Memory usage</b>
            </pre>
            [2015-02-18 21:54:58] (ERROR @ /index.php) Could not retrieve data to cache for resource 1
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            18