Saját search api mező hozzáadása + 1 kis drupal diagnosztika

The spam filter installed on this site is currently unavailable. Per site policy, we are unable to accept new submissions until that problem is resolved. Please try resubmitting the form in a couple of minutes.
Kategória: 
Gyorstippek

No ez megint amolyan nagy tömegeket érintő szösszenet lesz, de miután fél óra debugolás után jöttem rá, hogy miújság, gondoltam megspórolom magamnak (meg hátha azért másnak is..) egy következő fél órát.

A helyzet a kövi: Search Api által hajtott okos keresőt kell csinálni, amelynek az egyik sorrendezési módja: A legtöbbet kapott szavazat. A szavazáshoz a drupal.hu is látott Vote Up/Down modult használom, ami a votingapira épít.
Feladat: Etessük meg az entitásokra adott szavazatértékeket a search apival.

Igazából baromi egyszerű a dolog: Az Entity API a drupal gyári entitás paramétereit ki tudja egészíteni bizonyos adatokkal, jellemzőkkel (magyarul property), amit aztán különböző modulok okosan felhasználhatnak, mint például a rules, vagy a search api.

Tehát az első része, hogy adjunk hozzá egy ilyen jellemzőt:

[geshifilter-drupal6]/** * Implements hook_entity_property_info_alter(). */ function MODULOM_hook_entity_property_info_alter(&$info) { $info['node']['properties']['voting_results'] = array( 'type' => 'integer', 'label' => t('Votes for a node'), 'sanitized' => TRUE, 'getter callback' => 'MODULOM_get_search_api_votes', ); }[/geshifilter-drupal6]

A sokatmondó 'getter callback' jelenti azt a függvényt, amellyel az adott értéket elő kell túrni valahonnan. Esetünkben ez egy szimpla lekérdezés a votingapi_cache táblából:

[geshifilter-drupal6]function MODULOM_get_search_api_votes($item) { $results = db_query('SELECT value FROM {votingapi_cache} WHERE entity_id = :nid AND function = :function', array( ':nid' => $item->nid, ':function' => 'sum' )); $result = $results->fetchField(); return $result; }[/geshifilter-drupal6]

Ezután egy gyorstárürítés, és már látszik is a search api indexbeállító felületén az új mezőnk, csak bepipáljuk, majd újraépítjük az indexet.

Mondhatnánk, hogy készen vagyunk, de itt jön a bibi, ami miatt az a plusz fél óra becsúszott: Az entity apinak ugyan megmondjuk, hogy helló, itt egy property, itt egy getter callback, viszont az már teljes mértékben az entity apit használó modulra van bízva, hogy hogyan, mikor használja fel ezt az adatot.

Miután nálam baromira nem akart összejönni a szavazatok szerinti sorrendezés, elkezdtem nézegetni, hogy ugyan mikor hajlandó az én kici MODULOM_get_search_api_votes függvényem lefutni. Nos, akárhogyan, akármilyen oldalról rugdostam, csak nem akart megállni az xdebug.

Nosza, elkezdtem visszakövetni, hogy egyáltalán hogyan épül fel a search api lekérdezése. Ehhez a search api dokumentációjában kiszúrtam egy hookot, ami feltételezéseim szerint mindenképpen le kell fusson: ez pedig a hook_search_api_query_alter().

El is csíptem, szépen megállt az xdebug. Itt már látszott, hogy a SearchApiQuery->preExecute metódusa hívta meg az alterünket, ott is van benne: drupal_alter('search_api_query', $this); (nem mintha nem lett volna egyszerűbb rákeresni a 'search_api_query' stringre a modul fáljaiban, na mindegy..)

Ebből adódik, hogy kell lennie egy SearchApiQuery->Executenek is, ott is van benne:

[geshifilter-drupal6]// Execute query. $response = $this->index->server()->search($this);[/geshifilter-drupal6]

