Перейти к содержимому


Фотография
- - - - -

Альфаиндекс ограничение по материалу

альфаиндекс альфа индекс alphaindex alpha index

Лучший Ответ Cheren-dow , 02 June 2015 - 10:14

toyda, еще один вариант, с каким подводными камнями он будет не знаю. Попробуйте в файле

сайт\administrator\components\com_zoo\tables\item.php

найти метод getByCharacter а в нем заменить $query на 

		$query = "SELECT a.*"
			." FROM ".ZOO_TABLE_CATEGORY_ITEM." AS ci"
			." JOIN ".$this->name." AS a ON a.id = ci.item_id"
			.($join ? $join : "")
			." WHERE a.application_id = ".(int) $application_id
			." AND a.".$this->app->user->getDBAccessString($user)
			.($published == true ? " AND a.state = 1 AND a.type = 'product'" // укажите тип
			." AND (a.publish_up = ".$null." OR a.publish_up <= ".$now.")"
			." AND (a.publish_down = ".$null." OR a.publish_down >= ".$now.")": "")
			." AND BINARY LOWER(LEFT(a.name, 1)) ".(is_array($char) ? ($not_in ? "NOT" : null)." IN (".implode(",", $char).")" : " = '".$db->escape($char)."'")
			." ORDER BY a.priority DESC".($order ? ", $order" : "")
			.(($limit ? " LIMIT ".(int) $offset.",".(int) $limit : ""));
Перейти к сообщению


  • Закрытая тема Тема закрыта
Сообщений в теме: 9

#1 toyda

toyda

Отправлено 02 June 2015 - 08:15

Скажите пожалуйста, можно ли ограничить работу альфа индекса только для определенного типа материала, а то ваще бесит уже >___<

 

зарание большое спасибо!


  • 0

#2 Cheren-dow

Cheren-dow

Отправлено 02 June 2015 - 08:30

toyda, готового решения нет, изменить логику работы альфаиндекса можно только хаками для компонента Zoo.


  • 0
Изображение
 

#3 toyda

toyda

Отправлено 02 June 2015 - 08:38

toyda, готового решения нет, изменить логику работы альфаиндекса можно только хаками для компонента Zoo.

 

Есть хотя бы пример такого хака? Куда лезть?


  • 0

#4 Cheren-dow

Cheren-dow

Отправлено 02 June 2015 - 08:47

toyda, выборка происходит в файле

сайт\administrator\components\com_zoo\helpers\application.php 

метод getAlphaIndex тут есть запрос 

$query = 'SELECT DISTINCT BINARY CONVERT(LOWER(LEFT(name, 1)) USING utf8) letter'
					.' FROM ' . ZOO_TABLE_ITEM
					.' WHERE id IN (SELECT item_id FROM ' . ZOO_TABLE_CATEGORY_ITEM . ')'
					.' AND application_id = '.(int) $application->id
					.' AND '.$this->app->user->getDBAccessString()
					.' AND state = 1'
					.' AND (publish_up = '.$null.' OR publish_up <= '.$now.')'
					.' AND (publish_down = '.$null.' OR publish_down >= '.$now.')';

попробуйте заменить его на, указав свой псевдоним типа

$query = 'SELECT DISTINCT BINARY CONVERT(LOWER(LEFT(name, 1)) USING utf8) letter'
					.' FROM ' . ZOO_TABLE_ITEM
					.' WHERE id IN (SELECT item_id FROM ' . ZOO_TABLE_CATEGORY_ITEM . ')'
					.' AND application_id = '.(int) $application->id
					.' AND '.$this->app->user->getDBAccessString()
					.' AND state = 1'
					.' AND type = product' // укажите плевдоним типа
					.' AND (publish_up = '.$null.' OR publish_up <= '.$now.')'
					.' AND (publish_down = '.$null.' OR publish_down >= '.$now.')';

будет ли работать не проверял


  • 0
Изображение
 

#5 toyda

toyda

Отправлено 02 June 2015 - 08:56

toyda, выборка происходит в файле

сайт\administrator\components\com_zoo\helpers\application.php 

метод getAlphaIndex тут есть запрос 

$query = 'SELECT DISTINCT BINARY CONVERT(LOWER(LEFT(name, 1)) USING utf8) letter'
					.' FROM ' . ZOO_TABLE_ITEM
					.' WHERE id IN (SELECT item_id FROM ' . ZOO_TABLE_CATEGORY_ITEM . ')'
					.' AND application_id = '.(int) $application->id
					.' AND '.$this->app->user->getDBAccessString()
					.' AND state = 1'
					.' AND (publish_up = '.$null.' OR publish_up <= '.$now.')'
					.' AND (publish_down = '.$null.' OR publish_down >= '.$now.')';

попробуйте заменить его на, указав свой псевдоним типа

$query = 'SELECT DISTINCT BINARY CONVERT(LOWER(LEFT(name, 1)) USING utf8) letter'
					.' FROM ' . ZOO_TABLE_ITEM
					.' WHERE id IN (SELECT item_id FROM ' . ZOO_TABLE_CATEGORY_ITEM . ')'
					.' AND application_id = '.(int) $application->id
					.' AND '.$this->app->user->getDBAccessString()
					.' AND state = 1'
					.' AND type = product' // укажите плевдоним типа
					.' AND (publish_up = '.$null.' OR publish_up <= '.$now.')'
					.' AND (publish_down = '.$null.' OR publish_down >= '.$now.')';

