0 Пользователей и 1 Гость просматривают эту тему.
  • 65 Ответов
  • 26785 Просмотров
*

denkog

  • Осваиваюсь на форуме
  • 46
  • 9 / 0
  • Вот тут решил разобраться с русским индексом поиска, да и вообще с русским языком в тех местах в которых как правило это трудно сделать.
    Короче будем рассматривать адаптацию под русский язак для модуля ZOO 2.0 - Business
    И так начнем....

    Что нам для этого нужно...
    1 - Модуль PHP mbstring <- Найти не проблема.
    2 - Далее  Notepad++ ver 5.0 или выше где есть пункт меню (Кодировка-> Преобразовать в UTF-8 без BOM), да или вообще какой нибудь преобразователь кодировки.
    3 - Файл joomla\media\zoo\applications\business\types\company.xml - Содержимое и назначение рассмотрим ниже.
    4 - Файл joomla\media\zoo\applications\business\config\alphaindex.xml - Содержимое и назначение рассмотрим ниже.
    5 - Файл шаблона joomla\media\zoo\applications\business\templates\default\alphaindex.php

    Теперь рассмотрим поподробнее:

    1 - Модуль необходим для преобразования букв русской кодировки UTF-8 из маленьких в большие. Стандартные средства PHP не подходят(Страшные глюки происходят к примеру преобразуем в верхний регистр strtoupper('д'); получаю на выходе 'Х' - Хрень Да.).

    2 - Служит для преобразования кодировок.

    3 - Типо описание всякой фигни, такие как телефоны, факсы, адреса, страны, города ну и.т.д.(Короче это типы).
    Вот здесь и будим исправлять на русский язык эти названия смотри ниже.
    К примеру:
    <param type="text" identifier="ed9cdd4c-ae8b-4ecb-bca7-e12a5153bc02" name="Подзаголовок" description="" default="" repeatable="0"/>
    <param type="text" identifier="b870164b-fe78-45b0-b840-8ebceb9b9cb6" name="Телефон" description="" default="" repeatable="0"/>

Код
<?xml version="1.0" encoding="utf-8"?>
<type version="1.0.0" name="Company">
  <params>
    <param type="text" identifier="ed9cdd4c-ae8b-4ecb-bca7-e12a5153bc02" name="Подзаголовок" description="" default="" repeatable="0"/>
    <param type="textarea" identifier="a77f06fc-1561-453c-a429-8dd05cdc29f5" name="Краткое описание" description="" default="" jplugins="0" repeatable="0"/>
    <param type="textarea" identifier="1a85a7a6-2aba-4480-925b-6b97d311ee6c" name="Описание" description="" default="" jplugins="1" repeatable="1"/>
    <param type="image" identifier="ffcc1c50-8dbd-4115-b463-b43bdcd44a57" name="Изображение" description="" custom_link="0" custom_title="0" default_rel=""/>
    <param type="text" identifier="4339a108-f907-4661-9aab-d6f3f00e736e" name="Улица" description="" default="" repeatable="0"/>
    <param type="text" identifier="ea0666d7-51e3-4e52-8617-25e3ad61f8b8" name="Postcode" description="" default="" repeatable="0"/>
    <param type="text" identifier="90a18889-884b-4d53-a302-4e6e4595efa0" name="Город" description="" default="" repeatable="0"/>
    <param type="text" identifier="6a20c005-7bd3-4014-919a-6edfd2239284" name="Штат" description="" default="" repeatable="0"/>
    <param type="country" identifier="81c5f642-2f7f-491f-b1c2-ce32ec688125" name="Страна" description="" multiselect="1">
      <selectable_country value="DE"/>
      <selectable_country value="GB"/>
      <selectable_country value="US"/>
    </param>
    <param type="text" identifier="b870164b-fe78-45b0-b840-8ebceb9b9cb6" name="Телефон" description="" default="" repeatable="0"/>
    <param type="text" identifier="8a91aab2-7862-4a04-bd28-07f1ff4acce5" name="Факс" description="" default="" repeatable="0"/>
    <param type="email" identifier="3f15b5e4-0dea-4114-a870-1106b85248de" name="E-Mail" description="" use_email_as_text="1" default_text="" default_subject="" default_body="" repeatable="0"/>
    <param type="link" identifier="0b3d983e-b2fa-4728-afa0-a0b640fa34dc" name="Web-Сайт" description="" use_link_as_text="1" default_text="" custom_title="0" default_rel="" repeatable="0"/>
    <param type="relateditems" identifier="7056f1d2-5253-40b6-8efd-d289b10a8c69" name="Employee" description="">
      <selectable_type value="employee"/>
    </param>
    <param type="rating" identifier="cf6dd846-5774-47aa-8ca7-c1623c06e130" name="Рейтинг" description="" stars="5" allow_vote="0"/>
    <param type="googlemaps" identifier="160bd40a-3e0e-48de-b6cd-56cdcc9db892" name="Карты" description="" google_api_key="ABQIAAAA2u6VGRnq68BKZyF5BisgghQbadBmKcUIPHxSF0F5bD4xQY6ODhSeS9As9v-ogciqHsd4GS7PWWlt2Q" locale="en"/>
  </params>
