Форум русской поддержки Joomla!® CMS
07.12.2016, 12:40:43 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Компонент SEO Glossary - алфавит нескольких языков

 (Прочитано 473 раз)
0 Пользователей и 1 Гость смотрят эту тему.
stepan39
Давно я тут
****

Репутация: +17/-0
Offline Offline

Пол: Мужской
Сообщений: 220



« : 26.11.2015, 11:54:19 »

Добрый день!
Давно юзаю компонент SEO Glossary https://www.joomunited.com/products/seo-glossary

Там, к сожалению, нет возможности отобразить  буквенный поиск построчно при использовании нескольких языков, т.е. так в оригинале:

Все А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Э Ю Я A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

был задача - сделать так:

Все
А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Э Ю Я
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Реализовал (возможно через ж...) просто добавив в настройках после каждого языка тег <br>
фактически использовав его вместо буквы алфавита.

Пример настроек:

<br>, А, Б, В, Г, Д, Е, Ё, Ж, З, И, Й, К, Л, М, Н, О, П, Р, С, Т, У, Ф, Х, Ц, Ч, Ш, Щ, Э, Ю, Я, <br>, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z

Вот пример отображения: http://rock-catalog.ru/labels

Недостатки: появились ссылки вида http://rock-catalog.ru/labels/<br>
Они не отображаются на сайте, но все ведут естественно на 404

Сделал так в .htaccess:
redirect 301 /labels/<br> http://rock-catalog.ru/labels

Соответственно, для всех глоссариев (категорий) такие записи нужно продублировать.



Записан
Shustry
Группа развития
*****

Репутация: +727/-3
Offline Offline

Пол: Мужской
Сообщений: 6667


Рисую дизайны


« Ответ #1 : 26.11.2015, 15:14:28 »

Вместо «<br>» напишите например «__», затем найдите файл, где формируется этот список и оберните вывод ссылки в условие.
Ну или выложите сюда код этого файла, помогу.
Записан
stepan39
Давно я тут
****

Репутация: +17/-0
Offline Offline

Пол: Мужской
Сообщений: 220



« Ответ #2 : 26.11.2015, 17:40:05 »

Вместо «<br>» напишите например «__», затем найдите файл, где формируется этот список и оберните вывод ссылки в условие.
Ну или выложите сюда код этого файла, помогу.
Вот код файла (сам вряд-ли условие грамотно напишу), только надо помнить, ради чего все это делалось - чтобы буквы разных языков отображались построчно. "Кривые" ссылки всего лишь следствие простого решения.
Показать текстовый блок
Записан
Shustry
Группа развития
*****

Репутация: +727/-3
Offline Offline

Пол: Мужской
Сообщений: 6667


Рисую дизайны


« Ответ #3 : 26.11.2015, 18:13:55 »

В конце там цикл замените:

Код
foreach( $db->loadObjectList() as $glossary)
{
if ((trim($glossary->name)) == '___') { // В качестве разделителя три подчёркивания
$output .= '</ul><ul>'; // Закрываем лист, открываем новый.
} else { // Если не разделитель, то выводим элементы:
$nb++;
 
$output .= '<li>';
 
$class = "seoglGlossaryCurrentLink";
if ($glossary->id != $current_id)
{
$class = "seoglGlossaryLink";
}
 
$Itemid = JRequest::getVar( "Itemid", '' );
$url = JRoute::_( 'index.php?option=com_seoglossary&view=glossaries'. ( ( $letter !== null )? '&letter=' . $letter : '' ). '&catid=' . $glossary->id . ( (!empty($Itemid))? '&amp;Itemid=' . $Itemid : '') );
$output .= '<a href="'.$url.'" class="'.$class.'">';
 
 
$output .= $glossary->name;
 
$output .= '</a>';
 
$output .= '</li>';
} // Закрываем условие
}
 
Записан
stepan39
Давно я тут
****

