Алиас товара в названии изображения

brus46

Постоялец
Регистрация
3 Мар 2013
Сообщения
93
Реакции
17
Как заставить joomshopping подставить алиас товара для названия изображения товара при загрузке?
 
Последнее редактирование:
а смысл ?
 
нужно для продвижения
 
просили реализовать, а уж зачем - не знаю
 
1. Пользуюсь Для просмотра ссылки Войди или Зарегистрируйся
Забыл, а какие ALTы картинок joomshopping делает по-дефолту ?

2. Сделать запрос к базе с апдейтом поля name в таблице jshopping_products_images

3. Поправить контроллер\модель
administrator/components/com_jshopping/controllers/products.php:
administrator/components/com_jshopping/models/products.php:


вот такие вижу 3 варианта.
 
Последнее редактирование:
альты - название на русском

3. Поправить контроллер\модель
administrator/components/com_jshopping/controllers/products.php:
administrator/components/com_jshopping/models/products.php:

я примерно понимаю, что копать надо в эту сторону, но у меня с MVC пока сложно все, как бы конкретнее указать, что надо менять
 
в той модельке есть
PHP:
 function addToProductImage($product_id, $name_image, $image_descr) {
        $image = JSFactory::getTable('image', 'jshop');
        $image->set("image_id", 0);
        $image->set("product_id", $product_id);
        $image->set("image_name", $name_image);
        $image->set("name", $image_descr);
        $image->set("ordering", $image->getNextOrder("product_id='".intval($product_id)."'"));
        $image->store();
    }

Я не знаю есть на момент выполнения в базе запись о продукте, если есть то как-то так:

PHP:
 function addToProductImage($product_id, $name_image, $image_descr) {
        $image = JSFactory::getTable('image', 'jshop');
        $image->set("image_id", 0);
        $image->set("product_id", $product_id);
        $image->set("image_name", $name_image);

$query  = "select `alias_ru-RU` from `#__jshopping_products` where `product_id` = '".$db->escape($product_id)."'";
$db->setQuery($query);
$image_descr = $db->loadResult();

        $image->set("name", $image_descr);
        $image->set("ordering", $image->getNextOrder("product_id='".intval($product_id)."'"));
        $image->store();
    }
 
Последнее редактирование:
Только немного не так:
PHP:
function addToProductImage($product_id, $name_image, $image_descr) {
        $image = JSFactory::getTable('image', 'jshop');
        $image->set("image_id", 0);
        $image->set("product_id", $product_id);

$db = $this->getDbo(); 
$query  = "SELECT `alias_ru-RU` FROM #__jshopping_products WHERE product_id = '".$image->set("product_id", $product_id)."'";
$db->setQuery($query);
$name_image = $db->loadResult(); 

        $image->set("image_name", $name_image);
        $image->set("name", $image_descr);
        $image->set("ordering", $image->getNextOrder("product_id='".intval($product_id)."'"));
        $image->store();
    }

но это только часть операции, которая формирует путь к изображению.
Еще надо переименовывать сами картинки при загрузке, сейчас они загружаются со старыми именами и с этими изменениями кода джумшоппинг их соответственно не видит


в итоге все получилось гораздо проще:
PHP:
function uploadImages($product, $product_id, $post){
        $jshopConfig = JSFactory::getConfig();
        $dispatcher = JDispatcher::getInstance();
    
        for($i=0; $i<$jshopConfig->product_image_upload_count; $i++){
         
            $alias_tmp = 'alias_ru-RU';
            $alias = $product->$alias_tmp;

            $upload = new UploadFile($_FILES['product_image_'.$i]);
            $upload->setAllowFile(array('jpeg','jpg','gif','png'));
            $upload->setDir($jshopConfig->image_product_path);
            $upload->setFileNameMd5(0);
            $upload->setFilterName(1);
         
            $path_info = pathinfo ($upload->name);
            $extension = $path_info['extension'];
            $upload->name = $alias . '.' . $extension;

добавил 5 строк в for и все заработало, остальные функции не трогал
 
Последнее редактирование:
BIO поставь и поэксперементируй. Там есть настройки по alt images.
 
Назад
Сверху