</type>
Не копируйте этот код, лучше исправите у себя вручную избежите некоторых проблем
Вот только после всех исправлений не забудьте перекодировку файла сделать UTF-8.

4 - Теперь займемся русским индексом, для поиска.
Открываем наш файл joomla\media\zoo\applications\business\config\alphaindex.xml. и вставляем в него код приведенный ниже.
Код
<?xml version="1.0" encoding="utf-8"?>
<alphaindex other="#">
<option>а</option>
<option>б</option>
<option>в</option>
<option>г</option>
<option>д</option>
<option>е</option>
<option>ж</option>
<option>з</option>
<option>и</option>
<option>к</option>
<option>л</option>
<option>м</option>
<option>н</option>
<option>о</option>
<option>п</option>
<option>р</option>
<option>м</option>
<option>т</option>
<option>у</option>
<option>ф</option>
<option>х</option>
<option>ц</option>
<option>ч</option>
<option>ш</option>
<option>щ</option>
<option>э</option>
<option>ю</option>
<option>я</option>
<option>#</option>
</alphaindex>

Да короче берите и копируйте этот код
Не забудьте перекодировку файла сделать UTF-8.

После данной процедуры должно работать. Если не работает то пишите мне.

5 - Нормальное отображение слова (Компании начинающиеся с... {Правильная буква, согласно поиску})
Открываем наш файл joomla\media\zoo\applications\business\templates\default\alphaindex.php (главное не забудьте одну особенность, что может использоваться шаблон из набора шаблонов joomla\templates - то тогда надо исправлять там, но это не столь важно для данного случая  )

И так...
находим в нем строку
echo JText::_('Companies starting with').' '.strtoupper($this->alpha_char);
и заменяем на
echo JText::_('Companies starting with').' '.mb_strtoupper($this->alpha_char);
Смотри код ниже...
Код
<?php
/**
* @package   ZOO Component
* @file      alphaindex.php
* @version   2.0.0 May 2010
* @author    YOOtheme http://www.yootheme.com
* @copyright Copyright (C) 2007 - 2010 YOOtheme GmbH
* @license   http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
*/
// no direct access
defined('_JEXEC') or die('Restricted access');
// include assets css/js
if (strtolower(substr($GLOBALS['mainframe']->getTemplate(), 0, 3))!= 'yoo') {
JHTML::stylesheet('reset.css', 'media/zoo/assets/css/');
}
JHTML::stylesheet('zoo.css.php', $this->template->getURI().'/assets/css/');
$css_class = $this->application->getGroup().'-'.$this->template->name;
?>
<div id="yoo-zoo" class="yoo-zoo <?php echo $css_class; ?> <?php echo $css_class.'-alphaindex'; ?>">
<?php if ($this->params->get('template.show_alpha_index')) : ?>
<?php echo $this->partial('alphaindex'); ?>
<?php endif; ?>
<?php if ($this->params->get('template.show_title')) : ?>
<div class="details <?php echo 'align-'.$this->params->get('template.alignment'); ?>">
<h1 class="title"><?php echo JText::_('Companies starting with').' '.mb_strtoupper($this->alpha_char); ?></h1>
</div>
<?php endif; ?>
<?php
// render categories
$has_categories = false;
if (!empty($this->selected_categories)) {
$has_categories = true;
echo $this->partial('categories');
}
?>
<?php
// render items
if (count($this->items)) {
echo $this->partial('items', compact('has_categories'));
}
?>
</div>
Все теперь проблем с UTF-8 у нас больше нет.


Всем спасибо за прочтенную статью пишите комментарии и благодарности, если че то пишите в личку *DRINK*
 ;DАвтор: DENKOG ;D
*

bekky

  • Новичок
  • 7
  • 0 / 0
Огромное спасибо за исправление alpha index! Именно то, что нужно и сразу получилось, в любой application работает!
*

kapustinav

  • Новичок
  • 3
  • 0 / 0
Подскажите как сделать одновременно вывод алфавита на русском и на английском языке
*

OKM

  • Захожу иногда
  • 68
  • 4 / 0
