Здравствуйте. Вопрос такой: нужно в одном определённом разделе сайта сделать алфавитную линейку поиска статей. Нашёл для этого только модуль 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 КБ |
Комментарии
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');
А может ????
$russian_string = ‘АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЫЭЮЯ’.implode(“”,range(‘А’,’Я’));
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.
whiteman - не катит
Natalie - спасибо, попробую там хоть что-нибудь понять...
как говорится - UP!
С модулем views мы как-то друг друга не поняли Так что возвращаюсь к началу.
Может быть за это время кто-нибудь всё же смог по-человечески русифицировать модуль indexpage???
Если есть желание - присылайте мне вашу версию модуля - помогу разобраться (для связи).
отпишитесь здесь если разберетесь
rgb - код изменённого модуля отправил. Заранее спасибо! Надеюсь, получится... А то уже всё испробовал - или вообще сайт падает, или вместо русской линейки букв крякозябры. Больше ничего добиться не удалось
2Shelendor: письмо с ответом отправил.
2antazy@drupal.org:
Отписываюсь
А почему так пессимистично: "если разберётесь"? Надо заменить на "когда"
Код я отправил Shelendor-у (тут не знаю как выложить). Кусок который выводит строку алфавита:
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 .= '#';
}
// ...
}
?>
Я постарался тут вносить минимальное кол-во изменений. Должен сразу предупредить, что написано это не очень хорошо (в плане использования ресурсов и быстродействия).
Я немного оптимизировал этот кусок, НО не тестировал его нормально - могут быть глюки.
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
:((( при этом английский алфавит выдаёт результат как и должен.
У меня тоже самое. Подскажите как побороть
/хм… пока не понимаю. сбоев-то оно не даёт, но…
There are no results
Return to index page for page
:((( при этом английский алфавит выдаёт результат как и должен./
У меня тоже самое. Подскажите как побороть
У меня на 4.7 работает и с русским проблем нет.
Данные в БД в какой кодировке лежат?
блин никак не работает, делаю файл называю его index.module кидаю в папку всё труба в дауне с кучей ошибок... можно поподробнее как его установить то? плзз оч надо для текущего проекта
Дело в том, что приведённый выше код - это только часть работающего модуля. Модуль называется "Index page" (файл, соответственно,
indexpage.module
).Далее у Вас несколько вариантов:
Прикрепил к первому посту zip с модулем, присланный мне rgb. Пробуйте.
респект за терпение. Всё работает, спасибо//
но видно я ослеп или отупел в конец. Я не пойму как мне сделать чтоб на одной из страниц главной категории был алфавитный поиск ищущий в подкатегориях... да вообще как сделать только алфавитный и там где мне нужно...
да, видно совсем идиотский вопрос, но я не могу найти как алфавитный указатель вклеить в категорию "фильмы" например
хм... а у меня не пашет. наверное и правда проблемы с кодировкой у меня какие-то. буду разбираться...
Заодно тоже задам глупый вопрос - у меня при включении модуля идёт русский алфавит, а следом - английский. Как вообще удалить английский?
В модуле строку
замените на
и не будет Вам английского алфавита.
у меня тоже самое - русский потом английский, но это мне лично не мешает, как собственно поиск то сделать, там поиск повсему сразу, а мне нужен только алфавит...как он настраивается я не понял, может там теги есть какието? ни мануала в офф архиве ничего зато текст лицензии огого
rariteth - я не совсем понял что значит "там поиск повсему сразу, а мне нужен только алфавит"??? В настройках модуля вы указываете какие типы контента - story, page, или созданные вами - будут индексироваться модулем. для себя я решил, что просто тот раздел сайта, который мне нужно загнать под этот алфавитный поиск, я буду делать на одном типе контента и его индексировать, а стальные разделы - на других типах.
а.. и тогда можно открывать давать права в "правах" на просмотр? так он работет, я то просто везде галки поставил полез в настройки там ничего... думал что обману буду делать на одном типе и ему разрешу один тип смтреть, а оказалось что он так и работает... лан спасибо за уделённое время. ну всё - равно открываю "indexpage" там:
первое "поиск по алфавиту",
второе "поиск по категория_1" и в подкатегориях
третье " поиск по категория_2" и в подкатегоиях и т.д.
как всё это убрать..., оставить только алфавит? если не надоел ответьте
вот пример сварганил:
rgb - спасибо!
rariteth - хз, у меня такого нет, так что подсказать не смогу, к сожалению...
?q=indexpage/page/%25D0%25A3
выдает такую ссылку на букву Н
There are no results
Return to index page for page
Английские работаю нормально
Странно, потому как у меня такая ссылка формируется для буквы "У". Для "Н" у меня вот что:
indexpage/page/%25D0%259D
.Будем разбираться. Для начала предлагаю проверить, что выдаётся по такой же ссылке, как у меня. Сделайте запрос вида:
?q=indexpage/page/%25D0%259D
.И ещё, скажите, какие ссылки у Вас сформировались для "А" и "Я"? У меня:
indexpage/page/%25D0%2590
indexpage/page/%25D0%25AF
Да. У меня тоже как у вас все. То есть ссылка выдаеться правильно, а вот
результатов не выводит:
There are no results
Return to index page for page
База у меня в утф-8 юникод
В чем может быть проблема? Очень нужны русские буквы. Подскажите что делать.Может какой-то другой модуль есть?
Нашел! Если вместо буквы в заголовке создаваемой странице написать %25D0%259D, то модуль находит эту строку по нажатию на "Н". Но такой вид заголовка меня совсем не устраивает. Тоесть проблема где-то в конвертировании в юникод. Что делать????
"Это же не наш метод!" (с) Операция Ы...
Хорошо, попробуем по-другому
Пробуем вместо
// ...
$prefix = "indexpage/{$type}/";
foreach ($letters as $letter => $count) {
$output .= ($count ? l($letter, $prefix . urlencode($letter)) : $letter) . ' | ';
}
// ...
?>
написать
// ...
$prefix = "indexpage/{$type}/";
foreach ($letters as $letter => $count) {
$output .= ($count ? l($letter, $prefix . $letter) : $letter) . ' | ';
}
// ...
?>
Или (если пользуемся оригинальным вариантом алгоритма) вместо
// ...
$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 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 />
Что-то я не особо понял о чём речь...
Если хотите добавить пункт меню, добавляйте в иерархию и ставьте путь типа "
indexpage
" или (если надо на определённый тип данных, "films", например) - "indexpage/films
". Список возможных ссылок можно глянуть именно на странице "indexpage
" ("Infex page for ...").Как на категории это распространить - пока не знаю. Подробнее можете описать, как это представляется Вам?
да - без модификации кода "создать новую страницу" не выкинуть.
Сейчас сделаем небольшие добавки в настройки модуля.
Действие 1: меняем функцию
indexpage_settings()
.Было:
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;
}
?>
Стало:
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
):Действие 2: меняем функцию
indexpage_page_index($type)
.Было:
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);
}
?>
Стало:
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);
}
?>
Здесь мы добавили код, который использует новые настройки. Теперь Вы по своему желанию можете включать/выключать показ ссылки "Создать новую страницу" и разделять/не разделять алфавит.
так-с... ща не в состоянии тестировать изменения, люди, кто пробовал - скажите. Если работает, то для для всеобщего удобства и с позволения rgb прикреплю обновлённый модуль в первый пост ветки.
Выкладывайте конечно! Позволение - есть
перезалейте в первое сообщение, только, назовите по-другому... может не работать, а первое работает на все 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 кроме него вряд ли кто поможет
Не могли бы Вы привести тут отрывок кода со 180-й по 190-ю строки? А то моя версия с Вашей могут отличаться...
А это потому, что для формирования ссылки в приведённом коде у меня опять используется
urlencode()
. Просто уберите вызов этой ф-ции: вместо<?php urlencode($letter) ?>
поставьте<?php $letter ?>
.Не - это моя ошибка, я скопировал код при составлении сообщения не из того места. Имелся ввиду именно такой код, как у Вас.
Хм.. кажется на patch надо переходить уже
Не надоели Я с удовольствием помогу по мере возможности.
---
Да - пожалуй стоит в порядок всё привести.
Что у нас есть?
Это приблизительно в хронологическом порядке. Вопрос (1): стоит ли и дальше все исправления приводить для оригинального и моего вариантов алгоритма? Вопрос (2): предлагаю выбрать один из вышеприведённых вариантов в качестве основного, с тем, что б развивать уже только его, а то опять запутаемся
На голосование ставится кандидатура последнего варианта (мой алгоритм + urlencode + доп.опции). Если кого-то что-то в нём не устраивает - можем добавить опций, например, сделать использование urlencode - опциональным или вывод английского алфавита - тоже опциональным.
Ваше слово, коллеги!
Оно всё вроде под ЮТФ заточено. Исходники - в Win1251, вывод - UTF8. У кого-то не так? Говорите...
Cпорить-то можно и без знания PHP
---
Странно это... Не пойму в чем причина. В любом случае - у меня и так и сяк работает...
Думаю, что лучше всё же один какой-то вариант оставить (см. выше)
ок, на днях заменю <?php urlencode($letter) ?> на <?php $letter ?> и потестирую.
rgb - предлагаю остановиться на вашем последнем варианте с максимальным количеством включающихся/отключающихся опций. Потому что: 1. ваш вариант по скорости и тяжести явно лучше стандартного. 2. люди в зависимости от потребностей смогу отключить или включить всё, что им надо.
В таком случае пишите, что добавить туда. Как я понял, первое - это опциональное использование
urlencode
?да! именно его а второе - не знаю, поддержат ли меня остальные - возможность полного отключения английского алфавита.
Хорошо. Это сделать не сложно. Выкрою свободное время и реализую.
мои пять копеек (если позволите) есть желание выводить алфавитный указатель не по всем термам, а по одной или нескольким из них.
Ок. Это будет следующим этапом нашей программы.
rgb, ты супер!!! и того у нас в итоге получится:
русс алфавит
кодировка под русс алфавит
управление разделением алфавита
управление фунцией "create new entry"
вставка в определённые термы
Я знаю!
Ну а если серьёзно - погодите благодарить - сделать надо сначала У меня тут некоторые перемены в жизни сейчас (с работы ухожу) посему как всё устаканится - сделаю.
Я отправил Shelendor-у модифицированную версию модуля:
Кроме того, для самого модуля баг нашёл (у меня на машине, по крайней мере проявляется): при некоторых сочетаниях включёных и отключеных настроек модуля для какого-либо типа данных, Apache падает во время обработки сохранения этих настроек (страница
admin/settings/indexpage
). Это было как с моими добавками, так и без них.rgb - СПАСИБО огромное!
Проверил - у меня всё работает
А можно поподробнее про баг? У меня такого пока не было, но мало ли... При каких сочетаниях это наблюдалось?
Пожалуйста
У меня наблюдается (не стабильно) например при попытке снять две последние галки в настройках отображения для типа "
page
", т.е. они стояли, я зашёл в настройки, снял их и нажалSave
. В результате имею рухнувший поток Апача (не весь Апач, а только тот поток, который отрабатывал страницу мою). Сохранение данных всё же произошло (просто перегрузил страницу настройки).Вот так обстояли дела...
еще раз напомню пожелание выбора термов по которым формируется алфавитный список.
2smile: Не могли бы Вы подробнее чуть сказать? На странице происходит формирование алфавитного списка и списка терминов, куда входят ноды данного типа.
Так вот, "выбор термов по которым формируется алфавитный список" - он влияет и на алфавитный и на список термов или только на алфавитный список?
Без проблем. Попробую.
В данной редакции модуль формирует алвавитный указатель по всем нодам данного типа.
Что нужно: на реальном сайте в качестве разделов (терминов словаря) используются: новости, статьи и скажем БИОГРАФИИ и КНИГИ.
Новости и статьи искать по первой букве - неумно. Ну т.е. может быть это кому-то и интересно но реально кажется не особено нужно. Имхо, разуеемся. А вот для терминов "Биографии" и "Книги" алфавитный список просто необходим.
Соответственно, хотелось бы получить индекспейдж только для терма "Биографии". Вот как-то так. Ссори, если немного путанно.
Ок! Понял... Ждите.
кстати, да. на сайте, создаваемом с нуля, можно просто разные типы контента под разные разделы сайта сделать, а вот там где материал уже набит - действительно очень нужная вещь.
rgb - только просьба, как всегда сделать эту функцию отключаемой
Да просто сделаю по-умолчанию выбор всех терминов. Пройдёт такой вариант?
на мой взгляд - да. Но пусть ещё люди выскажутся
да, вполне сойдет. по дефолту - все, а выбор - чекбоксами или тектовым полем 1+2+3 и т.д.
да, и хорошо бы такое на старницу поиска, чтоб юзверь сам мог выбрать по каким термам ему шарится.
rariteth - это уже какой-то совсем другой модуль получается на мой взгляд...
а что? вроде хорошо получится, мы в админке определяем какие термы индексировать, а посититель при поиске ставит галочки где ему искать, например "только по названию фильма" или "по аторам книг", "по актёрам"
rariteth - и всё равно я считаю, что это уже совершенно другой модуль получается. тогда может быть вы договоритесь с rgb о создании такой ветки модуля, но загружать обычный indexpage этим... а то какой-то монстр получается. хотя, опять же, это просто моё мнение в любом случае мы тут по неграмотности просто паразитируем на доброте rgb так что за ним последнее слово.
2All: Отправил Shelendor-у очередной вариант модуля. Посмотрите-попробуйте... Пишите если что не так.
2rariteth: да вроде ж был модуль, который позволяет настройки для поиска делать, и выбирать термины в т.ч. Не помню как называется... что-то в районе "Advanced search" или как-то так...
Новую версию прикрепил в первом сообщении. Сейчас тестировать у меня нет возможности, все кто потестит - отпишитесь, пожалуйста, чтобы rgb было проще отлавливать баги, если они есть
огромное пасиба, всё работает - могу с уверенностью сказать, что ни у кого проблем не будет, потомучто сервак настоен не очень. Не работает только для голосования, ну это и не надо - просто говорю. я тестирую на http://web.network-telecom.ru . единственно что хотелось бы добавить так это чтобы можно было бы их называть как-то, менять целиком "indexpage for станица", а не искать потом в словаре. -> Shelendor,rgb - А вообще есть идея сделать совместный проэкт, тока незнаю какой, но хочеться. Знаете как в рекламе макдональдс "Может он и не умеет ловить рыбу, зато он хорошо жарит картошку" это я про indexpage. место под сайт неограничено, севак на хосте моего друга он живёт через дорогу, токлько домен надо будет купить $20 я думаю не проблема? тестировать на ?????.network-telecom.ru бесплатно можно хоть до посинения... MySQL 5.0 . Вобщем ваши мысли, надо разумное что-то ну и прибыльное
Поясните, пожалуйста, подробнее, а то я не понял о чем речь.
Мне очень приятно, что Вы вот так сразу оказываете доверие мне (предложение партнёрства рассмативаю именно так!). Я не прочь принять участие в проекте который был бы интересен или прибылен (к сожалению, сейчас именно на последнем я делаю бОльший акцент). А если и то и другое - так ещё лучше
Мысли разные приходят иногда... Думаю, что обсуждение такое стоит перенести или в другой топик или вообще в другую область (мылом, например)
Quote rariteth:
единственно что хотелось бы добавить так это чтобы можно было бы их называть как-то, менять целиком “indexpage for станица”, а не искать потом в словаре.
Поясните, пожалуйста, подробнее, а то я не понял о чем речь.
----------------------------
всё просто - когда создаёшь что индексировать, то спрашивается как это будет называться, а потом приписывается "index for ..." вот это заменить бы.
про проэкт мылом проще согласен... думаем, всё просто, вот что? на чём бы деньги рубить, место неограничено админ хостинга свой.
про доверие - низнаю просто чувство, а обмануть как-то не получится. Вопрос щикотливый, но я не кину, у меня не это цель, просто хочется сделать что-то стоящее, надоело чушь всякую делать. Прибыль будет не сразу, а приятно что-то вместе и своё.
334-554-044 rariteth@gooogle.com
Прошу прощения, не увидел сразу пост от rariteth за Вто, 24/10/2006 - 01:53.
Предлагаю такое решение: в
indexpage.module
находим строку (у меня она 197-я; ф-цияindexpage_page()
):$output .= '<li>'.l('Index page for '.variable_get('indexpage_'.$type.'_name', $type),'indexpage/'.$type).'</li>';
?>
меняем на:
$output .= '<li>'.l(t('Index page for %index-type-name', array('%index-type-name'=>variable_get('indexpage_'.$type.'_name', $type))),'indexpage/'.$type).'</li>';
?>
Затем, хотя бы раз запрашиваем страницу
http://www.site.com/indexpage
(илиhttp://www.site.com/?q=indexpage
).После этого, идём в "Локализацию" (администрирование сайта), ищем строку "Index page for". В результате будет несколько, выбираем "[i]Index page for %index-type-name[/i]" и меняем на то, что надо.
Предложенный вариант - это самый простой хак (просто первое, что в голову пришло :-)), поэтому если будет не то, что Вы хотели - пишите...
rgb - вы делали эту версию на базе стандартного кода, или вашего? Просто хочется чётко отслеживать в "шапке" темы изменения
rariteth - хм... проблема в том, что я практически вообще не разбираюсь в программировании так что толку от меня вряд ли будет много. А так - я всегда за хорошие идеи.
На базе моего.
Версия 1.2.2 - это продолжение 1.2.1 (а перед той версией решили использовать "оптимизированный" вариант кода).
А можно както добавить буквенную линейку пунктик "ВСЕ",который выводил бы все материалы данного типа вот так:
А
[ список материалов на букву "А"]
Б
[ список материалов на букву "Б"]
В
.......
ну и так далее
Или может это можно как-то сделать через аргументы?
Этим хаком меняеться только на странице ?q=indexpage,а хотелось бы чтобы менялось в заголовке страниц вида ?q=indexpage.yourcontentype
И еще вопрос. Можна ли вместо типа материала подставить текст из поля лейбл(или любого другого) в свойствах типа материала (я использую ССК)
Прошу прощения, ошибся. вместо "ссылка вида ?q=indexpage.yourcontentype" читать "ссылка вида ?q=indexpage/yourcontentype"
Все материалы данного типа? А "
?q=<node type here>
" подойдёт? Это то, что Вы хотите?Сорри, я не понял этого. Не могли бы Вы подробнее описать?
Я гляну, что можно сделать.
С CKK пока не работал на уровне API, обещать ничего не буду, но тоже при случае гляну. Там, по идее не должно быть сложно.
Нет. Так выводяться все материалы отсортированные по дате. Мне нужно чтобы они выводились отсортированные по алфавиту и только заголовки (индекспейдж при клике на букву на линейке делает это, но только для одной буквы, а нужно чтобы все сразу). Еще хотелось-бы чтобы на линейку с буквами добавилась кнопка "ВСЕ", при клике на которую все это и выводилось бы.
Вообщем-то все что я хочу я описал выше: чтоб выводились все метериалы по алфавиту. А дополнительно хотелось-бы чтобы перед группой материалов(заголовков), которые начинаються на одну букву стояла эта самая буква -- большая и красивая.
Ох. Чувствую что многого хочу, но если вам не трудно, то вы бы мне оченьздорово помогли.
2Maf: Угу... кажется вразумел. Быстро не обещаю, но попробую.
вобщем то разумное предложение, весь алфавит потом в конце/начале ссылка "весь материал"(и там большая буква потом список на неё), а при выборе какой-то буквы выводился список на эту букву и сама буква была в начале и большая(выделенная как-то)...
Новая версия модуля IndexPage отправлена Shelendor-у.
Посмотрите-попробуйте… Пишите если что не так.
Что-то не спешит он выкладывать. Вышлите пожалуйста мне на мыло если не сложно: mahvon@gmail.com
Maf - ну уж извините, занят я был днём.
Версия 1.2.3 прикреплена к первому сообщению темы.
Не работает. Вообще ничего не выводит
Нашел в чем проблема. Я не исполюзую термов. Можно сделать так чтобы можно было их отключать, чтобы модуль на них не обращал внимания как в версии 1.2.1
Заставил его работать. Почему при нажатии на "all" он выводит только небольшой кусок списка? Как заставить выводить все?
И эту проблему решил. Оказалось дело в параметре "количество материалов на страницу", но максимальное значение там 99 и это уже проблема, если материалов больше. По-идее в случае большего числа материалов они должны выводиться потранично, но этгго не происходит: ссылок на типа страница1, страница2 нету, а модуль поросто выводит отведенное ему количество материалов
Решений я вижу 2: убрать ограничение на 99 атериалов, либо заставить модуль бить материалы на страницы.
Про "не использую" подробнее можно? Вы их не используете вообще или для какого-то типа контета? В общем опишите, что б я смог у себя повторить эту ситуацию. Тогда и смогу поправить модуль.
Я гляну, что там можно сделать. Единственно такую штуку проверьте - стандартный (в смысле, не патченный) модуль тоже выводит у Вас не всё? (Просто мои исправления, по идее, не должны были на это повлиять, и если изначально модуль с выводом справлялся, то и теперь должен был).
а я, пожалуй, всё же выскажусь за разделение на 2 ветки. Мне, к примеру, совершенно не нужна возможность вывода всех материалов. И не думаю, что моя ситуация уникальна соответственно, нет нужды и желания делать эти добавки в css. Так что, rgb, если не сложно - можно просто исправить баги в старой версии без этих добавлений?
Исправить отдельно могу.
Что касаемо добавок в CSS - они совсем не обязательны. Они влияют только на [b]отображение[/b] букв, при выводе страницы со всеми материалами данного типа. Если не сделать этих добавок, то всё по прежднему будет работать, просто эти буквочки будут выводиться таким размером, как весь остальной текст и всё.
Отображение ссылки на "все" можно включить/выключить в настройках модуля ("Show 'All' link").
Таким образом, если Вы не хотите использовать эту ф-циональность, то просто отключаете её, да и всё.
Отдельно фиксы багов для версии 1.2.2 выложу тут завтра.
Вообще не использую. В такой ситуации версия выше 1.2.1 ничего не выводит
В стандартном модуле нет функции "выводить все", а на одну букву материалов так много пока нет. Сейчас попробую наделать много материалов на букву и скажу как оно.
ЗыЖ ага. оно тоже не бьет на страницы и выводит только отведенное количество Тоесть это глюк оригинального модуля. Есть идеи как исправить или сделать макс число материалов на страницу больше чем 99?
Понял. Постараюсь исправить.
Так я и думал.
Гляну.
Просто для информации: отправил Shelendor-у версию 1.2.2 с фиксами и обозвал её - 1.2.2.1.Там только исправления версии 1.2.2, без ф-ции вывода всех материалов, данного типа (эта ф-ция пристуствует только в версии 1.2.3).
1.2.2.1 прикрепил спасибо
А для 6-й ветки как сделать?