Julus

Рейтинг
54
Регистрация
13.08.2008

Как сделать такую сортировку?

png 137833.png

Не могу понять, почему не работает сортировка в Search api. Делаю все по образцу настроек в Коммерс кикстарт.

Кто-нибудь сталкивался с проблемой? Как это побороть?

png 137705.png
png 137706.png

1. Сделал через Search api поиск по образцу "Коммерс кикстарт" - фасетный поиск + поиск из формы через фильтр.

2. Вроде все нормально работает, но у Кикстарта около всех слов, как выбранных в фасетах, так и вбитых в формы поиска, есть возможность, нажав на "крест", убрать слово из активных фильтров. А то, что получилось у меня - эта функция не работает для поисковых слов, вбитых в форму поиска.

Как это выглядит, на первой картинке. Через поисковую форму вбито "рамка". Т.е. поисковое слово забивается прямиком в <li></li>, а в других случаях создается <a></a>. Как это вылечить?

Для примера, как то же выглядит в Кикстарте - на второй картинке. Через форму вбито "кабель".

jpg 137614.jpg
jpg 137615.jpg

Как добавить в выдачу "advanced sphinx" картинку? если например поле картинки - product_image?

<?php

// $Id: advanced_sphinx_items_result_main.tpl.php, v 1.0 2011/07/05 19:59:16 gagaga Exp $

/**

* @file advanced_sphinx_items_result_main.tpl.php

* Default theme implementation to item search result.

*

* Available variables:

* - $result: Array with all data:

* - $result['number']: Serial number search results.

* - $result['title']: Linked title to full node.

* - $result['excerpts']: .

* - $result['date']: Date and time of posting.

* - $result['username']: Linked login to node author.

* - $result['tax']: List of taxonomy term.

*/

?>

<li class="result-folded">

<h3 class="title-result"><span class="number-result"><?php print $result['number']; ?>.</span> <?php print $result['title']; ?></h3>

<?php if (isset($result['excerpts'])) { ?>

<div class="content-result">

<?php print $result['excerpts']; ?>

</div>

<?php } ?>

<div class="info-result">

<?php if (isset($result['date'])) { ?>

<span class="date-result"><?php print $result['date']; ?>,</span>

<?php } ?>

<?php if (isset($result['username'])) { ?>

<span class="autor-result"><?php print $result['username']; ?></span>

<?php } ?>

<?php if (isset($result['uc_product_image'])) {?>

<span class="tax-result"><?php print t('Tags') .': '.$result['tags']; ?></span>

<?php } ?>

<?php if (isset($result['tags'])) {?>

<span class="tax-result"><?php print t('Tags') .': '.$result['tags']; ?></span>

<?php } ?>

</div>

</li>

---------- Добавлено 13.08.2014 в 05:19 ----------

*******************

оба варианта показывают "битую" картинку

<?php
$image_settings = array(
'style_name' => 'thumbnail',
'path' => $node->product_image['und'][0]['uri'],
'attributes' => array('class' => 'image'),
'getsize' => FALSE,);
print theme('image_style', $image_settings);
?>



<?php
$image_settings = array(
'style_name' => 'thumbnail',
'path' => $record->uri,
'alt' => $record->alt,
'title' => $record->title,
'attributes' => array('class' => 'image'),
'getsize' => FALSE,
);
print theme('image_style', $image_settings);
?>


---------- Добавлено 13.08.2014 в 05:24 ----------

и этот - та же проблема

<?php

$image = array(

'path' => $file->uri, // путь до картинки.

'style_name' => 'thumbnail', // - имя стиля.

);

print theme('image_style', $image);

?>

axel11feb:
Привет всем!
На друпал 6 надо реализовать загрузку файлов на удаленный сервер.

Опишу подробно, чего хочу добиться:

Есть поле типа "File" с названием "Файл", через это поле и осуществляется загрузка файлов на сайт в папку "/sites/default/files/папка_с_файлами"

А надо, чтобы загрузка осуществлялась на удаленный сервер, например: "files.site.ru/папка_с_файлами"

Кто-нибудь сталкивался с такой проблемой? есть варианты?

искал варианты, но до конца не довел.

видимо, надо копать в сторону https://www.drupal.org/project/s3fs или https://www.drupal.org/project/amazons3 или https://www.drupal.org/project/aws_amazon или https://www.drupal.org/project/cloud_files

Garin33:
Julus, а почему именно таким способом делаете колонки?
Есть же проверенный float (http://jsfiddle.net/P4Fzf/).

Для адаптива, конечно, придется еще дописать стилей, но работает всегда везде, префиксы не нужны.

тут другой результат. вот картинка. имхо куда симпатичнее.

а в моей проблеме кажется, все просто - модуль Adaptive Image не хочет в файрфоксе работать.

**************

другой вариант, по рецепту https://www.drupal.org/node/2169157

добавил код:

function bootstrap_lawyer_preprocess_field(&$variables) {
if($variables['element']['#field_name'] == 'field_image'){
foreach($variables['items'] as $key => $item){
$variables['items'][ $key ]['#item']['attributes']['class'][] = 'img-responsive'; // http://getbootstrap.com/css/#overview-responsive-images
}
}
}

то же самое - в файрфоксе не работает. -:(((

jpg 136455.jpg

Подключил модуль Adaptive Image, и сделал вывод текста со стилем css3 в 2 колонки, код:

.node .content {

text-align: justify;
-moz-column-count: 2;
-moz-column-gap: undefinedpx;
-webkit-column-count: 2;
-webkit-column-gap: undefinedpx;
column-count: 2;
column-gap: undefinedpx;
}

В результате, в Хроме (а также Опере, Яндексе, и Мэйл.ру) выводит как надо (картинка 1),

в Файрфоксе - этот эффект не работает (рис 2).

Что делать?

jpg 2014-07-2.jpg
jpg 136443.jpg

Решение http://www.drupal.ru/node/102876 -

надо добавить код в template.php и preprocess/preprocess-region.inc

Сюжет такой:

Захотелось мне в собственной субтеме Омеги передвинуть "крошки" из zone--content.tpl.php в region--content.tpl.php.

Сделал в /templates

zone--content.tpl.php

<?php if ($wrapper): ?><div<?php print $attributes; ?>><?php endif; ?>  
<div<?php print $content_attributes; ?>>
<?php print $content; ?>
</div>
<?php if ($wrapper): ?></div><?php endif; ?>

и region--content.tpl.php.

<div<?php print $attributes; ?>>
<div<?php print $content_attributes; ?>>
<?php if ($breadcrumb): ?>
<div id="breadcrumb" class="block"><?php print $breadcrumb; ?></div>
<?php endif; ?>
<a id="main-content"></a>
<?php print render($title_prefix); ?>
<?php if ($title): ?>
<?php if ($title_hidden): ?><div class="element-invisible"><?php endif; ?>
<h1 class="title" id="page-title"><?php print $title; ?></h1>
<?php if ($title_hidden): ?></div><?php endif; ?>
<?php endif; ?>
<?php print render($title_suffix); ?>
<?php if ($tabs && !empty($tabs['#primary'])): ?><div class="tabs clearfix"><?php print render($tabs); ?></div><?php endif; ?>
<?php if ($action_links): ?><ul class="action-links"><?php print render($action_links); ?></ul><?php endif; ?>
<?php print $content; ?>
<?php if ($feed_icons): ?><div class="feed-icon clearfix"><?php print $feed_icons; ?></div><?php endif; ?>
</div>
</div>

Вуаля, все работает!

Но тут захотелось мне по рецепту http://habrahabr.ru/post/172585/ интегрировать Омегу с Бутстрапом, не забывая про предыдущие достижения. 🤪

Точно так же заливаю в /templates новой субтемы omega_example_botstrap_theme эти два zone--content.tpl.php в region--content.tpl.php

- в результате крошки не выводит, и показывает предупреждение.

Notice: Undefined variable: breadcrumb in include() (line 3 of /home/u8805/domains/u8805.hank.vps-private.net/sites/all/themes/omega_example_botstrap_theme/templates/region--content.tpl.php).

Как решить эту проблему?

Заказал одному парню модуль экспорта в Яндекс-маркет; модуль получил, и даже валидацию проходит, но есть несколько косяков.

Например, надо в тег <vendor></vendor> поместить название поставщика, и взять его из поля таксономии field_svet (для контента svet - строка 97) и из поля field_radiator (для контента radiator - строка 96).

Подскажите плиз как сделать.

<?php


function p($var) {
drupal_set_message('<pre>'.check_plain(print_r($var,1)).'</pre>');
}


function yml_export_menu() {
$items['admin/config/system/yml_generate'] = array(
'title' => 'Генерация YML',
'page callback' => 'yml_export_yml_generate_callback',
'access callback' => 'yml_export_access_callback',
);

return $items;
}


function yml_export_permission() {
return array(
'yml_export_generate' => array(
'title' => t('Генерация YML'),
'description' => t(''),
),

);
}


function yml_export_access_callback(){
return user_access('yml_export_generate');
}


function yml_export_get_category_yml(){
$types = yml_export_content_types_name();
foreach ($types as $i=>$val) {
$output .= '<category id="'.($i+1).'">'.$val.'</category>';
};
return $output;
}


function yml_export_yml_pictures($node){
$output = '';
foreach ($node->field_foto['und'] as $i=>$val) {
$output .= '<picture>'.file_create_url($val['uri']).'</picture>';
};

return $output;
}


function yml_export_yml_generate_callback(){
return render(drupal_get_form('yml_export_yml_generate_form'));
}


function yml_export_yml_generate_form($form, &$form_state) {
$form['submit'] = array(
'#type' => 'submit',
'#value' => 'Сгенерировать YML',
'#prefix' => '<br></br>',
'#suffix' => '<br></br>'.l('Ссылка на YML-файл', drupal_get_path('module', 'yml_export').'/products.yml', array(
'attributes' => array(
'target' => '_blank',
),
'query' => array(
'time' => time()
)
)),
);
return $form;
}


function yml_export_yml_category_id($node){
$array = $node->field_kat['und'];
end($array);
$key = key($array);
return $node->field_kat['und'][$key]['tid'];
}


function yml_export_content_types_name(){
return array(
'Радиаторы',
'Свет',
);
}


function yml_export_content_types(){
return array(
'radiator',
'svet',
);
}


function yml_export_yml_generate_form_submit($form, &$form_state) {
// Подготавливаем данные для операций

$nodes = db_select('node', 'n')
->fields('n', array('nid'))
->condition('n.type', yml_export_content_types(), 'IN')
->condition('n.status', 1)
// ->range(0, 2)
->execute();

$operations = array();

// Создаём массив с операциями.
// Каждая операция будет выполнена в отдельном http запросе.
foreach ($nodes as $node) {
$operations[] = array('yml_export_yml_generate', array($node->nid));
}

$batch = array(
// Массив операций и их параметров
'operations' => $operations,
// Функция, которая будет выполнена после окончания всех операций
'finished' => 'yml_export_yml_generate_form_finished',
// Заголовок страницы с прогресс баром.
// Опционально, по умолчанию t('Processing')
'title' => 'Генерация YML',
// Сообщение, показываемое при инициализации.
// Опционально, по умолчанию t('Initializing.')
'init_message' => 'Подготовка данных',
// Сообщение, показывемое при выполнении операций.
// Опционально, по умолчанию t('Completed @current of @total.')
'progress_message' => 'Выполнено @current из @total.',
// Сообщение показываемое при ошибке выполнения операции.
// Опционально, по умолчанию t('An error has occurred.')
'error_message' => 'Произошла ошибка.',
);

global $base_url;

variable_set('yml_file','<?xml version="1.0" encoding="utf-8"?><!DOCTYPE yml_catalog SYSTEM "shops.dtd">
<yml_catalog date="'.date('Y-m-d H:i').'">
<shop>
<name>'.variable_get('site_name','').'</name>
<company>SIRIUS</company>
<url>'.$base_url.'</url>
<platform>Drupal</platform>
<version>7</version>
<email>'.variable_get('site_mail','').'</email>

<currencies>
<currency id="RUR" rate="1"/>
</currencies>

<categories>
'.yml_export_get_category_yml().'
</categories>

<offers>

');

batch_set($batch);
batch_process($redirect = NULL, $url = 'batch', $redirect_callback = 'drupal_goto');
// Если Batch API используется не из _submit функции,
// то дополнительно нужно вызвать batch_process();
}


function yml_export_yml_generate($nid, &$context) {
// Производим манипуляции над нодами
$node = node_load($nid);

$product = db_select('uc_products', 'p')
->fields('p')
->condition('p.nid', $nid)
->execute()
->fetchObject();

$category_id = intval(array_search($node->type, yml_export_content_types())) + 1;

global $base_url;
$price = intval($product->sell_price);
if ($price > 0) {

$url = $base_url.'/'.drupal_get_path_alias('node/'.$node->nid);
$description = strip_tags($node->body['und'][0]['value']);
$description = htmlspecialchars($description);
$title = htmlspecialchars($node->title);
$output = variable_get('yml_file','').'
<offer id="'.$node->nid.'" type="artist.title" available="true">
<url>'.$url.'</url>
<price>'.$price.'</price>
<currencyId>RUR</currencyId>
<categoryId>'.$category_id.'</categoryId>
'.yml_export_yml_pictures($node).'
<delivery>true</delivery>
<title>'.$title.'</title>
<description>'.$description.'</description>
</offer>

';
variable_set('yml_file',$output);

$context['results']['file_text'] = $output;
// Эта информация будет доступна в mymodule_batch_finished
$context['results'][] = $node->title;
// Сообщение выводимое под прогресс баром после окончания текущей операции
$context['message'] = 'Обработка товара <em>' . $node->title . '</em>';

};
}


function yml_export_yml_generate_form_finished($success, $results, $operations) {
if ($success) {
$output = variable_get('yml_file','').'

</offers>
</shop>
</yml_catalog>
';
variable_set('yml_file',$output);
drupal_set_message('Генерация YML завершена. Экспортировано товаров: ' . count($results));

$yml = variable_get('yml_file','');
file_put_contents(drupal_get_path('module', 'yml_export').'/products.yml', $yml, LOCK_EX);
}
else {
drupal_set_message('Завершено с ошибками.', 'error');
};
variable_set('yml_file','');
}
Всего: 96