Задавайте вопросы про Drupal - 2

IL
На сайте с 20.04.2007
Offline
435
#201

"Правильный" поиск по подстроке "LIKE '%$search%'" на Drupal.

Есть "красивая" реализация?

Не интересует:

- с использованием сторонних средств: сфинкс, solr

- с использованием fuzzy, porterstemmer

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
F
На сайте с 03.10.2006
Offline
160
#202
ivan-lev:
"Правильный" поиск по подстроке "LIKE '%$search%'" на Drupal.
Есть "красивая" реализация?

Не интересует:
- с использованием сторонних средств: сфинкс, solr
- с использованием fuzzy, porterstemmer

А через модуль Views не пробовали сделать поиск? Он вроде бы делает правильный поиск типа "LIKE '%$search%'". Если пробовали, то что не устраивает?

DV
На сайте с 01.05.2010
Offline
644
#203
ivan-lev:
Как-то так, примерно...

Работает!

ivan-lev:
"Правильный" поиск по подстроке "LIKE '%$search%'" на Drupal.
Есть "красивая" реализация?

Не знаю, правильно ли понял, Search Autocomplete ищет по части слова.

VDS хостинг ( http://clck.ru/0u97l ) Нет нерешаемых задач ( https://searchengines.guru/ru/forum/806725 ) | Перенос сайтов на Drupal 7 с любых CMS. ( https://searchengines.guru/ru/forum/531842/page6#comment_10504844 )
IL
На сайте с 20.04.2007
Offline
435
#204
DenisVS:
Работает!

Дык.. :) там в одном месте {очепятка}, но вижу, не помешала.

furamag:
Он вроде бы делает правильный поиск типа "LIKE '%$search%'". Если пробовали, то что не устраивает?

А Вы пробовали? Если да - с удовольствием ознакомлюсь с рабочим вариантом. Возможно, есть галка/настройка/опция... Или куча дополнительных модулей.

* у меня в sites/all/modules/views/modules/search/views_handler_filter_search.inc и по соседству захардкожено так:

$or->condition("$search_index.word", $word);
DenisVS:
Search Autocomplete ищет по части слова.

Автокомплит - хорошо. Интересует "обычный" поиск. Т.е. результаты в той же вьюшке по нажатию кнопки "Искать"...

F
На сайте с 03.10.2006
Offline
160
#205
ivan-lev:
А Вы пробовали? Если да - с удовольствием ознакомлюсь с рабочим вариантом. Возможно, есть галка/настройка/опция... Или куча дополнительных модулей.

Так вроде бы обычный Exposed Filter добавить для какого-то поля и выбрать Operator = Contains. Вот, что у меня получилось в запросе:

AND (node.title LIKE '%test%' ESCAPE '\\')

Это то, что вы искали?

IL
На сайте с 20.04.2007
Offline
435
#206
furamag:
Это то, что вы искали?

Да, почти.. Благодарю.

p.s. смутило что куча ответов на вопросы либо ссылается на сторонний поиск, либо на изменения в ядре

forest25
На сайте с 12.09.2009
Offline
67
#207

Доброй ночи уважаемые форумчане!

Появился насущный вопрос по Drupal 7.

Что имеем: Drupal 7 + Drupal Commerce и его фирменные адреса на отправку заказа вида /checkout/%order_id%

Что нужно: Подключить «Быстрый заказ» от Яндекс.Маркета которому для работы нужен статичный адрес чтобы отправлять туда POST-запрос с данными профиля (нужно для заполнения корзины)

Проблемы:

Так вот, если в Яндексе жестко прописать ссылку с id заказа, например /checkout/12, то все работает и корзина в итоге получает в массиве $_POST все нужные параметры.

Если прописать адрес просто /checkout (который редиректит автоматом в корзину с id) то естественно в перенаправленном /checkout/12 никаких данных в $_POST не будет.

Решение?

Есть модуль commerce_static_checkout_url, но для работы ему требуются доп.модули (писалось под работу с банками). В итоге получается не совсем то с лишней кучей кода которое хз как привести к такому простому виду как:

Обратился к /checkout и без всяких редиректов увидел свою корзину

Как это дело можно реализовать?

-------------------------------------------------------------------------------------

И сразу второй вопрос по варианту с хуками. У Drupal Commerce как известно есть тоже свои хуки, но я так и не разобрался как их использовать. Может в мире Drupal это и круто, но куда ни глянь везде какие то helloworld примеры с использованием хуков так и не поясняющие что куда вписывать. Это песец какой то!

Вот откуда к примеру знать что хук - hook_super_example() вызывать нужно из модуля и как modulename_super_example?

Пробовал я с хуками, в итоге так ничего и не вышло.

1 вариант - собственный модуль

ls my_commerce_static


my_commerce_static.info my_commerce_static.install my_commerce_static.module

cat my_commerce_static/my_commerce_static.info


name = my_commerce_static
description = Hooks for commerce static
package = my_commerce_static
version = 7.x
core = 7.x

cat my_commerce_static/my_commerce_static.module


<?php
function my_commerce_static_init() {
drupal_set_message(t('Please login or create an account now to continue checkout.'));
mail("to@mymail.ru", "test", "<pre>"."!!!"."</pre>");
}

function my_commerce_static_commerce_checkout_router($order, $checkout_page) {
mail("to@mymail.ru", "test", "<pre>".print_r($checkout_page,true)."</pre>");
drupal_set_message(t('Please login or create an account now to continue checkout.'));
}

function my_module_commerce_checkout_page_info_alter(&$checkout_pages) {
drupal_set_message(t('Please login or create an account now to continue checkout.'));
mail("to@mymail.ru", "test", "<pre>".print_r($checkout_pages,true)."</pre>");
}
?>

Модуль я естественно включил, сайт грузится, все работает, в логах ошибки нет, но и от модуля тоже никаких вестей, хотя я так понимаю он должен был сработать на страницах /checkout/*

2 вариант - template.php


...
function themename_commerce_checkout_router($order, $checkout_page) {
mail("to@mymail.ru", "test", "<pre>".print_r($checkout_page,true)."</pre>");
drupal_set_message(t('Please login or create an account now to continue checkout.'));
}

В итоге тоже абсолютно ничего :/

Прошу Drupal-гуру мне как то помочь с этим делом. Только пожалуйста не кидайте линки на кастрированные ответы типа use hook_commerce_checkout_router() Luke!, результат вы видите в посте =)

VPS 512MB 20GB SSD KVM - 5$ (http://u.hmdw.me/digitalocean) | ИМХО о хостингах (http://u.hmdw.me/hosting)
IL
На сайте с 20.04.2007
Offline
435
#208
forest25:
Вот откуда к примеру знать что хук - hook_super_example() вызывать нужно из модуля и как modulename_super_example?

из документации..

Вообще, почти везде можно вклиниться при помощи либо themename_hookname тынц

либо modulename_hookname тынц

Хуки могут добавляться модулями :D

По сути..

Если заглянуть в таблицу роутов:

checkout/% 	a:1:{i:1;s:19:"commerce_order_load";}
checkout/%/% a:2:{i:1;s:19:"commerce_order_load";i:2;s:27:"commerce_checkout_page_load";}

Функции хранятся в commerce\modules\checkout\includes\commerce_checkout.pages.inc (я так понял, оно уже просмотрено.. только это не hook-и, а "просто функции".)

Если в роутах (в своём модуле) указать свои функции, которые будут подключать нужные файлы и вызывать оригинальные функции с нужным $id (из сессии, видимо) - есть шанс получить то, что нужно... хотя там часть редиректов захардкожена.. с ними тоже нужно будет что-то делать.

А вообще, я бы смотрел в сторону hook_url_inbound_alter и hook_url_outbound_alter

function mymodule_url_inbound_alter(&$path, $original_path, $path_language) {
if ('checkout'== $original_path) { // (? checkout/)
// ид-шник заказа ведь где-то хранится? что-то вроде $_SESSION['commerce_cart_orders']
$path = 'checkout/' . $_SESSION['???'] ;
}
}
forest25
На сайте с 12.09.2009
Offline
67
#209

ivan-lev

Спасибо! Помогло themename_url_outbound_alter.

Приделал таки этот быстрый заказ извратившись и запихнув полученные данные в $_SESSION.

IL
На сайте с 20.04.2007
Offline
435
#210

forest25, если выложишь код (естественно, без секретных данных) - думаю, кому-нибудь может пригодиться..

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий