Добрый день
Поводом к написанию даного поста была попытка внедрения механизма экспорта в word описанного вот здесь http://www.drupal.ru/node/13370
С чем я столкнулся надеюсь мой опыт поможет другим.
1. Куда у меня ушло куча времени на то что бы настроить операции. Проблема в том, что по ссылке http://idgroup.in.ua/prodagakvartir/edit нету закладки операции хотя есть все остальные изменить, клонировать, экспорт.
А по ссылке http://idgroup.in.ua/admin/build/views/NEW_PRa/edit есть вкладка операции не знаю, может это общеизвестный факт, но я помучался в поисках где же операции и как их настроить, прежде чем обнаружил это.
2. Мне пришлось патчить views, у меня вываливалась такая ошибка
* user warning: 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 ')) AND ('applylocalizer'='applylocalizer') )' at line 1 query: SELECT node.nid, localizernode.language AS localizernode_language, node.title AS node_title, node.changed AS node_changed FROM node node LEFT JOIN localizernode localizernode ON node.nid = localizernode.nid LEFT JOIN localizernode loc ON loc.nid=node.nid LEFT JOIN(SELECT -100 AS weight, CAST('en' AS CHAR(10)) AS language UNION SELECT 1 AS weight, CAST('ru' AS CHAR(10)) AS language) lanw ON lanw.language=loc.language LEFT JOIN (select pid, MIN(weight) AS minweight from localizernode loc2 LEFT JOIN (SELECT -100 AS weight, CAST('en' AS CHAR(10)) AS language UNION SELECT 1 AS weight, CAST('ru' AS CHAR(10)) AS language) lanw2 on lanw2.language=loc2.language group by pid) loc1 ON loc.pid=loc1.pid WHERE (lanw.weight=loc1.minweight) AND ( (node.status = '1') AND (node.type IN ('page','page_with_links','products_list_page')) AND (node.nid IN ()) AND ('applylocalizer'='applylocalizer') ) in /home/#####/www/public/includes/database.mysqli.inc on line 151.
Решение описано здесь http://drupal.org/node/263855 патч прикреплен.
3. Мне не пришлось конвертировать контент из UTF в Win1251 более того при конвертации префикс м2 2 в верхнем регистре портится в конечном файле и выглядит так 00м2 так что я выкинул эту функцию конвертации поэтому ни какие правки в файл views_bonus_export.module вносить не пришлось.
4. Автор предлагает переделать функцию node delete по сути убрав функцию удалить ноду, а вдруг она понадобится в другом виде ?
Его функцию можно вставить назвав ее так чтоб название отражало назначение функции например
Обязательно определив ее вот здесь, сделав для нее чек бокс на закладе операции
/**
* Implementation of hook_node_operations().
*/
function views_bulk_operations_node_operations() {
$operations = array(
'bulk_delete' => array(
'label' => t('Delete'),
'callback' => 'views_bulk_operations_delete_nodes',
),
+ 'bulk_export' => array(
+ 'label' => t('Export to Word'), /* пишем на кнопочке
+ 'callback' => 'views_bulk_operations_export_word_nodes', /*пишем название функции
+ ),
);
return $operations;
}
А дальше есть еще одна проблема тут я прощу помощи у сообщества дело все в том что предложенная Иваном (ака куку) функция прекрасно работает, но она жестко привязана к одному виду.
$url = '{вид который дает_doc}/';
$temp = '';
foreach ($nodes as $nid) {
$temp = $nid;
settype($temp, "string");
$url = $url.$temp.'+';
}
$url = substr($url, 0, strlen($url)-1);
$url = $url.'/doc';
drupal_goto($url);
}
Проблема в этой строке $url ={вид который дает_doc}’
Я пробовал поменять так $url = $view->url.’/’; но не помогло
Было бы классно как то передать в функцию значение $view->url
В итоге я сделал извращенческое решение создав четыре функции по одной под каждый вид и четыре чек бокса на панели операции. Работает, но это же не правильно мне еще надо виды с печатью.
Как сделать правильно ?
Вложение | Размер |
---|---|
![]() | 957 байт |
Комментарии
а вы попробуйте извлекать адрес вида как аргумент:
например www.site.ru/vid
$views_url = arg(1)
значение $views_url будет равно "vid"
или:
например www.site.ru/vid/cars
$views_url = arg(1). '/' .arg(2)
значение $views_url будет равно "vid/cars"
Спасибо большое помогло
только наверно лучше arg(0)