Добре дошъл/дошла, Гост. Моля, въведи своето потребителско име или се регистрирай.

Влез с потребителско име, парола и продължителност на сесията

Новини:

Автор Тема: Изтриване на неизползваните снимки на продукти  (Прочетена 4053 пъти)

Неактивен ex3mist

  • Загряващ
  • *
  • Публикации: 218
  • ex3m.bg
  • Репутация: +2
    • Онлайн магазин за спортни стоки и туристическа екипировка
Здравейте,

Искам да питам някой има ли решение на въпроса за това как да се изтрият снимките на продукти, които са изтрити от магазина? За съжаление, когато един продукт бъде изтрит, снимките му остават в папките /images/stories/virtuemart/product/ и /images/stories/virtuemart/product/resized/. Искам да разчистя малко директориите и да освободя място като изтрия тези снимки, които не са използвани, а проверяването на всяка поотделно дали е използвана или не не е решение, тъй като са няколко хиляди.
Намерих тази тема: newbielink:http://forum.virtuemart.net/index.php?topic=73290 [nonactive], но решението е за VM1, на мен ми трябва за VM2. Опитах описаното там, като промених пътя до папките в скрипта, но не работи.

Може ли някой да помогне?
ex3m.bg
allurebg.com

Неактивен Михаил Михов

  • Администратор
  • Мега Гуру
  • *
  • Публикации: 3915
  • @Mihail
  • Репутация: +80
    • MyWeb1
Re: Изтриване на неизползваните снимки на продукти
« Отговор #1 -: 30 Август, 2014, 00:48:41 »
0
Влизай  в меню медия на марта и трий снимките.
Внимавай да не махнеш някоя актуална снимка!
myweb1.eu // Български платежни методи за HikaShop

Неактивен ex3mist

  • Загряващ
  • *
  • Публикации: 218
  • ex3m.bg
  • Репутация: +2
    • Онлайн магазин за спортни стоки и туристическа екипировка
Re: Изтриване на неизползваните снимки на продукти
« Отговор #2 -: 24 Октомври, 2014, 08:38:57 »
0
Пак съм на тази вълна да търся начин да разчистя излишните файлове... Това да влезна в директорията и да избирам коя снимка да изтрия и коя не не става, много са - сигурно има към 10 000, че и повече. Не мога да ги проверявам една по една коя се използва и коя не. Нещо автоматизирано ми трябва...
ex3m.bg
allurebg.com


Неактивен ex3mist

  • Загряващ
  • *
  • Публикации: 218
  • ex3m.bg
  • Репутация: +2
    • Онлайн магазин за спортни стоки и туристическа екипировка
Re: Изтриване на неизползваните снимки на продукти
« Отговор #3 -: 28 Октомври, 2015, 10:05:45 »
+1
Най-после намерих решение на този въпрос! Посочено е, че работи за VM2 и VM3, аз го използвах само за VM2. Поствам го в случай, че и някой друг се интересува:

Създавате си файл (somefile.php например) със следния код:
Код: newbielink:javascript:void(0); [nonactive]
<?php
$type 
'product'// type of image: "product" or "category"
$imgPath $_SERVER['DOCUMENT_ROOT']."/images/stories/virtuemart/$type/"// default path to full-sized images
$resizedPath $_SERVER['DOCUMENT_ROOT']."/images/stories/virtuemart/$type/resized/"// default path to thumbnail images
set_time_limit(0); 
require 
$_SERVER['DOCUMENT_ROOT'].'/configuration.php'
$conf = new JConfig
$db = new mysqli($conf->host$conf->user$conf->password$conf->db);

$images array_slice(scandir($imgPath), 2);
$resized array_slice(scandir($resizedPath), 2);

$query="SELECT 
virtuemart_media_id, 
file_url, 
file_url_thumb 
FROM 
{$conf->dbprefix}virtuemart_medias
WHERE virtuemart_media_id IN(SELECT DISTINCT virtuemart_media_id FROM 
{$conf->dbprefix}virtuemart_{$type}_medias)";

$res $db->query($query);

if (!
$res) die("Cannot get database resource!");

while(
$r $res->fetch_array()){
    
$activeID[] = $r[0];

    
$p pathinfo($r[1]);
    
$activeImg[] = $p['basename'];

    
$p pathinfo($r[2]);
    
$activeResized[] = $p['basename'];
}       
if (!
is_null($activeImg)){
    
$notActiveImg array_diff($images$activeImg);   
};
if (!
is_null($activeResized)){
    
$notActiveResized array_diff($resized$activeResized);
}

if (!
is_null($activeID)){
    
$db->query("DELETE FROM {$conf->dbprefix}virtuemart_medias WHERE file_type='$type' AND virtuemart_media_id NOT IN(".implode(','$activeID).")");
}
$db->close();


$full=0;
$thumb=0;
if (!
is_null($activeImg)){

    foreach(
$notActiveImg as $i){
        if(
is_file($imgPath.$i) && $i != 'index.html'){
            if (
unlink($imgPath.$i)) $full++; else echo "Cannot delete $imgPath$i<br>";
        } else 
"File not exists $imgPath.$i<br>";
    }
}
if (!
is_null($activeResized)){

    foreach(
$notActiveResized as $i){
        if(
is_file($resizedPath.$i)  && $i != 'index.html'){
            if (
unlink($resizedPath.$i)) $thumb++; else echo "Cannot delete $imgPath$i<br>";
        } else 
"File not exists $imgPath.$i<br>";
    }
}
if (
$full>0) echo "Deleted $full full-sized images<br>";
if (
$thumb>0) echo "Deleted $thumb thumbnail images<br>";
if (
$full==&& $thumb==0) echo "Nothing to delete";
?>

Качвате го в папката на темплейта, който използвате: /templates/YOURTEMPLATE/somefile.php

И го активирате като зададете в браузъра този адрес: newbielink:http://yoursite.com/templates/yourtemplate/somefile.php [nonactive]

И получавате съобщение колко снимки и тумбнейли са били изтрити. При мен свърши работа, но все пак не забравяйте да направите бекъп преди това!
ex3m.bg
allurebg.com

Неактивен uaaaaau

  • Загряващ
  • *
  • Публикации: 167
  • О-о-о-о на бати!
  • Репутация: +5
Re: Изтриване на неизползваните снимки на продукти
« Отговор #4 -: 28 Октомври, 2015, 21:30:55 »
0
+
Полезно!!!

Неактивен sashomasho

  • Мега Гуру
  • *
  • Публикации: 2905
  • искам въртолет
  • Репутация: +6
Re: Изтриване на неизползваните снимки на продукти
« Отговор #5 -: 26 Януари, 2017, 23:18:23 »
0
ето решение за тези които им е нужна подобна функция http://shop.st42.fr/en/products/virtuemart-media-folder-clear.htm
Онлайн магазин за фототапети