Надо прописать в файле joomla\media\zoo\applications\business\config\alphaindex.xml русские и английские буквы
*

Nusinam

  • Захожу иногда
  • 63
  • 4 / 0
TS,

вы забыли в альфа индекс добавить:
 
Код
<option>с</option>
после "р"
*

mkorolkov

  • Новичок
  • 3
  • 3 / 0
На самом деле вот что надо вставить

Код
<div class="alpha-index">
<?php
$alpha= $this->alpha_index->render($this->link_base.'&task=alphaindex&app_id='.$this->application->id);
if (strpos($alpha,'#</span>')){
$alpha_en_ru=split ('#</span>',$alpha);
$alpha_en_ru[0].='#</span>';
}
elseif (strpos($alpha,'#</a>')) {
$alpha_en_ru=split ('#</a>',$alpha);
$alpha_en_ru[0].='#</a>';
}
echo $alpha_en_ru[0];
?>
</div>
<div class="alpha-index">
<?php
echo $alpha_en_ru[1];
?>
*

mkorolkov

  • Новичок
  • 3
  • 3 / 0
А еще правильнее вместо split() использовать функцию explode();
*

dsamj

  • Осваиваюсь на форуме
  • 28
  • 3 / 0
не работает, может что в alphaindex.xml ещё прописать?

А еще правильнее вместо split() использовать функцию explode();

А можно поподробнее?
*

mkorolkov

  • Новичок
  • 3
  • 3 / 0
Для тех кто в танке и думать не желает...

Добавить в alphaindex.xml

Код
<?xml version="1.0" encoding="utf-8"?>
<alphaindex other="#">
<option>a</option>
<option>b</option>
<option>c</option>
<option>d</option>
<option>e</option>
<option>f</option>
<option>g</option>
<option>h</option>
<option>i</option>
<option>j</option>
<option>k</option>
<option>l</option>
<option>m</option>
<option>n</option>
<option>o</option>
<option>p</option>
<option>q</option>
<option>r</option>
<option>s</option>
<option>t</option>
<option>u</option>
<option>v</option>
<option>w</option>
<option>x</option>
<option>y</option>
<option>z</option>
<option>#</option>
<option>а</option>
<option>б</option>
<option>в</option>
<option>г</option>
<option>д</option>
<option>е</option>
<option>ж</option>
<option>з</option>
<option>и</option>
<option>к</option>
<option>л</option>
<option>м</option>
<option>н</option>
<option>о</option>
<option>п</option>
<option>р</option>
<option>с</option>
<option>т</option>
<option>у</option>
<option>ф</option>
<option>х</option>
<option>ц</option>
<option>ч</option>
<option>ш</option>
<option>щ</option>
<option>э</option>
<option>ю</option>
<option>я</option>
</alphaindex>

Затем внести изменения в файле _alphaindex.php

Код
<?php
/**
* @package   ZOO Component
* @file      _alphaindex.php
* @version   2.0.1 May 2010
* @author    YOOtheme http://www.yootheme.com
* @copyright Copyright (C) 2007 - 2010 YOOtheme GmbH
* @license   http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
*/

// no direct access
defined('_JEXEC') or die('Restricted access');

?>

<div class="alpha-index">
<?php
$alpha= $this->alpha_index->render($this->link_base.'&task=alphaindex&app_id='.$this->application->id);
if (strpos($alpha,'#</span>')){
$alpha_en_ru=explode('#</span>',$alpha);
$alpha_en_ru[0].='#</span>';
}
elseif (strpos($alpha,'#</a>')) {
$alpha_en_ru=explode('#</a>',$alpha);
$alpha_en_ru[0].='#</a>';
}
echo $alpha_en_ru[0];
?>
</div>
<div class="alpha-index">
<?php
echo $alpha_en_ru[1];
?>
</div>
*

dsamj

  • Осваиваюсь на форуме
  • 28
  • 3 / 0
mkorolkov Огромное спасибо! Я кавырял alphaindex.php )))  А надо было _alphaindex.php
*

goga63

  • Осваиваюсь на форуме
  • 41
  • 1 / 0
 с Product вроде получилось, не знаю на сколько правилен код, но все работает
Код
// no direct access
defined('_JEXEC') or die('Restricted access');

?>

<div class="alpha-index">
<div class="alpha-index-2">
<div class="alpha-index-3">

<?php
$alpha= $this->alpha_index->render($this->link_base.'&task=alphaindex&app_id='.$this->application->id);
if (strpos($alpha,'#</span>')){
$alpha_en_ru=explode('#</span>',$alpha);
$alpha_en_ru[0].='#</span>';
}
elseif (strpos($alpha,'#</a>')) {
$alpha_en_ru=explode('#</a>',$alpha);
$alpha_en_ru[0].='#</a>';
}
echo $alpha_en_ru[0];
?>
</div>
</div>
</div>
<div class="alpha-index">
<div class="alpha-index-2">
<div class="alpha-index-3">