Репутация: +17/-0
Offline Offline

Пол: Мужской
Сообщений: 220



« Ответ #4 : 27.11.2015, 10:30:45 »

В конце там цикл замените
Не работает, к сожалению. В одну строку все буквы и формируются ссылки /___
Записан
Shustry
Группа развития
*****

Репутация: +727/-3
Offline Offline

Пол: Мужской
Сообщений: 6667


Рисую дизайны


« Ответ #5 : 27.11.2015, 11:59:50 »

Тогда так:

Код
foreach( $db->loadObjectList() as $glossary)
{
if (preg_match('/___/i', $glossary->name)) {
$output .= '</ul><ul>';
} else {
$nb++;
 
$output .= '<li>';
 
$class = "seoglGlossaryCurrentLink";
if ($glossary->id != $current_id)
{
$class = "seoglGlossaryLink";
}
 
$Itemid = JRequest::getVar( "Itemid", '' );
$url = JRoute::_( 'index.php?option=com_seoglossary&view=glossaries'. ( ( $letter !== null )? '&letter=' . $letter : '' ). '&catid=' . $glossary->id . ( (!empty($Itemid))? '&amp;Itemid=' . $Itemid : '') );
$output .= '<a href="'.$url.'" class="'.$class.'">';
 
 
$output .= $glossary->name;
 
$output .= '</a>';
 
$output .= '</li>';
}
}
Записан
stepan39
Давно я тут
****

Репутация: +17/-0
Offline Offline

Пол: Мужской
Сообщений: 220



« Ответ #6 : 27.11.2015, 16:35:42 »

Тогда так
По прежнему в одну строку и ссылки ___
Записан
Shustry
Группа развития
*****

Репутация: +727/-3
Offline Offline

Пол: Мужской
Сообщений: 6667


Рисую дизайны


« Ответ #7 : 27.11.2015, 17:04:02 »

Здесь глоссарий выводится таблицей (http://rock-catalog.ru/labels), а в коде файла списком. Вы код не того файла выложили.
Записан
stepan39
Давно я тут
****

Репутация: +17/-0
Offline Offline

Пол: Мужской
Сообщений: 220



« Ответ #8 : 27.11.2015, 17:27:23 »

Здесь глоссарий выводится таблицей (http://rock-catalog.ru/labels), а в коде файла списком. Вы код не того файла выложили.
Не совсем так. Вот шаблон вывода:
Показать текстовый блок
Там есть
Код:
<?php
if ( $this->params->get( 'alphabet', 1 )!= 0 )
{
echo $this->alphabetform;
}
?>
Формирование  alphabetform у нас только в файле, который я выложил.

В роутере еще есть кусок относительно алфавита:
Код:
$alphabet = explode(',', str_replace('#', '(s)', $cat->alphabet));
foreach($alphabet as &$l)
$l = trim(mb_strtolower($l));

if (!in_array(mb_strtolower($letter), $alphabet)) {
JError::raiseError(404, JText::_("Page Not Found"));
return array();
}

$query['letter'] = (string)$letter;
array_shift($segments);
}

Весь роутер тут:
Показать текстовый блок
Записан
Shustry
Группа развития
*****

Репутация: +727/-3
Offline Offline

Пол: Мужской
Сообщений: 6667


Рисую дизайны


« Ответ #9 : 27.11.2015, 17:30:10 »

Не на тот глоссарий на сайте смотрел. У вас выше таблице, ниже списком. Попробуйте везде поставить одно подчёркивание. И в админке, и в коде, что я приводил. Должно работать.
Записан
Shustry
Группа развития
*****

Репутация: +727/-3
Offline Offline

Пол: Мужской
Сообщений: 6667


Рисую дизайны


« Ответ #10 : 27.11.2015, 17:31:22 »

Сперва проверьте, тот ли файл. Для этого замените

$output .= $glossary->name;

Например на

$output .= $glossary->name.'000';
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet