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

themizzz
На сайте с 05.07.2012
Offline
87
#721
Garin33:
Уж такую то фигню спрашивать... http://drupal.org/project/xmlsitemap

Благодарю. Кое-как настроил. Вроде все как надо. Кроме одного.

Карта сайта работает по ссылке: http://site.ru/sitemap.xml/

а надо: http://site.ru/sitemap.xml

Как это сделать?

Plazik
На сайте с 29.07.2008
Offline
168
#722
mr-faq:
alinks под семерку работает у кого-нибудь? Если тип вывода стоит обычный текст.
Или посоветуйте аналог со словарем.

http://drupal.org/project/word_link

Garin33
На сайте с 31.08.2009
Offline
169
#723
themizzz:
Благодарю. Кое-как настроил. Вроде все как надо. Кроме одного.
Карта сайта работает по ссылке: http://site.ru/sitemap.xml/
а надо: http://site.ru/sitemap.xml

Как это сделать?

Убрать слеш в конце всех ссылок - http://drupal.org/project/globalredirect

Потому что Drupal - это круто.
A4
На сайте с 05.01.2012
Offline
55
#724

Здравствуйте. Мучаюсь над автоматическим добавлением материалов.

Материал имеет 3 доп поля. Одно из полей - поле с картинкой.

Теперь смотрим на код:


$file = (object) array(
‘uid’ => $i ,
‘uri’ => $file_path,
‘filemime’ => file_get_mimetype($filepath),
‘status’ => 1,
);
$file = file_copy($file, “public://”);
$node->field_image[LANGUAGE_NONE][0] = (array)$file;

Что делает функция file_copy? - она копирует файл из папки модуля в папку /sites/all/default/files

и добавляет в базу данных запись о файле

Так вот у меня 1753 файлов картинок, общим размером 70+ мегабайт. Как вы представляете процесс установки такого модуля на слабенький виртуальный хостинг. Копирование ПАКА файлов - это пол часа работы процессора на хостинге. Например на sweb доступно только 30 секунд для процесса! Если дольше - завершается принудительно. И вот представьте пользователь моего модуля решил его установить себе - и получил такой косяк. Я не хочу чтобы меня материли...

Поэтому вместо file_copy($file, “public://”); я пишу так:


$file_patch = drupal_get_path('module', 'rmodule') . "/ПАПКА с КАРТИНКАМИ".$artist['img_url'];
$file = (object) array(
'uid' => 1,
'status' => 1
);
global $user;
$file = new stdClass;
$file->uid = $user->uid;
$file->filename = basename($file_patch);
$file->uri = $file_patch;
$file->filemime = file_get_mimetype($file_patch);


$file = file_save($file);
file_usage_add($file, 'rmodule', 'node', 1);


$node->author_image[LANGUAGE_NONE][0] = array(
'fid' => $file->fid
);

То есть $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:


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'];//ТО-ЖЕ САМОЕ бблин((

$build['body']['#object']->author_image['und'][0]['uri'] = "/sites/all/modules/rmodule/images/th/".$build['author_image']['#items'][0]['filename'];
}
}


---------- Добавлено 06.02.2013 в 16:28 ----------

Так тоже не катит:


function rmodule_node_view($node, $view_mode, $langcode){
if($node->type=='author_page'){

$node->content['author_image'][0]['#item']['uri'] = "123";

Вывод такой: http://test1.ru/sites/default/files/styles/medium/public/123

А надо просто 123...

bsyomov
На сайте с 25.01.2012
Offline
31
#725

Batch API вам в помощь...

A4
На сайте с 05.01.2012
Offline
55
#726

Спасибо) Начал читать примеры) А еще вариантов нет? Ну чтобы избежать копирования? Или это непобедимо? Знаю ведь что можно хД

big boy
На сайте с 18.11.2006
Offline
314
#727

Как для site.ru/node сменить title?

Сейчас идет в настройках модуля page-title такая ботва: [page-title] | [site-name]

Но так как node своего тайтла не имеет, то на этой странице выводится: " | [site-name]". Можно как-то поправить?

✔ Как разблокировать сайт на Cloudflare - https://webmasta.ru/blog/12-roskomnadzor-blokiruet-sayty-na-cloudflare-kak-razblokirovat
A4
На сайте с 05.01.2012
Offline
55
#728

big boy, Если у вас пункт меню делается через хук hook_menu, то так можно присвоить кастомный заголовок к созданному пункту:


function mymodyle_menu() {
$items = array();
$items['custom_manu'] = array(//ваш пункт меню
'title' => t('Бла бла бла'),//это не надо
'title callback' => 'mymodule_title',//тут делаем заголовок
'type' => MENU_CALLBACK,
'page callback' => 'кэллбэк функция',
'access arguments' => array('access content'),
);
return $items;
}
function mymodule_title(){/*Задаем тайтл для страницы поиска, ибо СЕО хД*/

return t("Новый титле");
}

Тут можно сделать так(у меня так)


function rmodule_audio_title(){/*Задаем тайтл для страницы поиска, ибо СЕО хД*/
if(strlen(arg(1))!=0){
return t("Поиск музыки по запросу:".arg(1));
}else
return t("Фраза не найдена");
}

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

$node->content['body']['#object']->title = "Бла блы бла!";

Не хочет менять. Примерно то-же самое что и у меня, только с картинками.

---------- Добавлено 08.02.2013 в 06:00 ----------

Попробуйте hook_node_view_alter(&$call)

Тут можно вроде в массиве копнуть $call - там по любому есть

К слову - с картинками пытался так сделать - не катит. Хотя может мне просто взять и сделать так(говнокод детектед)


$tmp = implode(';',$call);
str_replace(и поменть все элементы в которых встречается /sites/default/files/)
$call = array();//обнулим
$call = explode($tmp,";");


---------- Добавлено 08.02.2013 в 06:01 ----------

_________________________

Сидя в бронированном танке танкисты нервно курили....

Garin33
На сайте с 31.08.2009
Offline
169
#729

big boy, модуль http://drupal.org/project/simplemeta для site.ru/node позволяет задать любой титл. Проверил на 7ке.

A4
На сайте с 05.01.2012
Offline
55
#730

big boy, http://drupalace.ru/lesson/obrabotka-bolshogo-kolichestva-dannyh-s-pomoshchyu-batch-api

Почитайте, как раз про изменение заголовка в нодах... Хотя это думаю слишком замудрено для такой задачи.

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