<?php
echo $alpha_en_ru[1];
?>
</div>
</div>
</div>

« Последнее редактирование: 28.08.2010, 22:39:01 от goga63 »
*

goga63

  • Осваиваюсь на форуме
  • 41
  • 1 / 0
В доплнение к предидущему посту: "...вроде все работает..."
Да, работает, но только на локалке, на хосте (Агава) работает не полностью. Тоесть :
Каталог Product
На локалке (Денвер) альфа-индекс в две строки (английский, русский) - поиск работает по обоим алфавитам.
На хосте (Агава) альфа-индекс в две строки (английский, русский) - поиск работает по английскому алфавиту,
по русскому выдает после  альфа-индекса пустой лист, хотя русские букви прицепленные к итемам и категориям подсвечены.
где собака зарыта ?

Может проблема в этом:
Цитата из первого поста темы :"1 - Модуль PHP mbstring  необходим для преобразования букв русской кодировки UTF-8 из маленьких в большие. Стандартные средства PHP не подходят(Страшные глюки происходят к примеру преобразуем в верхний регистр strtoupper('д'); получаю на выходе 'Х' - Хрень Да.)."
Цитата из письма хостера:"# Кодировки .    Все файлы на сервере должны быть в кодировке win-1251. Если посетители
вашего веб сайта запросят файлы в какой-либо другой кодировке, то они
будут автоматически перекодированы нашим веб сервером (у нас установлен
Russian Apache"
может в этом конфликт ?

P.S. в програмировании я ноль  >:(
« Последнее редактирование: 16.09.2010, 08:38:49 от goga63 »
*

dsamj

  • Осваиваюсь на форуме
  • 28
  • 3 / 0
goga63 возможно вот это тебе поможет: http://joomlaforum.ru/index.php/topic,116074.msg643060.html#msg643060
Такая-же проблема на хосте была, поставил в настройках сервера UTF и всё заработало.

Здравствуйте! Проблема такая: альфаиндекс и пр. поправил, русские буквы появились. Забил два элемента, начинающихся на "А". В альфаиндексе соответствующая буква стала активной, но при нажатии на нее список элементов пуст...
*

alex911

  • Захожу иногда
  • 93
  • 1 / 0
А как вывести алфавитный указатель в 3 строчки? а то у меня в шаблон не влизает все=( только A-X и А-Ш. т.е. не хватает в каждой строчки 5 символов
« Последнее редактирование: 15.10.2010, 00:44:42 от alex911 »
*

denkog

  • Осваиваюсь на форуме
  • 46
  • 9 / 0
Смотри у тебя две буквы АА
*

vitalura

  • Осваиваюсь на форуме
  • 45
  • 1 / 0
TS,

вы забыли в альфа индекс добавить:
 
Код
<option>с</option>
после "р"

Просто там 2 буквы "М" (закопипастился чел)
*

Neyro

  • Новичок
  • 2
  • 0 / 0
Не могу понять в чем дело?

 Сделал все как указано в первом посте. До пункта 4 все нормально. Русские буквы появились.  С пунктом 5 проблема: внес изменения в альфаиндекс - и все равно при нажатии на русские буквы дает надпись (Компании начинающиеся на англ. букву). Например жму букву "Д"- а мне дает:   Компании начинающиеся с... D.   
*

Darknemo

  • Захожу иногда
  • 225
  • 2 / 0
так кто подскажет как разделить инглиш и русские буквы в 2 строки ? Zoo 2.3
*

twins717

  • Осваиваюсь на форуме
  • 28
  • 0 / 0
Подскажите как поменять надпись "Discuss this Recipe" в папке company.xml  она отсутствует, а FireBug показывает что строка находить по адрессу "http://pizza/index.php?option=com_zoo&view=frontpage&Itemid=26", но в какой папке сам скрипт я понять не могу перелазил все папки и файлы.
*

dominic

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Здравствуйте! Проблема такая: альфаиндекс и пр. поправил, русские буквы появились. Забил два элемента, начинающихся на "А". В альфаиндексе соответствующая буква стала активной, но при нажатии на нее список элементов пуст...


кодировка базы, поменять все, что связано с zoo на utf8
« Последнее редактирование: 11.02.2011, 23:09:47 от dominic »
*

dominic

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Подскажите как поменять надпись "Discuss this Recipe" в папке company.xml  она отсутствует, а FireBug показывает что строка находить по адрессу "http://pizza/index.php?option=com_zoo&view=frontpage&Itemid=26", но в какой папке сам скрипт я понять не могу перелазил все папки и файлы.

/media/zoo/applications/cookbook/language/en-GB/en-GB.com_zoo.ini

Создай в '/media/zoo/applications/cookbook/language/' папку 'ru-RU'.
Скопируй туда en-GB.com_zoo.ini, переименуй в ru-RU.com_zoo.ini естественно.
Ну и конечно в самом файле переведи строчки или замени на то, что тебе нужно.
*

haidamaka

  • Осваиваюсь на форуме
  • 44
  • 1 / 0
Сделал всё как описано выше, перепроверил.
Но не работает.
В чём может быть проблема?
*

lakmuss

  • Захожу иногда
  • 80
  • 1 / 0
Спасибо Denkog сделал и вроде всё работает.

Но остались следующие вопросы:
1) Зачем нам был нужен "Модуль PHP mbstring" - вроде работает без него? И если он всё таки очень нужен то куда его и как применять?
2) Как разделить Alphabar в две строки на русские и английские буквы?

Или надо всё сделать лучше вот как mkorolkov
*

lakmuss

  • Захожу иногда
  • 80
  • 1 / 0
Средствами CSS можно сделать довольно неплохо выглядящий alphabar. Может конечно это и через одно место, но я выставил размер #yoo-zoo .alpha-index по ширине русского алфавита и английский автоматически переползает на следующую строчку. Нужно поменять  media/zoo/applications/business/templates/default/assets/css/category.css

#yoo-zoo .alpha-index {
height: 42px;
margin-bottom: 10px;
width: 570px;
 }