Itt gyakorlatilag szépen ellépegettem egészen a search metódusig, ahol maga a kereső query felépül. Soronként lépegetve a kóddzsumbujban kezdtek összeállni a változók, mígnem megláttam egy $valamilyen_valtozo['base_table']['search_api_db_default_node_index_voting_results'].
Hopppá! Hát itten kérem minden indexelt mezőnek saját táblája van!
Gyorsan belenéztem a táblába, és láttam, hogy ott vannak rossz értékek. Az már sanszos volt, hogy ezek a táblák index épüléskor frissülnek, úgyhogy újraindexeltem a keresést, és el is akadt az xdebug a MODULOM_get_search_api_votes() függvénynél egyből. Miután az egykarakteres typot már korábban kijavítottam, szépen feltöltődött az index - immár a jó értékekkel, és máris működött a szavazatok szerinti sorrendezés.

Tulajdonképpen baromi jók ezek az xdebugos diagnosztikák. Picit legalább sikerült megérteni a search api logikáját, legközelebb már gyorsabban eltalálom, hogy hová kell nyúlni, ha valami nem ok.

Hozzászólások

hello!,I really like your

hello!,I really like your writing very much! proportion we keep
up a correspondence more about your article on AOL? I require a specialist on this space
to unravel my problem. Maybe that's you! Looking forward to look you.

Bay Lights

Alluminium Railing

Lactose

Chassis

Drill Bit

FLEECE vest

https://www.omgqq.com/firstca

Marble Water-jet Inlay

D-Panthenol

Air Rifle Scopes

Nice response in return of

Nice response in return of this query with genuine arguments and explaining the whole thing
regarding that.

Risk free casino

Risk free casino https://www.omgqq.com

Szántó Gábor Drupal oldala -

