Модуль indexpage?
Прислано: Shelendor
вт, 25/07/2006 - 00:40
Здравствуйте. Вопрос такой: нужно в одном определённом разделе сайта сделать алфавитную линейку поиска статей. Нашёл для этого только модуль indexpage. Но у него английский алфавит. Кто-нибудь переделывал его на русский? Вот здесь http://drupal.htdogs.ru/node/503#comment-3750 описано изменение в коде, но, судя по всему, там какая-то ошибка в ORDER BY b.weight, n.title;'); - после загрузки исправленного модуля Друпал падает со ссылкой на эту строку. Кто-нибудь знает решение? Или есть другой модуль, позволяющий создать линейку русского алфавита?
Прикреплённые версии модуля от rgb:
1.2.1 - аналог оригинального модуля, но с русским алфавитом.
Вывод английского алфавита можно включать/отключать в настройках.
Так же добавлена возможность отключать использование функции urlencode при формировании ссылок (по словам rgb: "в некоторых ситуациях ссылки получаются некорректными; скорее всего от настроек Apache зависит или ещё чего-то, не разбирался").
1.2.2.1 - добавлена возможность выбора терминов для формирования индекса.
Fix: некорректно формировалась строка алфавита, если есть материалы с заголовком, начинающимся не на букву.
1.2.3 - добавлена ссылка для вывода всех нодов (материалов) данного типа. (см. http://www.drupal.ru/node/1956#comment-13046)
ВНИМАНИЕ: Содержимое файла indexpage.css должно быть добавлено к style.css Вашей темы. С помощь класса CSS, который там описан, можно настраивать внешний вид букв, на странице "indexpage//all".
если вами замечены баги - пишите в комментариях!
| Прикрепленный файл | Размер |
|---|---|
| indexpage-patched-1.2.1.zip | 3.53 кб |
| indexpage-patched-1.2.2.1.zip | 4.26 кб |
| indexpage-patched-1.2.3.zip | 5.37 кб |
- Shelendor's blog
- Для комментирования войдите или зарегистрируйтесь
views тоже может делать индексацию.
---
---
All content management systems suck, Drupal just happens to suck less. -- Boris Mann at DrupalCON Amsterdam, August 2005.
- Для комментирования войдите или зарегистрируйтесь
ORDER BY b.weight, n.title’);
- Для комментирования войдите или зарегистрируйтесь
Nick - спасибо, но не помогло. Упал с таким сообщением:
Parse error: parse error, unexpected '=', expecting ';' in /home/сайт.ru/htdocs/modules/indexpage.module on line 156
- Для комментирования войдите или зарегистрируйтесь
Покажите строки 155,156,157
- Для комментирования войдите или зарегистрируйтесь
$russian_string = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЫЭЮЯ'.implode("",range('A','Z'));
for ($i=0;$i0 AND b.parent=0)
ORDER BY b.weight, n.title');
- Для комментирования войдите или зарегистрируйтесь
я так понимаю, идей ни у кого нет? печально...
Наверное, придётся искать какой-то другой модуль...
Natalie - я нашёл информацию о том, чтобы с помощью views поставить статьи на странице в алфавитном порядке. Но это не то, что мне нужно. Что вы имели ввиду по поводу "views тоже может делать индексацию"?
- Для комментирования войдите или зарегистрируйтесь
Они могут выводить алфавит (как-то через summary). Посмотрите в документации про аргументы
---
---
All content management systems suck, Drupal just happens to suck less. -- Boris Mann at DrupalCON Amsterdam, August 2005.
- Для комментирования войдите или зарегистрируйтесь
А может ????
$russian_string = ‘АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЫЭЮЯ’.implode(“”,range(‘А’,’Я’));
for ($i=0;$i0 AND b.parent=0)
ORDER BY b.weight, n.title’);
- Для комментирования войдите или зарегистрируйтесь
whiteman - не катит :)
Natalie - спасибо, попробую там хоть что-нибудь понять...
- Для комментирования войдите или зарегистрируйтесь
как говорится - UP! :)
С модулем views мы как-то друг друга не поняли :) Так что возвращаюсь к началу.
Может быть за это время кто-нибудь всё же смог по-человечески русифицировать модуль indexpage???
- Для комментирования войдите или зарегистрируйтесь
Если есть желание - присылайте мне вашу версию модуля - помогу разобраться (для связи).
- Для комментирования войдите или зарегистрируйтесь
отпишитесь здесь если разберетесь
- Для комментирования войдите или зарегистрируйтесь
rgb - код изменённого модуля отправил. Заранее спасибо! Надеюсь, получится... А то уже всё испробовал - или вообще сайт падает, или вместо русской линейки букв крякозябры. Больше ничего добиться не удалось :)
- Для комментирования войдите или зарегистрируйтесь
2Shelendor: письмо с ответом отправил.
2antazy@drupal.org:
отпишитесь здесь если разберетесь
Отписываюсь :-)
А почему так пессимистично: "если разберётесь"? Надо заменить на "когда" ;-)
Код я отправил Shelendor-у (тут не знаю как выложить). Кусок который выводит строку алфавита:
<?php function indexpage_page_index($type) { // ... /* Index by letter block */ if (variable_get('indexpage_'.$type.'_alphaindex', 1)) { $output .= '<div class="filter">'; $output .= '<h3>'.t('Alphabetically index').'</h3>'; $output .= '<p>'; $russian_string ='АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЫЭЮЯ'.implode("",range('A','Z')); for ($i=0;$i<strlen($russian_string);$i++) { $letter = drupal_convert_to_utf8(substr($russian_string,$i,1), 'Windows-1251'); $sql = "SELECT COUNT(n.nid) FROM {node} n INNER JOIN {node_revisions} r USING (nid) WHERE n.type='%s' AND (r.title LIKE '%s%%' OR r.title LIKE '%s%%')"; if (db_result(db_query($sql, $type, $letter, drupal_strtolower($letter)))) { $output .= l($letter, "indexpage/$type/".urlencode($letter)) . ' | '; } else { $output .= $letter . ' | '; } } $sql = "SELECT COUNT(n.nid) FROM {node} n INNER JOIN {node_revisions} r USING (nid) WHERE n.type='%s' AND (r.title REGEXP '^[^[:alpha:]].*$')"; if (db_result(db_query($sql, $type)) > 0) { $output .= l('#', "indexpage/$type/_"); } else { $output .= '#'; } // ... } ?>
Я постарался тут вносить минимальное кол-во изменений. Должен сразу предупредить, что написано это не очень хорошо (в плане использования ресурсов и быстродействия).
Я немного оптимизировал этот кусок, НО не тестировал его нормально - могут быть глюки.
<?php function indexpage_page_index($type) { // ... /* Index by letter block */ if (variable_get('indexpage_'.$type.'_alphaindex', 1)) { $output .= '<div class="filter">'; $output .= '<h3>'.t('Alphabetically index').'</h3>'; $output .= '<p>'; // get letters array or make and cache it. $letters = variable_get('indexpage_letters', array()); if (empty($letters)) { $utf_upper = drupal_convert_to_utf8('АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЫЭЮЯ'.implode('',range('A','Z')), 'Windows-1251'); $utf_upper_length = drupal_strlen($utf_upper); $letters = array(); for ($i = 0; $i < $utf_upper_length; $i++) { $letters[drupal_substr($utf_upper, $i ,1)] = 0; } variable_set('indexpage_letters', $letters); } // check for data $result = db_query('SELECT DISTINCT UPPER(SUBSTRING(r.title, 1, 1)) AS letter' . ' FROM {node} n' . ' INNER JOIN {node_revisions} r USING (nid)' . ' WHERE n.type=\'%s\'' , $type); while ($data = db_fetch_array($result)) { $letters[$data['letter']]++; } $prefix = "indexpage/{$type}/"; foreach ($letters as $letter => $count) { $output .= ($count ? l($letter, $prefix . urlencode($letter)) : $letter) . ' | '; } $sql = "SELECT COUNT(n.nid) FROM {node} n INNER JOIN {node_revisions} r USING (nid) WHERE n.type='%s' AND (r.title REGEXP '^[^[:alpha:]].*$')"; if (db_result(db_query($sql, $type)) > 0) { $output .= l('#', "indexpage/$type/_"); } else { $output .= '#'; } // ... } ?>
- Для комментирования войдите или зарегистрируйтесь
ок, спасибо, сохраню себе в архив, когда-нибудь может пригодиться :)
- Для комментирования войдите или зарегистрируйтесь
хм... пока не понимаю. сбоев-то оно не даёт, но...
There are no results
Return to index page for page
:((( при этом английский алфавит выдаёт результат как и должен.
- Для комментирования войдите или зарегистрируйтесь
У меня на 4.7 работает и с русским проблем нет.
Данные в БД в какой кодировке лежат?
- Для комментирования войдите или зарегистрируйтесь
блин никак не работает, делаю файл называю его index.module кидаю в папку всё труба в дауне с кучей ошибок... можно поподробнее как его установить то? плзз оч надо для текущего проекта
- Для комментирования войдите или зарегистрируйтесь
Дело в том, что приведённый выше код - это только часть работающего модуля. Модуль называется "Index page" (файл, соответственно, indexpage.module).
Далее у Вас несколько вариантов:
- попросить у Shelendor-а готовый (патченый, изменённый мною) модуль;
- взять с drupal.org модуль этот и самому произвести замены описанные выше;
- написать мне (мылом или в приват) и с тем, что бы я Вам выслал код (сейчас просто я не знаю куда слать или как тут выложить).
- Для комментирования войдите или зарегистрируйтесь
Прикрепил к первому посту zip с модулем, присланный мне rgb. Пробуйте.
- Для комментирования войдите или зарегистрируйтесь
респект за терпение. Всё работает, спасибо//
но видно я ослеп или отупел в конец. Я не пойму как мне сделать чтоб на одной из страниц главной категории был алфавитный поиск ищущий в подкатегориях... да вообще как сделать только алфавитный и там где мне нужно...
- Для комментирования войдите или зарегистрируйтесь
да, видно совсем идиотский вопрос, но я не могу найти как алфавитный указатель вклеить в категорию "фильмы" например :(
- Для комментирования войдите или зарегистрируйтесь
хм... а у меня не пашет. наверное и правда проблемы с кодировкой у меня какие-то. буду разбираться...
Заодно тоже задам глупый вопрос - у меня при включении модуля идёт русский алфавит, а следом - английский. Как вообще удалить английский?
- Для комментирования войдите или зарегистрируйтесь
у меня тоже самое - русский потом английский, но это мне лично не мешает, как собственно поиск то сделать, там поиск повсему сразу, а мне нужен только алфавит...как он настраивается я не понял, может там теги есть какието? ни мануала в офф архиве ничего зато текст лицензии огого
- Для комментирования войдите или зарегистрируйтесь
rariteth - я не совсем понял что значит "там поиск повсему сразу, а мне нужен только алфавит"??? В настройках модуля вы указываете какие типы контента - story, page, или созданные вами - будут индексироваться модулем. для себя я решил, что просто тот раздел сайта, который мне нужно загнать под этот алфавитный поиск, я буду делать на одном типе контента и его индексировать, а стальные разделы - на других типах.
- Для комментирования войдите или зарегистрируйтесь
а.. и тогда можно открывать давать права в "правах" на просмотр? так он работет, я то просто везде галки поставил полез в настройки там ничего... думал что обману буду делать на одном типе и ему разрешу один тип смтреть, а оказалось что он так и работает... лан спасибо за уделённое время. ну всё - равно открываю "indexpage" там:
первое "поиск по алфавиту",
второе "поиск по категория_1" и в подкатегориях
третье " поиск по категория_2" и в подкатегоиях и т.д.
как всё это убрать..., оставить только алфавит? если не надоел ответьте
вот пример сварганил:

- Для комментирования войдите или зарегистрируйтесь
...у меня при включении модуля идёт русский алфавит, а следом - английский. Как вообще удалить английский?
В модуле строку
$utf_upper = drupal_convert_to_utf8('АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЫЭЮЯ'.implode('',range('A','Z')), 'Windows-1251');
замените на
$utf_upper = drupal_convert_to_utf8('АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЫЭЮЯ'), 'Windows-1251');
и не будет Вам английского алфавита.
- Для комментирования войдите или зарегистрируйтесь
rgb - спасибо!
rariteth - хз, у меня такого нет, так что подсказать не смогу, к сожалению...
- Для комментирования войдите или зарегистрируйтесь
У меня тоже самое. Подскажите как побороть
- Для комментирования войдите или зарегистрируйтесь
/хм… пока не понимаю. сбоев-то оно не даёт, но…
There are no results
Return to index page for page
:((( при этом английский алфавит выдаёт результат как и должен./
У меня тоже самое. Подскажите как побороть
- Для комментирования войдите или зарегистрируйтесь
?q=indexpage/page/%25D0%25A3
выдает такую ссылку на букву Н
There are no results
Return to index page for page
Английские работаю нормально
- Для комментирования войдите или зарегистрируйтесь
?q=indexpage/page/%25D0%25A3
выдает такую ссылку на букву Н
Странно, потому как у меня такая ссылка формируется для буквы "У". Для "Н" у меня вот что: indexpage/page/%25D0%259D.
Будем разбираться. Для начала предлагаю проверить, что выдаётся по такой же ссылке, как у меня. Сделайте запрос вида: ?q=indexpage/page/%25D0%259D.
И ещё, скажите, какие ссылки у Вас сформировались для "А" и "Я"? У меня:
indexpage/page/%25D0%2590indexpage/page/%25D0%25AF
- Для комментирования войдите или зарегистрируйтесь
Да. У меня тоже как у вас все. То есть ссылка выдаеться правильно, а вот
результатов не выводит:
There are no results
Return to index page for page
База у меня в утф-8 юникод
В чем может быть проблема? Очень нужны русские буквы. Подскажите что делать.Может какой-то другой модуль есть?
- Для комментирования войдите или зарегистрируйтесь
Нашел! Если вместо буквы в заголовке создаваемой странице написать %25D0%259D, то модуль находит эту строку по нажатию на "Н". Но такой вид заголовка меня совсем не устраивает. Тоесть проблема где-то в конвертировании в юникод. Что делать????
- Для комментирования войдите или зарегистрируйтесь
Если вместо буквы в заголовке создаваемой странице написать %25D0%259D, то модуль находит эту строку по нажатию на “Н”
"Это же не наш метод!" (с) Операция Ы...
Хорошо, попробуем по-другому ;-)
Пробуем вместо
<?php // ... $prefix = "indexpage/{$type}/"; foreach ($letters as $letter => $count) { $output .= ($count ? l($letter, $prefix . urlencode($letter)) : $letter) . ' | '; } // ... ?>
написать
<?php // ... $prefix = "indexpage/{$type}/"; foreach ($letters as $letter => $count) { $output .= ($count ? l($letter, $prefix . $letter) : $letter) . ' | '; } // ... ?>
Или (если пользуемся оригинальным вариантом алгоритма) вместо
<?php // ... $sql = "SELECT COUNT(n.nid) FROM {node} n INNER JOIN {node_revisions} r USING (nid) WHERE n.type='%s' AND (r.title LIKE '%s%%' OR r.title LIKE '%s%%')"; if (db_result(db_query($sql, $type, $letter, drupal_strtolower($letter)))) { $output .= l($letter, "indexpage/$type/".urlencode($letter)) . ' | '; } else { $output .= $letter . ' | '; } // ... ?>
написать
<?php // ... $sql = "SELECT COUNT(n.nid) FROM {node} n INNER JOIN {node_revisions} r USING (nid) WHERE n.type='%s' AND (r.title LIKE '%s%%' OR r.title LIKE '%s%%')"; if (db_result(db_query($sql, $type, $letter, drupal_strtolower($letter)))) { $output .= l($letter, "indexpage/$type/$letter") . ' | '; } else { $output .= $letter . ' | '; } // ... ?>
Другими словами - пробуем при формировании URL-а не urlencode-ить русскую букву.
У меня и такой вариант работает...
- Для комментирования войдите или зарегистрируйтесь
Работает на 5+! Причем ваш вариант побыстрее. Большое спасибо!
- Для комментирования войдите или зарегистрируйтесь
ищет супер, тока как его поставить в меню?
а то отображается "искать в страницах?"(ясен пень в настройках поставил). мне надо в категории ("фильмы" например) его поставить, а не в меню? и как убрать внизу "создать новую страницу"? тока в коде?
и где можно его разделить на русс и енг хотябы <br />
- Для комментирования войдите или зарегистрируйтесь
так-с... ща не в состоянии тестировать изменения, люди, кто пробовал - скажите. Если работает, то для для всеобщего удобства и с позволения rgb прикреплю обновлённый модуль в первый пост ветки.
- Для комментирования войдите или зарегистрируйтесь
Выкладывайте конечно! Позволение - есть ;-)
- Для комментирования войдите или зарегистрируйтесь
ищет супер, тока как его поставить в меню?
а то отображается “искать в страницах?”(ясен пень в настройках поставил). мне надо в категории (“фильмы” например) его поставить, а не в меню?
Что-то я не особо понял о чём речь...
Если хотите добавить пункт меню, добавляйте в иерархию и ставьте путь типа "indexpage" или (если надо на определённый тип данных, "films", например) - "indexpage/films". Список возможных ссылок можно глянуть именно на странице "indexpage" ("Infex page for ...").
Как на категории это распространить - пока не знаю. Подробнее можете описать, как это представляется Вам?
и как убрать внизу “создать новую страницу”? тока в коде? и где можно его разделить на русс и енг хотябы <br />
да - без модификации кода "создать новую страницу" не выкинуть.
Сейчас сделаем небольшие добавки в настройки модуля.
Действие 1: меняем функцию indexpage_settings().
Было:
<?php function indexpage_settings() { // ... foreach (node_get_types() as $type => $name) { // ... $form[$set]['indexpage_'.$type.'_vocfilter'] = array( '#type' => 'checkbox', '#title' => t('Show vocabulary filters for this node type'), '#return_value' => 1, '#default_value' => variable_get('indexpage_'.$type.'_vocfilter', 1), ); } return $form; } ?>
Стало:
<?php function indexpage_settings() { // ... foreach (node_get_types() as $type => $name) { // ... $form[$set]['indexpage_'.$type.'_vocfilter'] = array( '#type' => 'checkbox', '#title' => t('Show vocabulary filters for this node type'), '#return_value' => 1, '#default_value' => variable_get('indexpage_'.$type.'_vocfilter', 1), ); $form[$set]['indexpage_'.$type.'_createnew'] = array( '#type' => 'checkbox', '#title' => t('Show %link link', array('%link'=>theme('placeholder','Create a new entry'))), '#return_value' => 1, '#default_value' => variable_get('indexpage_'.$type.'_createnew', 1), ); $form[$set]['indexpage_'.$type.'_split'] = array( '#type' => 'checkbox', '#title' => t('Split alphabet'), '#return_value' => 1, '#default_value' => variable_get('indexpage_'.$type.'_split', 1), ); } return $form; } ?>
Добавили ещё 2 настройки для каждого типа (см. страницу admin/settings/indexpage):
- Show 'Create a new entry' link
- Показывать или нет линк “Создать новую страницу”.
- Split alphabet
- Разделять или нет русский и английский алфавиты.
Действие 2: меняем функцию indexpage_page_index($type).
Было:
<?php function indexpage_page_index($type) { // ... // get letters array or make and cache it. $letters = variable_get('indexpage_letters', array()); if (empty($letters)) { $utf_upper = drupal_convert_to_utf8('АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЫЭЮЯ'.implode('',range('A','Z')), 'Windows-1251'); $utf_upper_length = drupal_strlen($utf_upper); $letters = array(); for ($i = 0; $i < $utf_upper_length; $i++) { $letters[drupal_substr($utf_upper, $i ,1)] = 0; } variable_set('indexpage_letters', $letters); } // check for data $result = db_query('SELECT DISTINCT UPPER(SUBSTRING(r.title, 1, 1)) AS letter' . ' FROM {node} n' . ' INNER JOIN {node_revisions} r USING (nid)' . ' WHERE n.type=\'%s\'' , $type); while ($data = db_fetch_array($result)) { $letters[$data['letter']]++; } $prefix = "indexpage/{$type}/"; for ($idx = 1; list($letter, $count) = each($letters); $idx++) { $output .= ($count ? l($letter, $prefix . urlencode($letter)) : $letter) . ' | '); } // ... /* Operations for this node type */ $output .= '<h3>'.t('Operations').'</h3>'; $output .= l(t('Create a new entry'), 'node/add/'.$type); print theme('page', $output); } ?>
Стало:
<?php function indexpage_page_index($type) { // ... // get letters array or make and cache it. $international = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЫЭЮЯ'; if (variable_get('indexpage_'.$type.'_split', 1)) { $break_idx = strlen($international); } else { $break_idx = 0; } $letters = variable_get('indexpage_letters', array()); if (empty($letters)) { $utf_upper = drupal_convert_to_utf8($international.implode('',range('A','Z')), 'Windows-1251'); $utf_upper_length = drupal_strlen($utf_upper); $letters = array(); for ($i = 0; $i < $utf_upper_length; $i++) { $letters[drupal_substr($utf_upper, $i ,1)] = 0; } variable_set('indexpage_letters', $letters); } // check for data $result = db_query('SELECT DISTINCT UPPER(SUBSTRING(r.title, 1, 1)) AS letter' . ' FROM {node} n' . ' INNER JOIN {node_revisions} r USING (nid)' . ' WHERE n.type=\'%s\'' , $type); while ($data = db_fetch_array($result)) { $letters[$data['letter']]++; } $prefix = "indexpage/{$type}/"; for ($idx = 1; list($letter, $count) = each($letters); $idx++) { $output .= ($count ? l($letter, $prefix . urlencode($letter)) : $letter) . ($idx == $break_idx ? '<br />' : ' | '); } // ... /* Operations for this node type */ if (variable_get('indexpage_'.$type.'_createnew', 1)) { $output .= '<h3>'.t('Operations').'</h3>'; $output .= l(t('Create a new entry'), 'node/add/'.$type); } print theme('page', $output); } ?>
Здесь мы добавили код, который использует новые настройки. Теперь Вы по своему желанию можете включать/выключать показ ссылки "Создать новую страницу" и разделять/не разделять алфавит.
- Для комментирования войдите или зарегистрируйтесь
перезалейте в первое сообщение, только, назовите по-другому... может не работать, а первое работает на все 100%
- Для комментирования войдите или зарегистрируйтесь
ну кто тестировал?
- Для комментирования войдите или зарегистрируйтесь
На всякий случай, замечу, что я не упомянул одно условие: всё, что написано, рассчитано на то, что _исходный_ код в файле модуля (.module) будет в кодировке 'Windows-1251' (или 'cp1251').
Если же он в 'koi8-r' или ещё в какой, то нужны будут модификации. Если кому надо - пишите - приведу тут эти исправления.
- Для комментирования войдите или зарегистрируйтесь
rgb - у меня некоторые проблемы.
Первые изменения, описанные вами здесь http://www.drupal.ru/node/1956#comment-11285 я добавил, всё работает, спасибо.
А вот следующие не смог. При попытке внести изменения для полного отключени английского алфавита всё падает со ссылкой на 186 строку.
Далее. Изменил по инструкции http://www.drupal.ru/node/1956#comment-11331 Да, появилась возможность отключать в настройках Create a new entry и разделять алфавит. Но у меня снова выдаёт в результатах "There are no results"
Кстати, в коде у меня было
$prefix = "indexpage/{$type}/";
foreach ($letters as $letter => $count) {
$output .= ($count ? l($letter, $prefix . $letter) : $letter) . ' | ';
}
в "my variant".
Указанный вами здесь
$prefix = "indexpage/{$type}/";
for ($idx = 1; list($letter, $count) = each($letters); $idx++) {
$output .= ($count ? l($letter, $prefix . urlencode($letter)) : $letter) . ' | ');
я найти не смог... Думал, может я чего случайно потёр - слазил в сообщение, которое вы прислали мне с кодом. Там тоже нет. В общем, я уже ничего не понимаю :)
Обновил прикреплённый в 1 сообщении файл. Теперь там лежит indexpage от rgb, корректно работающий с русскими буквами, без приколов в духе %25D0%259D :)
rgb - если мы вам ещё не надоели, помогите разобраться, пожалуйста! :)
- Для комментирования войдите или зарегистрируйтесь
Shelendor, выкладывай потом разными файлами:
indexpage_[ru+eng].module
indexpage_[ru+eng+splitLng].module
потомучто может комуто надо только это, кому только то... да и вообще у разработчиков принято делать отдельный файл при малейшем изменении кода.. вот мне например не нужна настроеная индекспэйдж под 1251, меня и утф устраивает(как подумаю чтоб перекодировать скока перелопатить нужно - аж плохо становится). А вообще обидно что я в этом мало понимаю - никакой дискуссии, только rgb шарит и не поспоришь даже :)
- Для комментирования войдите или зарегистрируйтесь
rariteth - да мне по идее тоже utf надо, но первый вариант при этом результаты выдавать отказывался... :( В итоге мы тут определимся со списком файлов, которые будут прикреплены к 1 сообщению, но пока что придётся ждать rgb :) кроме него вряд ли кто поможет :)
- Для комментирования войдите или зарегистрируйтесь
А вот следующие не смог. При попытке внести изменения для полного отключени английского алфавита всё падает со ссылкой на 186 строку.
Не могли бы Вы привести тут отрывок кода со 180-й по 190-ю строки? А то моя версия с Вашей могут отличаться...
Далее. Изменил по инструкции http://www.drupal.ru/node/1956#comment-11331 Да, появилась возможность отключать в настройках Create a new entry и разделять алфавит. Но у меня снова выдаёт в результатах “There are no results”
А это потому, что для формирования ссылки в приведённом коде у меня опять используется urlencode(). Просто уберите вызов этой ф-ции: вместо <?php urlencode($letter) ?> поставьте <?php $letter ?>.
Кстати, в коде у меня было
$prefix = “indexpage/{$type}/”;
foreach ($letters as $letter => $count) {
$output .= ($count ? l($letter, $prefix . $letter) : $letter) . ’ | ‘;
}
в “my variant”.
Указанный вами здесь...я найти не смог… Думал, может я чего случайно потёр - слазил в сообщение, которое вы прислали мне с кодом. Там тоже нет. В общем, я уже ничего не понимаю
Не - это моя ошибка, я скопировал код при составлении сообщения не из того места. Имелся ввиду именно такой код, как у Вас.
Хм.. кажется на patch надо переходить уже :-)
rgb - если мы вам ещё не надоели, помогите разобраться, пожалуйста!
Не надоели :-) Я с удовольствием помогу по мере возможности.
---
Shelendor, выкладывай потом разными файлами...
Да - пожалуй стоит в порядок всё привести.
Что у нас есть?
- Исходный вариант модуля
- Вариант с русским алфавитом и оригинальным алгоритмом построения списка
- Вариант с русским алфавитом и моим алгоритмом построения списка
- Вариант без использования urlencode() для оригинального алгоритма
- Вариант без использования urlencode() для моего алгоритма
- Вариант с включением опций "Show ‘Create a new entry’ link" и "Split alphabet" с использованием моего алгоритма
Это приблизительно в хронологическом порядке. Вопрос (1): стоит ли и дальше все исправления приводить для оригинального и моего вариантов алгоритма? Вопрос (2): предлагаю выбрать один из вышеприведённых вариантов в качестве основного, с тем, что б развивать уже только его, а то опять запутаемся :-)
На голосование ставится кандидатура последнего варианта (мой алгоритм + urlencode + доп.опции). Если кого-то что-то в нём не устраивает - можем добавить опций, например, сделать использование urlencode - опциональным или вывод английского алфавита - тоже опциональным.
Ваше слово, коллеги!
вот мне например не нужна настроеная индекспэйдж под 1251, меня и утф устраивает
Оно всё вроде под ЮТФ заточено. Исходники - в Win1251, вывод - UTF8. У кого-то не так? Говорите...
А вообще обидно что я в этом мало понимаю - никакой дискуссии, только rgb шарит и не поспоришь даже
Cпорить-то можно и без знания PHP ;-)
---
rariteth - да мне по идее тоже utf надо, но первый вариант при этом результаты выдавать отказывался
Странно это... Не пойму в чем причина. В любом случае - у меня и так и сяк работает...
мы тут определимся со списком файлов, которые будут прикреплены к 1 сообщению
Думаю, что лучше всё же один какой-то вариант оставить (см. выше)
- Для комментирования войдите или зарегистрируйтесь
ок, на днях заменю <?php urlencode($letter) ?> на <?php $letter ?> и потестирую.
rgb - предлагаю остановиться на вашем последнем варианте с максимальным количеством включающихся/отключающихся опций. Потому что: 1. ваш вариант по скорости и тяжести явно лучше стандартного. 2. люди в зависимости от потребностей смогу отключить или включить всё, что им надо.
- Для комментирования войдите или зарегистрируйтесь
предлагаю остановиться на вашем последнем варианте
В таком случае пишите, что добавить туда. Как я понял, первое - это опциональное использование urlencode?
- Для комментирования войдите или зарегистрируйтесь
да! именно его :) а второе - не знаю, поддержат ли меня остальные - возможность полного отключения английского алфавита.
- Для комментирования войдите или зарегистрируйтесь






Комментарии