будет ли работать не проверял

 

Ошибка: 1054

Unknown column 'collection' in 'where clause' SQL=SELECT DISTINCT BINARY CONVERT(LOWER(LEFT(name, 1)) USING utf8) letter FROM v07pr_zoo_item WHERE id IN (SELECT item_id FROM v07pr_zoo_category_item) AND application_id = 1 AND access IN (1,2,3,6) AND state = 1 AND type = collection AND (publish_up = '0000-00-00 00:00:00' OR publish_up <= '2015-06-02 07:56:18') AND (publish_down = '0000-00-00 00:00:00' OR publish_down >= '2015-06-02 07:56:18')


  • 0

#6 toyda

toyda

Отправлено 02 June 2015 - 09:00

toyda, выборка происходит в файле

сайт\administrator\components\com_zoo\helpers\application.php 

метод getAlphaIndex тут есть запрос 

$query = 'SELECT DISTINCT BINARY CONVERT(LOWER(LEFT(name, 1)) USING utf8) letter'
					.' FROM ' . ZOO_TABLE_ITEM
					.' WHERE id IN (SELECT item_id FROM ' . ZOO_TABLE_CATEGORY_ITEM . ')'
					.' AND application_id = '.(int) $application->id
					.' AND '.$this->app->user->getDBAccessString()
					.' AND state = 1'
					.' AND (publish_up = '.$null.' OR publish_up <= '.$now.')'
					.' AND (publish_down = '.$null.' OR publish_down >= '.$now.')';

.' AND state = 1'   -  Это публикация? Т.е. выводить только опубликованные? Если да, то как выводить только те что на главной (Frontpage)? Меня бы такой вариант устроил


  • 0

#7 Cheren-dow

Cheren-dow

Отправлено 02 June 2015 - 09:11

toyda, попробуйте указать тип в ковычках

.' AND type = \'product\'' // укажите плевдоним типа

  • 0
Изображение
 

#8 toyda

toyda

Отправлено 02 June 2015 - 09:16

 

toyda, попробуйте указать тип в ковычках

.' AND type = \'product\'' // укажите плевдоним типа

 

Альфаиндекс просто перестал выводить ссылки на материалы отличные от указанного псевдонима (т.е. буквы стали не активны), сами материалы остались в выдаче (все, не зависимо от типа)


  • 0

#9 Cheren-dow

Cheren-dow

Отправлено 02 June 2015 - 10:14   Лучший Ответ

toyda, еще один вариант, с каким подводными камнями он будет не знаю. Попробуйте в файле

сайт\administrator\components\com_zoo\tables\item.php

найти метод getByCharacter а в нем заменить $query на 

		$query = "SELECT a.*"
			." FROM ".ZOO_TABLE_CATEGORY_ITEM." AS ci"
			." JOIN ".$this->name." AS a ON a.id = ci.item_id"
			.($join ? $join : "")
			." WHERE a.application_id = ".(int) $application_id
			." AND a.".$this->app->user->getDBAccessString($user)
			.($published == true ? " AND a.state = 1 AND a.type = 'product'" // укажите тип
			." AND (a.publish_up = ".$null." OR a.publish_up <= ".$now.")"
			." AND (a.publish_down = ".$null." OR a.publish_down >= ".$now.")": "")
			." AND BINARY LOWER(LEFT(a.name, 1)) ".(is_array($char) ? ($not_in ? "NOT" : null)." IN (".implode(",", $char).")" : " = '".$db->escape($char)."'")
			." ORDER BY a.priority DESC".($order ? ", $order" : "")
			.(($limit ? " LIMIT ".(int) $offset.",".(int) $limit : ""));

  • 1
Изображение
 

#10 toyda

toyda

Отправлено 02 June 2015 - 12:10

 

toyda, еще один вариант, с каким подводными камнями он будет не знаю. Попробуйте в файле

сайт\administrator\components\com_zoo\tables\item.php

найти метод getByCharacter а в нем заменить $query на 

		$query = "SELECT a.*"
			." FROM ".ZOO_TABLE_CATEGORY_ITEM." AS ci"
			." JOIN ".$this->name." AS a ON a.id = ci.item_id"
			.($join ? $join : "")
			." WHERE a.application_id = ".(int) $application_id
			." AND a.".$this->app->user->getDBAccessString($user)
			.($published == true ? " AND a.state = 1 AND a.type = 'product'" // укажите тип
			." AND (a.publish_up = ".$null." OR a.publish_up <= ".$now.")"
			." AND (a.publish_down = ".$null." OR a.publish_down >= ".$now.")": "")
			." AND BINARY LOWER(LEFT(a.name, 1)) ".(is_array($char) ? ($not_in ? "NOT" : null)." IN (".implode(",", $char).")" : " = '".$db->escape($char)."'")
			." ORDER BY a.priority DESC".($order ? ", $order" : "")
			.(($limit ? " LIMIT ".(int) $offset.",".(int) $limit : ""));

 

Спасибо, предварительно хак работает, немного позже отпишу всё ли в порядке!


  • 0





Темы с аналогичным тегами альфаиндекс, альфа индекс, alphaindex, alpha index

Click to return to top of page in style!