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


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

Поиск по двум полям (теги)


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

#1 axeld

axeld

Отправлено 27 December 2014 - 12:22

Здравствуйте, нужно расширить возможности поиска по нескольким полям. Как это сделать по пользовательским полям, я разобрался , с Вашей помощью , но никак не могу разобраться как в функцию поиска добавить возможность поиска и по тегам ? Вопрос простой - как обратиться с тегам ?

public function getSearchData() {
 
        $result = array();
        
        if ($this->identifier == '6c4b15ee-8dd7-4917-a80b-ea3c65fd956b') {

$result[] = $this->getItem()->name;
$result[] = $this->getItem()->tags; // ПЕРЕПРОБОВАЛ МНОГО КОМБИНАЦИЙ - НЕ ИЩЕТ ТЕГИ
$result[] = $this->getItem()->getElement('b0d2b218-87a9-4573-85b7-350d2eec1061')->getSearchData();
$result[] = $this->getItem()->getElement('991126ed-ac39-4c0d-abc0-b42058a85b6a')->getSearchData();
			
        }
        
        foreach ($this as $self) {
             $result[] = $this->_getSearchData();
        }
 
        return (empty($result) ? null : implode("\n", $result));
    }

  • 0

#2 Cheren-dow

Cheren-dow

Отправлено 28 December 2014 - 17:09

axeld, посмотрите как выводятся теги для материала в элементе itemtags 

сайт\media\zoo\elements\itemtag\itemtag.php

Не проверял, но получить теги можно с помощью

$this->getItem()->getTags();

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

#3 axeld

axeld

Отправлено 29 December 2014 - 07:37

$this->getItem()->getTags(); - это я пробовал с   самого начала.

 

Судя по файлу (сайт\media\zoo\elements\itemtag\itemtag.php) теги получаются так - $this->_item->getTags(); , но так тоже не ищет. :( 

  • 0

#4 Cheren-dow

Cheren-dow

Отправлено 29 December 2014 - 12:56

axeld,  $this->_item используется только внутри элемента - это обращение к объекту материала из элемента. Попробуйте использовать следующе:

$result[] = JBModelValues::model()->getTagValues($applicationId, $itemType); // подставьте id приложения и тип материала

Сообщение отредактировал Cheren-dow: 29 December 2014 - 12:56

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

#5 axeld

axeld

Отправлено 30 December 2014 - 07:32

Спасибо , что помогаете мне, но так тоже не работает. Вот как выглядит функция сейчас.

public function getSearchData() { 
        $result = array();        
        if ($this->identifier == '6c4b15ee-8dd7-4917-a80b-ea3c65fd956b') {
$result[] = $this->getItem()->name;
//$result[] = $this->getItem()->tags; неработает
//$result[] = $this->getItem()->getTags(); неработает
//$result[] = $this->_item->getTags(); неработает
$applicationId = 11;
$itemType = "Product";
$result[] = JBModelValues::model()->getTagValues($applicationId, $itemType);
$result[] = $this->getItem()->getElement('b0d2b218-87a9-4573-85b7-350d2eec1061')->getSearchData();
$result[] = $this->getItem()->getElement('991126ed-ac39-4c0d-abc0-b42058a85b6a')->getSearchData();		
        }  // if      
        foreach ($this as $self) {
             $result[] = $this->_getSearchData();
        } // foresch
        return (empty($result) ? null : implode("\n", $result));
    } // function

Каждый раз делаю переиндексацию. Может , что перепутал ?

Почему нельзя обратиться как-то так ( $result[] = $this->getItem()->getElement("обратиться к тэгам по id")->getSearchData();        )


  • 0

#6 Cheren-dow

Cheren-dow

Отправлено 30 December 2014 - 18:25

Почему нельзя обратиться как-то так ( $result[] = $this->getItem()->getElement("обратиться к тэгам по id")->getSearchData();        )

Потому что теги это не элемент, по id к ним не обратится  а метод getSearchData находится внутри элемента. Напишу Денису, возможно поможет с решением.


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




Click to return to top of page in style!