Форум русской поддержки Joomla!® CMS
10.12.2016, 09:02:08 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Почему при сохранении плагин контента не срабатывает?

 (Прочитано 257 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Karyuudo
Давно я тут
****

Репутация: +0/-0
Offline Offline

Сообщений: 352


« : 11.01.2016, 13:09:09 »

Делаю плагин переименовывания, пока готовы наброски.
Следующий скрипт переименовывает (я в папке плагина создавал test.php с тем же кодом), однако когда я его вставляю под

Код:
public function onContentAfterSave( $context, $article, $isNew )
{

то ничего при сохранении материала не происходит. Почему?

Код:
public function onContentAfterSave( $context, $article, $isNew )
{


$patch = '../../../images/recepty/newimg';
$handle = opendir($patch);
while(($file = readdir($handle))) {
    if ( is_file ($patch."/".$file) ) /*.переименовываем файл.*/
    {
        echo $patch .  "/" . $file;
        echo rename ( $patch .  "/" . $file, $patch .  "/renamed_" . $file );
    }
}

}
« Последнее редактирование: 11.01.2016, 13:21:49 от Karyuudo » Записан
dmitry_stas
Профи
********

Репутация: +798/-4
Offline Offline

Сообщений: 7781



« Ответ #1 : 11.01.2016, 15:06:14 »

ничего - это что? не срабатывает событие? не находит директорию? находит, но не переименовывает файлы? что?
Записан
Karyuudo
Давно я тут
****

Репутация: +0/-0
Offline Offline

Сообщений: 352


« Ответ #2 : 11.01.2016, 15:38:47 »

ничего - это что? не срабатывает событие? не находит директорию? находит, но не переименовывает файлы? что?
не срабатывает событие - файл в папке так и остается не переименованным.
другие события срабатывают, а это как-будто игнорируется
Записан
fsv
Практически профи
*******

Репутация: +330/-2
Offline Offline

Пол: Мужской
Сообщений: 2247


« Ответ #3 : 11.01.2016, 15:54:39 »

$patch = JPATH_ROOT . '/images/recepty/newimg';
Записан
dmitry_stas
Профи
********

Репутация: +798/-4
Offline Offline

Сообщений: 7781



« Ответ #4 : 11.01.2016, 15:59:36 »

Цитировать
не срабатывает событие - файл в папке так и остается не переименованным
это может быть из-за 100500 причин, например нет прав на запись в папке. вы уверенны что именно событие не срабатывает?
Записан
Karyuudo
Давно я тут
****

Репутация: +0/-0
Offline Offline

Сообщений: 352


« Ответ #5 : 11.01.2016, 16:51:28 »

$patch = JPATH_ROOT . '/images/recepty/newimg';
тоже ничего не происходит
Записан
Karyuudo
Давно я тут
****

Репутация: +0/-0
Offline Offline

Сообщений: 352


« Ответ #6 : 11.01.2016, 16:52:21 »

это может быть из-за 100500 причин, например нет прав на запись в папке. вы уверенны что именно событие не срабатывает?
а как узнать причину?
права есть, это на денвере
путь - если запускать скрипт из соседней папки - то переименовывает.
Записан
dmitry_stas
Профи
********

Репутация: +798/-4
Offline Offline

Сообщений: 7781



« Ответ #7 : 11.01.2016, 19:03:33 »

а как узнать причину?
вариантов великое множество. в файл логируйте. хотя бы
Код
die;
сделайте в плагине и посмотрите что там происходит
Записан
Karyuudo
Давно я тут
****

Репутация: +0/-0
Offline Offline

Сообщений: 352


« Ответ #8 : 13.01.2016, 16:21:45 »

Все понял! Спасибо.
После остановки - появилось сообщение об ошибке. Начал разбираться.
Оказывается у меня директория называется по другому, не recepty. Это я перепутал с другим...
« Последнее редактирование: 13.01.2016, 16:32:23 от Karyuudo » Записан
dmitry_stas
Профи
********

Репутация: +798/-4
Offline Offline

Сообщений: 7781



« Ответ #9 : 13.01.2016, 17:43:46 »

ну вот, уже проще. а то событие не вызывается, событие не вызывается Azn
Записан
Karyuudo
Давно я тут
****

Репутация: +0/-0
Offline Offline

Сообщений: 352


« Ответ #10 : 14.01.2016, 20:18:40 »

Подумал, что оптимальнее перенести этот скрипт в другой плагин.
но почему-то снова не работает Sad

Код:
$patch = JPATH_ROOT .'/images/test';
$handle = opendir($patch);

while(($file = readdir($handle))) {

    if ( is_file ($patch.'/'.$file) ) /*.переименовываем файл.*/
    {
echo $patch .  '/' . $file.'<br> - patch+file';

if ($file=='0.jpg' || $file=='0.JPG'){

rename ( $patch .  '/' . $file, $patch .  '/'.$patch.'.jpg');
echo $patch .  '/' . $file.'<br> - patch+file';
echo $patch.' - patch <br>';
echo $file.' - file <br>';
die;

} //переименовать 0.jpg в название папки.jpg



if (preg_match('/^(\d+)(.[jJ][pP][gG])$/u', $file)) {
rename ( $patch .  "/" . $file, $patch .  "/".$patch.'-'.mb_strtolower($file));} //добавить к цифренному имени файла нпазвание папки и черточку
    }
}

выдает:
Цитировать
Z:\home\сайт.ru\www/images/test/0.JPG
- patch+file
Warning: rename(Z:\home\сайт.ru\www/images/test/0.JPG,Z:\home\сайт.ru\www/images/test/Z:\home\сайт.ru\www/images/test.jpg) [function.rename]: �������������� ������ � ����� �����, ����� ����� ��� ����� ����. (code: 123) in Z:\home\сайт.ru\www\plugins\content\imageresizer\imageresizer.php on line 168
Z:\home\сайт.ru\www/images/test/0.JPG
- patch+fileZ:\home\сайт.ru\www/images/test - patch
0.JPG - file

в то время точно такой же скрипт, вызываемый из другого плагина выдает:
Цитировать
Z:\home\сайт.ru\www/images/test/0.JPG
- patch+fileZ:\home\сайт.ru\www/images/test - patch
0.JPG - file

кажется понял, надо было кусок кода поместить в другое место... пробую дальше.. но уже нет ошибки и пошло переименовывание, правда пока не как надо
« Последнее редактирование: 14.01.2016, 20:22:19 от Karyuudo » Записан
fsv
Практически профи
*******

Репутация: +330/-2
Offline Offline

Пол: Мужской
Сообщений: 2247


« Ответ #11 : 14.01.2016, 20:26:54 »

rename ( $patch .  '/' . $file, $patch .  '/'.$patch.'.jpg');
newname - 2 раза путь указали
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet