Dimm: Блог

Главные вкладки

Location+Gmap каждый раз при редактирование ноды добавляет ещё 1 локацию

29 апреля 2014 в 21:01

Location 7.x-3.2 + Gmap 7.x-2.8

У типа данных "Фирма" хочу указывать от 1 до 10 адресов.
В типе данных "Фирма" в настройках Location проставил:
Минимальное количество местоположений =1
Максимальное количество местоположений = 10
Количество местоположений, добавляемых за один раз =1

Столкнулся с проблемой:
Каждый раз при редактирование ноды добавляется ещё 1 локация с настройками положения как в настройках модуля Gmap "По умолчанию".

Решение: Загрузка товаров в Commerce из 1C

10 апреля 2012 в 21:00

Сделал загрузку товаров из 1С 8.2 Управление Торговлей на сайт в каталог commerce на основе стандартного обмена 1С8 с сайтом в формате CommerceML
+ парсинг описаний товаров с других сайтов.

Стояла задача:
1. Импортировать и обновлять из 1с цены и количество товаров.
2. Заполнить описания товаров с сайтов-поставщиков.

Задачи решены.
Импортирует товары, цены, каталог со структурой.
Парсит описания товаров с картинками.
Ноды-описания привязываются к нодам-ценам вручную. (Из 1с потом обновляются автоматически.)

Необходимые модули:
http://drupal.org/project/commerce
http://drupal.org/project/commerce_feeds
http://drupal.org/project/feeds_xpathparser
http://drupal.org/project/feeds_tamper 7.x-1.x-dev.tar.gz (31.95 KB) 2012-Feb-02
Парсер сайтов

[Решено] Не переводятся строки в uc_advanced_catalog

26 июля 2011 в 20:22

После установки uc_advanced_catalog никак не хотели переводится некоторые строки.
Например View as, Items !start to !end of !total total и др...

Оказалось что uc_advanced_catalog успел их прописать в таблицу variable.
И вызываются они как ни странно таким способом: variable_get('uc_advanced_catalog_extra_settings_text', t('Items !start to !end of !total total'))

С помощью модуля devel очистил нужные переменные и uc_advanced_catalog подцепил русские переводы.

[решено] Конфликт advanced catalog со старыми путями

24 июля 2011 в 16:24

В журнале появилась ошибка
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DESC, node_sticky DESC, node_title ASC LIMIT 0, 30' at line 25 query:
путь:
/catalog/ofisnye-stoly?sort=asc&order=%D0%A6%D0%B5%D0%BD%D0%B0
advanced catalog такие пути не дает.

Оказывается Гугл ищет по старым путям от обычного каталога уберкарт.
При этом появляется ошибка SQL и не отображаются товары.

Корректная вставка яндекс карты в Drupal [решено]

2 мая 2011 в 19:25

При вставке яндекс карты с помощью конструктора http://api.yandex.ru/maps/tools/constructor/ всплывающий баллон отображался некорректно (баллон разъезжается на всю карту).

Решение здесь:
http://clubs.ya.ru/mapsapi/replies.xml?item_no=10235#cms-drupal

Улучшение advanced catalog

21 января 2011 в 11:59

Захотелось чтоб в Ubercart advanced catalog при выборе категории отображались товары из вложенных подкатегорий, а список категорий отображался картинками.
Результат можно посмотреть здесь: http://www.krasmebel.ru/shop/catalog/ofisnaya-mebel
Для этого
1. В представлении advanced_catalog заменил Аргумент Таксономия: ID Термина на
Таксономия: ID Термина (с глубиной)
2. Поправил
/sites/all/modules/uc_advanced_catalog/uc_advanced_catalog.module

Обновлено (исправленный вариант):

<?php
  
if ($count 0) {
/*    if (count($links)) {
      $output .= theme('links', $links, array('class' => 'links inline uc-categories')) ."<br />\n";
    }

    // creating pager
    ksort($row);
    $rows[] = $row;
    $pager = theme('table', array(), $rows, array('class' => 'pager-field'));

    // output construction
    $output .= $catalog->description;
*/
//My begin

    // creating pager
    

ksort($row);
    
$rows[] = $row;
    
$pager theme('table', array(), $rows, array('class' => 'pager-field'));

    

// original code
    // Display table of child categories similar to an osCommerce site's front page.
    
$columns variable_get('uc_catalog_category_columns'3);
    
$cat_rows = array();
    
$row1 = array();
    
$i 1;
    foreach (
$child_list as $cell) {
      
$row1[] = array('data' => $cell'class' => 'category');
      if (
$i $columns == 0) {
        
$cat_rows[] = $row1;
        
$row1 = array();
      }
      
$i++;
    }
    if (
count($row1) > && count($row1) < $columns) {
      if (
count($cat_rows) >= 1) {?>

Ошибка регистрации Duplicate entry '0' for key 1 query: user_save

2 августа 2010 в 20:22

После обновления Drupal5 ->Drupal6 возникла ошибка при регистрации:
•user warning: Duplicate entry '0' for key 1 query: user_save /* Гость : user_save */ INSERT INTO users (name, mail, pass, init, status, created) VALUES ('Dimm3', 'info@utilizaciya-avto.ru', '8a1cef76c3ea963a331d1cebea6ef7d2', 'info@utilizaciya-avto.ru', 1, 1280763873)

Галлерея-блог с zip-загрузкой картинок

23 марта 2009 в 18:07

Галлерея - блог с zip - загрузкой картинок
http://drupal.org/project/pblog
Может кому пригодится.
Демо:
http://www.baldy.za.net/node/472

При сохранении файла template.php в UTF-8 у анонимов не показвыаются страницы.

13 марта 2009 в 21:59

При сохранении файла template.php в UTF-8 у анонимов не показвыаются страницы.

Mozilla пишет:
Content Encoding Error
The page you are trying to view cannot be shown because it uses an invalid or unsupported form of compression.
Тоже самое Opera и Explorer

После обновления каждой страницы она показывается.

В UTF-8 сохраняю через notepad++ и он в начало файла добавляет 3 своих символа "п>ї".
После удаления этих символов глюк пропадает.

Можно сказать как в известном анекдоте: "А ты так не делай".
Но хочется разобраться.

Тюнинг divx.com под D6

13 января 2009 в 12:16

http://groups.drupal.org/node/18177
Servers
4 - Web servers with 8GB Memory each, Apache 2.2.x + PHP 5.2.x
2 - Memcache Servers with 8 GB Memory each. 9 bins per server
2 - Database Servers with 16GB each running MySQL 5.0.x

Performance Tuning
What we've done so far for performance tuning.

При кэшировании на разных адресах выдается одна и таже страница.

23 декабря 2008 в 22:22

С помощью url_rewrite_inbound сделал так чтобы работала замена адресов:
dom.site.ru -> site.ru/dom
mebel.site.ru -> site.ru/mebel
avto.site.ru -> site.ru/avto
У зарегистрированных пользователей все отлично работает, у анонимов при отключенном кэшировании страниц - тоже все отлично.

Но при включении кэширования у анонимов по всем адресам поддоменов вываливается главная страница с главного домена.
dom.site.ru == mebel.site.ru == avto.site.ru == site.ru

Подскажите пожалуйста куда копать?
Где перехватить кэширование?

Письма о регистрации на английском [Решено]

5 декабря 2008 в 13:42

Все письма о регистрации пользователей приходили на английском (хотя переводы все установлены).
Оказалось, что на странице /admin/user/settings остались английские оригиналы текстов.
Просто удалил все содержимое полей на английском языке.
После их удаления появились русские строчки.

Запомнить из какого термина таксономии пользователь попал в ноду

25 ноября 2008 в 9:05

Задача:
Запомнить из какого термина таксономии пользователь попал в ноду и вывести этот термин в breadcrumb

Решение:
Передать в url переменную ?ft=tid
В settings.php:
<?php
function custom_url_rewrite_outbound(&$path, &$options, $original_path) {
if(arg(0)=='taxonomy' && (is_numeric(arg(2)) || arg(2)=='all')){
if (preg_match('|^node(/.*)|', $original_path, $matches)) {
$path = $path. '?ft='. arg(2);
}
}
if(arg(0)=='node' && (is_numeric(arg(1)))){
if (preg_match('|^node(/.*)|', $original_path, $matches) || preg_match('|^firm(/.*)|', $original_path, $matches)) {
if($_GET['ft']) {
$ft=$_GET['ft'];
$node1=node_load(arg(1));
foreach ($node1->taxonomy as $term) {
$ft=$term->tid;
if($_GET['ft']==$term->tid){
break;
}
}
$path = $path. '?ft='. $ft;
}
}

}
}
?>
Устанавливаем модуль taxonomy_breadcrumb.
На нужных страницах выводим php-блок с кодом:
<?php
if($ft){
$breadcrumb = taxonomy_breadcrumb_generate_breadcrumb($ft);
if(arg(0) =='node'){
$breadcrumb[] = l($node->title, 'node/'.$node->nid);
}
drupal_set_breadcrumb($breadcrumb);
}?>

Как хакнуть path, чтобы заменял ЧАСТЬ url?

22 ноября 2008 в 15:18

Задача:
Преобразовать пути вида taxonomy/term/10/nodetype в путь nazvanie_razdela/nodetype
(taxonomy/term/10/* -> nazvanie_razdela/*)

Проблема:
Модуль path может преобразовывать только явно указанные пути
taxonomy/term/10 -> nazvanie_razdela

Подскажите, пожалуйста куда копать?
path.module - смотрел, функцию замены url не нашел.

custom_url_rewrite_outbound, custom_url_rewrite_inbound использовать не хочется, т.к. в них придется обращаться в базу к таблице алиасов (а path это итак уже делает).

Замена в url символов '%2F', '%3F', '%3D', '%26', '%2523' на '/', '?', '=', '&', '#'

18 ноября 2008 в 20:50

Проблема:
В url символы '/', '?', '=', '&', '#' заменяются кодами '%2F', '%3F', '%3D', '%26', '%2523' (если включены чистые ссылки).
Решение нашел здесь: http://drupal.org/node/150898

Перевод произвольной строки (не из модуля)

17 ноября 2008 в 23:25

Понадобилось сделать перевод произвольной строки (не из модуля)
Помог модуль stringoverrides
http://drupal.org/project/stringoverrides

Настройка хостинга nic.ru под Drupal/Acquia Drupal

17 ноября 2008 в 18:08

- Включить Использование .htaccess (Веб-сервер -> Сайты -> mysite.ru)
- Включить php5.2 (Веб-сервер -> Модули)
- добавить памяти Максимальный объем памяти для работы скрипта = 64MB ( Веб-сервер -> Модули -> Модуль PHP -> Настройка)
Теперь Drupal должен работать.

-Включение gzip сжатие страниц _http://www.internet-technologies.ru/articles/article_2.html
Прописать в файле темы themes/названиетемы/template.php
ob_start("ob_gzhandler");

-Включение gzip сжатие js и css
( http://www.drupal.ru/node/12463 )
Включил модуль gzip_module (Веб-сервер -> Модули)
В .htaccess прописал

<IfModule mod_gzip.c>
# включен ли модуль mod_gzip
mod_gzip_on                   Yes
# исключения - ява скрипты и таблицы стилей.
# на самом деле современные браузеры корректно понимают
# сжатые скрипты и CSS - тока Netscape4 не переваривает
# но его немного - поэтому в принципе эти две строки можно
# закомментировать, или поменять `exclude` на `include`
mod_gzip_item_include         file       \.js$
mod_gzip_item_include         file       \.css$
</IfModule>

- Установка APC:
скопировать файлы *.so из ~/etc/php/lib/php/extensions в ~/php5_extensions
закинуть в ~/php5_extensions приложенный файл apc.so
скопировать php5.ini из ~/etc/~php/php5.ini в ~/ и переименовать его в php.ini.
Заменить в ~/php.ini
#extension_dir="/opt/php/lib/php/extensions/"
extension_dir="/home/id_хостинга/php5_extensions/"
и добавить в ~/php.ini
extension=apc.so
Перезагрузить веб-сервер (Панель управления хостингом->Веб-сервер, управление и настройка)

P.S.
Продолжение следует...

Модуль Composite Layout - произвольное оформление каждой ноды

23 октября 2008 в 21:09

http://drupal.org/project/composite
Модуль Composite Layout - позволяет произвольно оформить отдельную ноду:
- выбрать расположение блоков
- выбрать в каких блоках выводить body, поля CCK,

PS
Похоже на panels но попроще.

Модуль flexifield - делает несколько CCK полей одним полем

23 октября 2008 в 19:52

Нашел модуль который объединяет несколько CCK полей в группу и в дальнейшем можно работать с группой полей как с одним CCK полем (добавлять, сортировать, удалять...)
http://drupal.org/project/flexifield

Передача аргументов из Panels2 в Views2

24 сентября 2008 в 21:20

Нужно вывести в панели несколько views с разными аргументами.

При вставке views в панель есть несколько способов передать аргумент:
Send arguments
(Select this to send all arguments from the panel directly to the view. If checked, the panel arguments will come after any context arguments above and precede any additional arguments passed in through the Arguments field below.)
Arguments:
(Additional arguments to send to the view as if they were part of the URL in the form of arg1/arg2/arg3. You may use %0, %1, ..., %N to grab arguments from the URL. Or use @0, @1, @2, ..., @N to use arguments passed into the panel.)
Override URL:
(If this is set, override the View URL; this can sometimes be useful to set to the panel URL)

Но ни один из них не работает.
Пришлось вставлять в панель "Custom PHP content" и выводить views программно:

$myview = views_get_view('taxonomy_type');
$arg[0]='story';//node_type
$arg[1]='1'; //term_id
$block->content= $myview->execute_display('page_1',$arg);

Скажите может всетаки возможно передать аргументы из Panel2 во Views2 стандартными средствами?

Как вывести с помощью views разное количество полей и строк таблицы

4 сентября 2008 в 21:25

Нужно было в зависимости от страницы вывести с помощью views разное количество полей и строк таблицы. (Программное изменение Field во Views с помощью Argument Handling Code )

Решение:
1. Формируем нужный views со всеми нужными полями в пользовательском интерфейсе.
2. В template.php добавляем функцию которая выведет содержимое $view
<?php
function имятемы_view_table($view, $nodes, $type) {
print "

";
  print_r ($view);
  print "

";
$fields = _views_get_fields();

foreach ($nodes as $node) {
$row = array();
foreach ($view->field as $field) {
if ($fields[$field['id']]['visible'] !== FALSE) {
$cell['data'] = views_theme_field('views_handle_field', $field['queryname'], $fields, $field, $node, $view);
$cell['class'] = "view-field ". views_css_safe('view-field-'. $field['queryname']);
$row[] = $cell;
}
}
$rows[] = $row;
}
return theme('table', $view->table_header, $rows) . "!!!";
}
?>
3. Открываем вьюес и ищем массив field
4. Из полей массива field формируем код и вставляем его в Argument Handling Code в нужные условия
У меня получилось такое (ставит вывод таблицей, выводит картинку и тайтл, убирает пэйджер и выводит 999 строк):
<?php
if($args[1] == 'firm' || $args[1] == 'producer'){
if($type=='page'){
$view->page_type = 'table';
$use_pager= FALSE;
$limit = '999';
$view->field = array();
$view->field[0] = array(
'vid' => '36',
'tablename' => 'node_data_field_firm_logo',

Backup and Migrate - супер модуль для автоматического бэкапа базы сайта

20 июня 2008 в 23:03

Backup and Migrate - супер модуль для автоматического бакупа базы сайта.
http://drupal.org/project/backup_migrate
Позволяет делать бакупы базы через указанные промежутки времени.
Позволяет исключать из архива лишние таблицы и данные.
Позволяет воссанавливать базу из архива.

Еще очень хотелось бы:
1. Добавлять в бакуп файлы из определенных папок.
2. Отправлять архив на почту администратору.
Как это можно рализовать?

Привязка данных к местоположению в google map

9 июня 2008 в 23:12

Привязка данных к местоположению в google map
Результат здесь:
http://krasmebel.ru/taxonomy/term/17
http://krasmebel.ru/node/2764

1. Устанавливаем GMap 5.x-1.x-dev

2. Устанавливаем Location 5.x-1.x-dev

3. Включаем модули GMap, GMap Location, GMap Views Integration, Location, Location Views

4. Настраиваем текущее местоположение в настройках GMap, GMap Location и Location.

5. В нужном типе данных включаем использование Locative information и настраиваем.

6. В ноде пробуем поставить маркер.

7. Создаем вьюес для отображения этого маркера при просмотре ноды address_gmap:
Для того чтоб работало управление видами маркеров надо сделать страничный тип.
Provide Block – галка
View Type: GmapView
Nodes per Block: 99
Fields: Node: Title + Location: Latitude + Location: Longitude
Arguments: Node: ID
Фильтры: Node: Distinct + Node: Published

8. Для отображения этого вьюеса при просмотре ноды я создал Computed field address_gmap_comp которое должно всегда отображаться:
Computed Code:
$node_field[0]['value']=1;
Display Format:

  $view_name='address_gmap';
  $current_view='';
  $current_view->args[0]=$node->nid;
  $view = '';
  $view = views_get_view($view_name);
$display = (views_build_view('block', $view, $current_view->args, false, $view->nodes_per_block));

Data Type: int
Data Length: 1
Default Value: 1

9. Убираем вывод слова из ноды
В template.php переопределяем функцию

function mytheme_locations($locations = array(), $hide = array()) {
  return; // Hide the Location(s) section.
}