0 Пользователей и 1 Гость просматривают эту тему.
  • 9 Ответов
  • 798 Просмотров
*

Ragnarok

  • Захожу иногда
  • 64
  • 1 / 0
Всем привет!
Я сдаюсь )) Два дня ковырял...

Ситуация такая.
Joomla 2.5.28
JoomShopping 3.11.4

В папке /components/com_jshopping/lib есть текстовый файл с набором строк (file.txt).
Нужно получить этот набор строк в массив.
Пишу в файле /components/com_jshopping/lib/uploadfile.class.php

В методе setNameWithoutExt() класса UploadFile:

Код
function setNameWithoutExt($name){
$tmp = $this->parseNameFile($this->name);
if ($tmp['ext']!='') $ext = ".".$tmp['ext']; else $ext = "";



$file_lines_arr = file('file.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);



$this->name = $file_lines_arr[0];
}

В админке пишет "Ошибка при загрузке изображения". Причем, ошибку PHP не показывает в режиме разработчика, а просто выскакивает это оповещение...

Если вернуть "родную строку" вместо моей, то тоже нет ошибок php:

Код
$this->name = $name.$ext;

Что я делаю не так? Подскажите, пожалуйста.

Заранее благодарен.
« Последнее редактирование: 24.05.2018, 12:58:05 от Ragnarok »
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Цитировать
Что я делаю не так?
надо начать с того, что вы хотите сделать?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Ragnarok

  • Захожу иногда
  • 64
  • 1 / 0
надо начать с того, что вы хотите сделать?
Стоят JotCache и JCH Optimize. Кто-то из них (или оба) кеширует фотки (thumb_) в админке. com_admin в настройках JotCache исключен. Но все равно кеширует, видимо, потому что это уже не админка самой Джумлы, а, как бы, админка JoomShopping. Отключать кеширование для товаров - считай, что сайт вообще не кешируется... Может и есть вариант - исключить панель редактирования товара JoomShopping в админке, но я не нашел.

Проблема такая:

Спойлер
[свернуть]

В общем, получается бардак. Это я еще не говорю про то, что контент-менеджер может просто запутаться )))

Решил сделать то, что я уже делал на Simpla CMS. Работает на ура.
Парсим все имена файлов-картинок, которые уже есть. Удаляем расширения.
Записываем их в текстовый файл.
При добавлении любого нового фото - его имя записывается в этот файл (автоматом).
При добавлении фото - после того, как JoomShopping подставил индекс к имени, имя сравнивается с базой из этого файла, и, если оно уже было когда-то использовано, то к имени добавляется еще "1", снова проверяется, если было, то вместо "1" добавляется "2" и т.д. То есть, получается, что, когда бы (хоть сто лет назад) имя не было использовано, оно уже никогда использоваться не будет.

Все готово - код готов, но, как уже выше говорил - затык в функции file();
« Последнее редактирование: 24.05.2018, 17:24:28 от Ragnarok »
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
понятно. решение конечно ужос :) но дело не в этом. как впрочем и не в функции file(). вы неправильно понимаете как работает класс uploadfile. нельзя подменять название там, где вы хотите это делать. если хотите скачайте плагин https://nevigen.com/ru/addons/transliterator-nazvaniya-fajlov-dlya-tovara.html , там сделана подмена названия файла (название транслитерируется). можете взять этот плагин за основу и сделать свою логику подмены названия.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

ProtectYourSite

  • Живу я здесь
  • 2356
  • 135 / 4
  • Безопасность вебсайтов
ни Joomla ни jotcache здесь ни при чём, картинки кешируются в браузере. Вам надо настроить для картинок.
Попробуйте в .htaccess в папке administrator добавить такие строки:

Код
<FilesMatch ".(gif|jpg|jpeg|png|ico)$">
  Header unset Cache-Control
</FilesMatch>
*

Ragnarok

  • Захожу иногда
  • 64
  • 1 / 0
ни Joomla ни jotcache здесь ни при чём, картинки кешируются в браузере. Вам надо настроить для картинок.
Попробуйте в .htaccess в папке administrator добавить такие строки:

Код
<FilesMatch ".(gif|jpg|jpeg|png|ico)$">
  Header unset Cache-Control
</FilesMatch>

Не помогает, но, спасибо.

dmitry_stas, спасибо! Поизучаю плагин. Да, решение топорное, но работает )))
*

Ragnarok

  • Захожу иногда
  • 64
  • 1 / 0
А из плагина можно брать данные из файла, который находится в папке плагина? И писАть туда, соответственно. Я вот пишу (чтобы сразу затестить) в плагине:
Код
function onAfterSaveProduct(&$product){
file_put_contents('names.txt', '111\n', FILE_APPEND);
}
А оно не пишет после сохранения материала ))
Плагин - тот, на который ссылку давал dmitry_stas выше. Просто очистил там код.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
права на запись в папку? ну и полный путь надо указывать, от корня. __DIR__ . '/names.txt' если в этой же папке.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Ragnarok

  • Захожу иногда
  • 64
  • 1 / 0
права на запись в папку? ну и полный путь надо указывать, от корня. __DIR__ . '/names.txt' если в этой же папке.
Странная штука. Написал путь от корня сайта - не работает. А от корня сервера - работает (var/www/......) ))) Так и должно быть?
Спасибо большое, тезка! Я уже близок к тому, чтобы запилить свой "велосипед" и в Joomla ))))

А как получить имя картинки? И вообще, проверить, картинка загружена или что-то другое?
В контроллере три варианта:
$product->product_thumb_image
$product->product_name_image
$product->product_full_image

Это все три надо обработать, или можно как-то получить имя картинки исходное, без расширения? Еще до того, как имя делится на thumb, full
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Так и должно быть?
да
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не работает интернет-эквайринг на сайте

Автор Bommbba

Ответов: 2
Просмотров: 516
Последний ответ 10.03.2023, 14:57:06
от IgorGeneralov
В каком файле функция зависимости способа оплаиы от способ адоставки?

Автор Dolphin4ik_1

Ответов: 5
Просмотров: 410
Последний ответ 04.01.2021, 08:48:41
от kit2m2
Не работает регистрация

Автор Alex199466

Ответов: 25
Просмотров: 2546
Последний ответ 30.12.2020, 16:22:32
от sterveo
Создаю плагин Joomla для JoomShopping, не работает, что я не так делаю?

Автор Ragnarok

Ответов: 10
Просмотров: 496
Последний ответ 08.11.2020, 22:22:42
от draff
Joomla user Synchro с официального сайта разраба каким образом работает?

Автор dss

Ответов: 0
Просмотров: 415
Последний ответ 03.11.2020, 10:31:14
от dss