Что делает функция file_copy? - она копирует файл из папки модуля в папку /sites/all/default/files
и добавляет в базу данных запись о файле
Так вот у меня 1753 файлов картинок, общим размером 70+ мегабайт. Как вы представляете процесс установки такого модуля на слабенький виртуальный хостинг. Копирование ПАКА файлов - это пол часа работы процессора на хостинге. Например на sweb доступно только 30 секунд для процесса! Если дольше - завершается принудительно. И вот представьте пользователь моего модуля решил его установить себе - и получил такой косяк. Я не хочу чтобы меня материли...
Поэтому вместо file_copy($file, “public://”); я пишу так:
http://test1.ru/sites/default/files/styles/medium/public/ - ЛЕВОЕ ВАЩЕ, оно мне не нужно нафик, его дам друал подставил, и я никак это не могу выпилить, я даже через
_/sites/all/modules/rmodule/images/th/ - нормальный путь картинки
hook_page_view_alter и hook_node_view_alter пытался - не выпиливается блин! НУ НАФИГА ему такой механизм, я что обязан все файлв в папку public:// совать чтоли? А если это НЕПРИЕМЛИМО!
В моей ситуации копирование файлов из папки в папку не приемлимо, но блин и обойти никак не выходит.
Ребята подскажите что делать.
Вот коды хука node_view_alter:
function rmodule_node_view_alter(&$build){ $node = $build['#node'];
if($node->type == "author_page"){ $build['author_image']['#items'][0]['uri'] = "/sites/all/modules/rmodule/images/th/".$build['author_image']['#items'][0]['filename'];//НЕ ВЫПИЛИВАЕТ, хотя урл меняется $build['author_image'][0]['#item']['uri'] = "/sites/all/modules/rmodule/images/th/".$build['author_image']['#items'][0]['filename'];//НЕ ВЫПИЛИВАЕТ $build['author_image'][0]['#item']['path'] = "/sites/all/modules/rmodule/images/th/".$build['author_image']['#items'][0]['filename'];//ТО-ЖЕ САМОЕ бблин((
Все вкурил, спасибо хД) Я думал что перед названием кастомного поля надо написать field_ вот так примерно $node->field_author_janre - это не работает.
Зато так $node->author_janre работает) Сам короче себя же и замудрил.
---------- Добавлено 03.02.2013 в 11:37 ----------
Pavel_: нашелся один автор, который копировал статьи с других сайтов
О морали надо в другой теме рассуждать имхо) И не с сайта а из .csv файла.
strip_tags($spasennaja_fignja,"<p><span><a>");
К слову иногда левые <div> выдает word редактор. Если ваш автор писал в ворде и копировал в jce например - то вот и корень косяка.(Было дело на джумле раньше)
Здравствуйте. Я пытаюсь создать ноду программными средствами(drupal7).
Вот код:
$node = new stdClass(); $node->type = 'author_page';//машинное имя типа материала(см .install файл модуля) node_object_prepare($node);
$node->title = "The Title";//$artist['title']; $node->language = LANGUAGE_NONE;
// Добавляем текст материала $node->body[$node->language][0]['value'] = "<p>TEXT OF NODE</p>";//$artist['text']; $node->body[$node->language][0]['summary'] = text_summary("<p>TEXT OF NODE</p>");//text_summary($artist['text']); $node->body[$node->language][0]['format'] = 'filtered_html'; //добавляем поле картинки $file_path = drupal_get_path('module', 'rmodule') .'/images/th/rafile9cc75a85346ff6fd41e2799d18a2eaa5_prop_158x158.jpg'; // Create a File object
Но к сожалению не выходит. Добавляется материал с заголовком The Title и контентом, НО дополнительные поля author_name и author_janre, а так-же поле с картинкой - пустуют. Кто-нибудь может подсказать в чем дело? Рою буржунет, пока ничего дельного не нарыл(
В общем если кому интересно - в базе данных создается таблица xmlsitemap, в которую мы можем в ручную требуемые значения засунуть сами хД И не надо всякие там АПИ пилить...
---------- Добавлено 14.01.2013 в 20:49 ----------
Хотя нет, все не совсем так. Вот моя реализация:
//Получаем последний ид элемент а в таблице xmlsitemap $qw = "SELECT `id` FROM {xmlsitemap} ORDER BY `id` DESC LIMIT 1"; $data = db_query($qw); $str_val = $data->fetchAssoc();
Implementation of hook_schema() in Form Messages Module’s formmsgs.install File <?php /** * @file * DB schema, install, and uninstall functions for AJAX Form Messages. * * The entity base table is defined here. */
/** * Implements hook_schema(). 550 CHAPTER 24 WRITING A MAJOR MODULE */ function formmsgs_schema() { $schema = array(); $schema['formmsgs'] = array( 'description' => 'Stores information about all formmsgs entities.', 'fields' => array( 'fmid' => array( 'type' => 'serial', 'not null' => TRUE, 'description' => 'Primary Key: Unique form message ID.', ), 'name' => array( 'description' => 'The machine-readable name of the form message.', 'type' => 'varchar', 'length' => 32, 'not null' => TRUE, ), 'label' => array( 'description' => 'The human-readable name of this form message.', 'type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => '', ), 'status' => array( 'description' => 'Boolean indicating whether the form message is active.', 'type' => 'int', 'size' => 'tiny', 'not null' => TRUE, 'default' => 1, ), ) + entity_exportable_schema_fields(), 'primary key' => array('fmid'), 'unique keys' => array( 'name' => array('name'), ), ); return $schema; }
Бло, по ходу модулю надо таки функцию удаления прописать...
Plazik: Почитайте книгу CMS Drupal 7. Руководство по разработке системы управления веб-сайтом
Ща скачаю, спасибо)
А нифига, скачать эту самую книжку на халяву оказываться не получится(( Везде куда не плюнь все ссылки ведут на лохотрон и разводилово. Я конечно понимаю - люди бабло делают, но не так же бессовестно то. Тем более кому как не веб мастеру знать все эти уловки. В общем копаю дальше)
Здравствуйте. В общем для осуществления одной весьма дельной задумки требуется создать в базе данных Drupal 7 таблицу. Я в этом не очень разбираюсь, в общем исходя из папки с примерами написания модулей получился такой код:
Это дело было добавлено в файл .install самого модуля. После чего я удалил строчку описывающую модуль из таблицы SYSTEM и модуль переустановил. Но таблица не создалась( Что я не так делаю?
---------- Добавлено 04.01.2013 в 23:03 ----------
drupal_install_schema('rmodule_users'); в hook_init тоже не помогает(...
---------- Добавлено 04.01.2013 в 23:05 ----------
кеш чистил)
---------- Добавлено 04.01.2013 в 23:18 ----------
Нет я конечно и от руки это сделать могу, но ежели кто другой захочет использовать модуль - каково ему будет, и сколько на меня после этого матов снизойдет... К слову сказать модуль из админки не удаляетя, даже если его отключить(странно...) Поэтому приходиться из таблицы system его выпиливать - но судя по всему это не помогает)
Вот сколько в интернете инструкций по работе с базой данных drupal 7, по выборке, по сортировке и прочему, а про создание таблицы молчат... Или это как говорил наш препод по алгему - "Элементарно". Что подразумевает под собой - сложно но я знаю ответ, а ты никогда не догонишь)
Спасибо) Начал читать примеры) А еще вариантов нет? Ну чтобы избежать копирования? Или это непобедимо? Знаю ведь что можно хД
Здравствуйте. Мучаюсь над автоматическим добавлением материалов.
Материал имеет 3 доп поля. Одно из полей - поле с картинкой.
Теперь смотрим на код:
Что делает функция file_copy? - она копирует файл из папки модуля в папку /sites/all/default/files
и добавляет в базу данных запись о файле
Так вот у меня 1753 файлов картинок, общим размером 70+ мегабайт. Как вы представляете процесс установки такого модуля на слабенький виртуальный хостинг. Копирование ПАКА файлов - это пол часа работы процессора на хостинге. Например на sweb доступно только 30 секунд для процесса! Если дольше - завершается принудительно. И вот представьте пользователь моего модуля решил его установить себе - и получил такой косяк. Я не хочу чтобы меня материли...
Поэтому вместо file_copy($file, “public://”); я пишу так:
То есть $file = file_save($file); file_usage_add($file, 'rmodule', 'node', 1);
-это добавляет файл в бд и возвращает его fid и прочее, что позволяет заполнить поле $node->author_image
Вроде все красиво, НО. Картинки в нодах не отображаются, Вместо того чтобы отдать урл до картинки вот что выводит друпал:
http://test1.ru/sites/default/files/styles/medium/public//sites/all/modules/rmodule/images/th/rafile4dc0cf3e5bedc2023de27b1195affcb0.jpg
-это урл картинки.
http://test1.ru/sites/default/files/styles/medium/public/ - ЛЕВОЕ ВАЩЕ, оно мне не нужно нафик, его дам друал подставил, и я никак это не могу выпилить, я даже через
_/sites/all/modules/rmodule/images/th/ - нормальный путь картинки
hook_page_view_alter и hook_node_view_alter пытался - не выпиливается блин! НУ НАФИГА ему такой механизм, я что обязан все файлв в папку public:// совать чтоли? А если это НЕПРИЕМЛИМО!
В моей ситуации копирование файлов из папки в папку не приемлимо, но блин и обойти никак не выходит.
Ребята подскажите что делать.
Вот коды хука node_view_alter:
---------- Добавлено 06.02.2013 в 16:28 ----------
Так тоже не катит:
Вывод такой: http://test1.ru/sites/default/files/styles/medium/public/123
А надо просто 123...
Все вкурил, спасибо хД) Я думал что перед названием кастомного поля надо написать field_ вот так примерно $node->field_author_janre - это не работает.
Зато так $node->author_janre работает) Сам короче себя же и замудрил.
---------- Добавлено 03.02.2013 в 11:37 ----------
нашелся один автор, который копировал статьи с других сайтов
О морали надо в другой теме рассуждать имхо) И не с сайта а из .csv файла.
strip_tags($spasennaja_fignja,"<p><span><a>");
К слову иногда левые <div> выдает word редактор. Если ваш автор писал в ворде и копировал в jce например - то вот и корень косяка.(Было дело на джумле раньше)
Здравствуйте. Я пытаюсь создать ноду программными средствами(drupal7).
Вот код:
Но к сожалению не выходит. Добавляется материал с заголовком The Title и контентом, НО дополнительные поля author_name и author_janre, а так-же поле с картинкой - пустуют. Кто-нибудь может подсказать в чем дело? Рою буржунет, пока ничего дельного не нарыл(
В общем если кому интересно - в базе данных создается таблица xmlsitemap, в которую мы можем в ручную требуемые значения засунуть сами хД И не надо всякие там АПИ пилить...
---------- Добавлено 14.01.2013 в 20:49 ----------
Хотя нет, все не совсем так. Вот моя реализация:
Drupal 7 Добавляем из стороннего модуля ссылку в карту сайта))
Когда-то ставил xmlsitemap для мультисайтинга - дык там была опция добавления вручную любого стороннего пути файла без проблем... ))
Да есть такая) Но надо из модуля все это добавлять а не руками) я ж не мазохист в конце концов хДД
Уважаемый форумчане. У Drupal есть модуль - XML Sitemap, кому интересно вот ссылка на скачку - http://drupal.org/project/xmlsitemap
Этот модуль формирует отличную карту сайта и очень многие(почти все) его ставят. В общем требуется из Стороннего модуля добавить в карту сайта ссылку. На идею как это сделать меня натолкнул вот этот линк: http://drupal.stackexchange.com/questions/16627/how-can-my-module-add-xml-sitemap-entries
Покопав исходные коды обоих функций я так и не понял, как-же выглядит массив $link и как его сформировать, чтобы там была простая обычная ссылка.
Пока в голову приходит только это(но не пашет):
http://www.torrentino.com/torrents/678314 - ежели кто будет нормальную ссылку искать на эту книгу, то тут она. На англ по моему, но это не проблема, зато честно хД
Так там так и написано:
Бло, по ходу модулю надо таки функцию удаления прописать...
Почитайте книгу CMS Drupal 7. Руководство по разработке системы управления веб-сайтом
Ща скачаю, спасибо)
А нифига, скачать эту самую книжку на халяву оказываться не получится(( Везде куда не плюнь все ссылки ведут на лохотрон и разводилово. Я конечно понимаю - люди бабло делают, но не так же бессовестно то. Тем более кому как не веб мастеру знать все эти уловки. В общем копаю дальше)
https://www.google.ru/search?q=CMS+Drupal+7.+%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE+%D0%BF%D0%BE+%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B5+%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B+%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F+%D0%B2%D0%B5%D0%B1-%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%BC&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox-a#q=cms+drupal+7.+%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE+%D0%BF%D0%BE+%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B5+%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B+%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F+%D0%B2%D0%B5%D0%B1-%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%BC+%D1%81%D0%BA%D0%B0%D1%87%D0%B0%D1%82%D1%8C+%D0%B1%D0%B5%D1%81%D0%BF%D0%BB%D0%B0%D1%82%D0%BD%D0%BE&hl=ru&newwindow=1&client=firefox-a&tbo=d&rls=org.mozilla:ru:official&ei=FO7nUILRAqWO4gTOx4G4Bw&start=0&sa=N&bav=on.2,or.r_gc.r_pw.r_qf.&bvm=bv.1355534169,d.bGE&fp=8009d268bf6c1d76&bpcl=40096503&biw=1366&bih=661
Здравствуйте. В общем для осуществления одной весьма дельной задумки требуется создать в базе данных Drupal 7 таблицу. Я в этом не очень разбираюсь, в общем исходя из папки с примерами написания модулей получился такой код:
Это дело было добавлено в файл .install самого модуля. После чего я удалил строчку описывающую модуль из таблицы SYSTEM и модуль переустановил. Но таблица не создалась( Что я не так делаю?
---------- Добавлено 04.01.2013 в 23:03 ----------
drupal_install_schema('rmodule_users'); в hook_init тоже не помогает(...
---------- Добавлено 04.01.2013 в 23:05 ----------
кеш чистил)
---------- Добавлено 04.01.2013 в 23:18 ----------
Нет я конечно и от руки это сделать могу, но ежели кто другой захочет использовать модуль - каково ему будет, и сколько на меня после этого матов снизойдет... К слову сказать модуль из админки не удаляетя, даже если его отключить(странно...) Поэтому приходиться из таблицы system его выпиливать - но судя по всему это не помогает)
Вот сколько в интернете инструкций по работе с базой данных drupal 7, по выборке, по сортировке и прочему, а про создание таблицы молчат... Или это как говорил наш препод по алгему - "Элементарно". Что подразумевает под собой - сложно но я знаю ответ, а ты никогда не догонишь)