« Последнее редактирование: 02.06.2011, 17:08:39 от lakmuss »
*

SyncMaster

  • Moderator
  • 103
  • 51 / 6
Судя по многочисленным одинаковым темам и вопросам о том как разделить alphabar на две строки люди либо жадничают либо им лень говорить.

Отзывы, потому что люди поколения «Видеоурок „Сайт за полчаса“» не понимают что делать. Им видео надо. Хотя все уже разжевали — осталось только скопипастить.
*

lakmuss

  • Захожу иногда
  • 80
  • 1 / 0
Прошу прощения, я тупой.  ::) Всё работает.
*

lakmuss

  • Захожу иногда
  • 80
  • 1 / 0
Поставил на hoste отображение notice и вот что он выдает:
Notice:  Undefined property: AppView::$link_base in ../media/zoo/applications/business/templates/default/_alphaindex.php on line 22

Ругается вот на эту строку:

Цитировать
<?php
      $alpha= $this->alpha_index->render($this->link_base.'&task=alphaindex&app_id='.$this->application->id);
      if (strpos($alpha,'СЏ</span>')){
         $alpha_en_ru=explode('СЏ</span>',$alpha);
         $alpha_en_ru[0].='СЏ</span>';
      }
      elseif (strpos($alpha,'СЏ</a>')) {
         $alpha_en_ru=explode('СЏ</a>',$alpha);
         $alpha_en_ru[0].='СЏ</a>';
      }
      echo $alpha_en_ru[0];
?>
   
« Последнее редактирование: 06.06.2011, 13:49:26 от lakmuss »
*

SyncMaster

  • Moderator
  • 103
  • 51 / 6
Ругается вот на эту строку:

Код сравните с Вашим. Откуда там взялись символы типа СЏ ?
*

lakmuss

  • Захожу иногда
  • 80
  • 1 / 0
Код сравните с Вашим. Откуда там взялись символы типа СЏ ?
Это буква "я", просто у меня русский алфавит идет перед английским.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено] ХАК Режима Доверия в "business directory" (ZOO 2.3)

Автор Dr_Satyr

Ответов: 16
Просмотров: 6482
Последний ответ 18.02.2015, 13:31:47
от xavier13
[App Business Catalog]: Показ пустых категорий. Hack.

Автор userxp

Ответов: 13
Просмотров: 6180
Последний ответ 13.01.2014, 10:54:59
от мираж
Деление Zoo business directory на регионы

Автор DeLight

Ответов: 1
Просмотров: 725
Последний ответ 14.12.2013, 23:19:51
от likrion
Zoo 2.5.* Business Directory и микроданные

Автор DeLight

Ответов: 0
Просмотров: 1099
Последний ответ 07.04.2013, 12:27:22
от DeLight
скрипт "Добавить в блокнот" для business каталога

Автор diks13

Ответов: 9
Просмотров: 1939
Последний ответ 07.06.2012, 15:19:45
от oppo