Szántó Gábor Drupal oldala - Saját search api mező hozzáadása 1 kis drupal diagnosztika
[url=http://www.g53k56w7s8xs17nr7bddb9zyn1k32504s.org/]ueqbepybse[/url]
aeqbepybse
eqbepybse http://www.g53k56w7s8xs17nr7bddb9zyn1k32504s.org/

https://www.omgqq.com/firstca

https://www.omgqq.com/firstca

https://www.omgqq.com/firstca

I have learn a few good stuff

I have learn a few good stuff here. Definitely worth bookmarking for revisiting. https://www.btlcasino.com
I surprise how much attempt you set to create any such fantastic informative site.https://www.omgqq.com

https://www.omgqq.com/gatsbyc

Picking the Most Reputable

Picking the Most Reputable Online Gambling Establishment https://www.omgqq.com

billion to build, making it

billion to build, making it the most expensive project in industry history. Additionally,
https://www.bomnar33.com 카지노사이트

Lot of 10 Sets 2007- 2016

Lot of 10 Sets 2007- 2016 United States Mint Presidential
$1 Coin Proof Sets

I think this is among the

I think this is among the most significant info for me.

And i'm glad reading your article. But want to remark on few general things, The website style
is ideal, the articles is really nice : D. Good job, cheers

Every weekend i used to visit

Every weekend i used to visit this website, for
the reason that i wish for enjoyment, since this this site conations actually pleasant funny material too.

order cialis online

order cialis online https://cialisle.com/

Nice weblog right here!

Nice weblog right here! Additionally your website quite a bit up fast! What web host are you using? Can I am getting your associate hyperlink to your host? I want my site loaded up as quickly as yours lol|

Hi everyone, it's my first

Hi everyone, it's my first pay a quick visit at this web page, and piece of writing is really fruitful in support of me, keep up posting these
types of articles.
Jim's San Jose Carpet Cleaning
780 S 3rd St, San Jose, CA 95112
3408-351-1063
colettemackie2641 [at] gmail [dot] com

Hi! I could have sworn I've

Hi! I could have sworn I've been to this site before but after checking through
some of the post I realized it's new to me. Nonetheless,
I'm definitely happy I found it and I'll be book-marking and checking
back often!

Hello would you mind stating

Hello would you mind stating which blog platform you're working with?
I'm planning to start my own blog soon but I'm having a difficult time deciding between BlogEngine/Wordpress/B2evolution and Drupal.
The reason I ask is because your layout seems different then most blogs and I'm looking for something unique.

P.S Apologies for being off-topic but I had to ask!

Write more, thats all I have

Write more, thats all I have to say. Literally, it seems as though you relied on the video to make your point.

You clearly know what youre talking about, why throw away your intelligence on just posting videos to your weblog when you
could be giving us something enlightening to read?

I just couldn't leave your

I just couldn't leave your web site before suggesting that I actually enjoyed
the usual information a person supply to your guests?
Is going to be again steadily to check up on new posts
Jay's Santa Clarita Tree Removal Kings
26174 Las Lanas Ct, Santa Clarita, CA 91355
661-464-1270
laureljefferson09875 [at] gmail [dot] com

Hey there are using Wordpress

Hey there are using Wordpress for your blog platform?
I'm new to the blog world but I'm trying to get started and create my own. Do you need any coding expertise to make
your own blog? Any help would be greatly appreciated!

Thanks for sharing your

Thanks for sharing your thoughts about ig. Regards

I used to be recommended this

I used to be recommended this web site by way of my cousin. I'm not certain whether or not this post is written by him as nobody else recognise such exact approximately my difficulty. You are incredible! Thanks!|

Thanks for finally talking

Thanks for finally talking about >Válasz a hozzászólásra

I know this website provides

I know this website provides quality depending content and other data, is there any other website
which presents such things in quality?
Jay's Santa Clarita Tree Removal Kings
26174 Las Lanas Ct, Santa Clarita, CA 91355
661-464-1270
laureljefferson09875 [at] gmail [dot] com

My brother suggested I might

My brother suggested I might like this blog. He was totally right.
This post truly made my day. You cann't imagine just how much time I had
spent for this information! Thanks!

Anaheim Divorce Lawyers in Practice
204 S Illinois St, Anaheim, CA 92805
714-410-5333
sabihafelix09835 [at] gmail [dot] com

Hi there, I discovered your

Hi there, I discovered your blog by the use of Google even as looking for a similar subject, your website got here up,
it seems great. I have bookmarked it in my google bookmarks.

Hello there, just was alert to your blog through Google, and found that it is really informative.
I'm going to watch out for brussels. I will be grateful for those who
continue this in future. Many other people will probably be benefited out of your writing.

Cheers!

Anaheim Divorce Lawyers in Practice
204 S Illinois St, Anaheim, CA 92805
714-410-5333
sabihafelix09835 [at] gmail [dot] com

We are a group of volunteers

We are a group of volunteers and starting a new scheme in our community.
Your website offered us with valuable info to work on. You have done a
formidable job and our entire community will be thankful to
you.

Incredible quest there. What

Incredible quest there. What occurred after? Good luck!

You have made some decent

You have made some decent points there. I checked on the web for more info about the issue and found most individuals will go along
with your views on this site.
Jim's San Jose Carpet Cleaning
780 S 3rd St, San Jose, CA 95112
3408-351-1063
colettemackie2641 [at] gmail [dot] com

Actually no matter if someone

Actually no matter if someone doesn't be aware of after that its
up to other visitors that they will assist, so here it
occurs.

Hozzászólás

A mező tartalma nem nyilvános.
  • Internal paths in double quotes, written as "internal:node/99", for example, are replaced with the appropriate absolute URL or relative path.
  • Engedélyezett HTML elemek: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <del> <img>
  • A webcímek és email címek automatikusan linkekké alakulnak.
  • A sorokat és bekezdéseket a rendszer automatikusan felismeri.
  • Engedélyezett HTML elemek: <a> <blockquote> <br> <cite> <code> <dd> <del> <div> <dl> <dt> <em> <li> <ol> <p> <span> <strong> <ul>
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <bash>, <c>, <cpp>, <drupal5>, <drupal6>, <java>, <javascript>, <mysql>, <php>, <python>, <ruby>, <sql>. The supported tag styles are: <foo>, [foo].
  • Minden email cím át lesz alakítva ember által olvasható módon, vagy (ha a JavaScript engedélyezett) ki lesz cserélve kattintható, de biztonságos hivatkozásra.