Категории |
Добавляем ALT описание для картинок в карточке товараЭто не готовое расширение, точнее не из коробки, но полезное ;) $mo_query = "select image_id, image_nr, image_name from " . TABLE_PRODUCTS_IMAGES . " where products_id = '" . $products_id ."' ORDER BY image_nr"; и меняем на $mo_query = "select image_id, image_nr, image_name, text from " . TABLE_PRODUCTS_IMAGES . " where products_id = '" . $products_id ."' ORDER BY image_nr"; мы просто добавили , text после image_name. В text как раз и будет храниться описания картинок. Далее, сохраняем и закрываем файл. Он нам больше не нужен. 3 Правка класса categories Открываем файл admin\includes\classes\categories.php ищем строку rename(dir_path('images_original').$pIMG->filename, dir_path('images_original').$products_image_name); НИЖЕ добавляем $img_text = $_POST['mo_text_'.$img]; Далее ищем ниже строчку ~557 строка. create_MO_PICS ($products_image_name, $img, $action, $products_id, $products_data); и меняем на create_MO_PICS ($products_image_name, $img, $action, $products_id, $products_data, $img_text); мы тут в метод create_MO_PICS, передаем новый аргумент $img_text, в котором, собственно, и лежит наш текст Ищем строку $mo_field_name='mo_pics_get_file_image_'.$img; НИЖЕ добавляем $img_text = $_POST['mo_text_'.$img]; Ищем строку create_MO_PICS ($mo_products_image_name, $img, $action, $products_id, $products_data); меняем ее на create_MO_PICS ($mo_products_image_name, $img, $action, $products_id, $products_data, $img_text); Теперь поправим метод create_MO_PICS. Почти в самом низу файла есть строка function create_MO_PICS ($mo_products_image_name, $mo_image_number, $performed_action, $products_id, &$products_data){ Ее нужно заменить на function create_MO_PICS ($mo_products_image_name, $mo_image_number, $performed_action, $products_id, &$products_data, $img_text){ Ниже, ищем строку 'image_name' => os_db_prepare_input($mo_products_image_name)); И заменяем ее на 'image_name' => os_db_prepare_input($mo_products_image_name), 'text' => os_db_prepare_input($img_text)); Тут мы как раз записываем в БД наш текст. Далее, сохраняем и закрываем файл. Он нам больше не нужен. На этом этапе работа с админкой закончена. Мы вывели поле textarea, сделали запись и вывод текста картинки в цикле. 4 Выполняем запрос в БД Открываем свой phpMyAdmin (PMA) и выполняем ALTER TABLE `os_products_images` ADD `text` text default ''; Если вы ставили свой префикс таблиц, то меняйте os_ на свой. Мы добавляем в таблицу os_products_images новое поле text, с типом поля text. Можно было конечно ограничить с помощью varchar до нужного количества символов, например varchar(255), но я делать этого не стал. К описанию для картинок не стоит подходить фанатично и пихать туда все подряд! Теперь надо вывести само описание в карточке товара! Приступим 5 Предопределяем вывод описания картинок На втором шаге мы правили функцию os_get_products_mo_images, туда добавляли text в запрос. Получение результата из этой функции так же происходит в файле modules\product_info.php Этот файл отвечает за вывод карточки товара. Открываем этот файл и ищем строку if (!file_exists(dir_path('images_popup').$img['image_name'])) $products_mo_popup_link = ''; Ниже добавляем if (!empty($img['text'])) $image_text = $img['text']; else $image_text = $product->data['products_name']; Простая проверка. Если не заполнили описание картинки (т.е. если пуст $img['text']), то подставляем название товара. Ищем строку 'PRODUCTS_MO_IMAGE' => http_path('images_info') . $img['image_name'], Ниже добавляем строку 'PRODUCTS_MO_TEXT' => $image_text, Теперь PRODUCTS_MO_TEXT можно использовать в плагинах (если такие используются), чтобы выводить описание картинки. Теперь строку 'PRODUCTS_MO_IMAGE_BLOCK' => '<a href="'.$products_mo_popup_link.'" title="'.$product->data['products_name'].'" class="zoom" rel="gallery-plants" target="_blank"><img src="'.http_path('images_info') . $img['image_name'].'" alt="'.$product->data['products_name'].'" /><br /><img src="'._HTTP_THEMES_C.'img/zoom.gif" alt="zoom" border="0" width="16" height="12" /></a>', меняем на 'PRODUCTS_MO_IMAGE_BLOCK' => '<a href="'.$products_mo_popup_link.'" title="'.$image_text.'" class="zoom" rel="gallery-plants" target="_blank"><img src="'.http_path('images_info') . $img['image_name'].'" alt="'.$image_text.'" /><br /><img src="'._HTTP_THEMES_C.'img/zoom.gif" alt="zoom" border="0" width="16" height="12" /></a>', Тут мы сменили в alt и в ссылке название товара на наше описание. На этом все. Если есть вопросы или проблемы, пишем в комментах. Надеюсь кому-то будет полезно. UPD. Сделал проверку на заполненность описания картинки. Если описание пусто, то выводим название товара. Вообще не обязательно делать как ALT описание. Можно выводить отдельно под картинкой, если используется плагин. Т.е. если нужно подробно описать каждую картинку товара, то этот хак подойдет идеально. Источник Результат будет таков а как на счет мультиязычности? хз. я не думал об этом. Что-то у меня не вышло.....В админке поля появились...можно писать текст...все без ошибок, в БД альт добавился, но на странице товара ALT не меняется (остается тем же что и название товара) ((( В чем может быть проблема? может кэш включен? /modules/product_info.php также отвечает за вывод альтов к картинке так? 'PRODUCTS_MO_IMAGE_BLOCK' => '<a href="'.$products_mo_popup_link.'" title="'.$image_text.'" class="zoom" rel="gallery-plants" target="_blank"><img src="'.http_path('images_info') . $img['image_name'].'" alt="'.$image_text.'" /><br /><img src="'._HTTP_THEMES_C.'img/zoom.gif" alt="zoom" border="0" width="16" height="12" /></a>', удалюalt="'.$image_text.'" то альты выводится не будут так??? Не должны по крайней мере...))) А если будут выводится то у меня руки из Ж ((( Фигня какая-то...либо я не там копаюсь...Кеш отключен я его еще не включал так как доработок куча... а точно выводится именно alt? Плагинов нет, Альт и тайтл (на ссылке) выводятся в данном случае название товара, Мне кажется дело в самом шаблоне у меня шаблон shopos-paradise_new... видимо там вывод не такой какой нужно. Проблема была все-таки в выводе картинок в самом шаблоне парадайс. Если у кого-то такая проблема то я переписал так. <!-- more images --> {if $PRODUCTS_MO_IMAGES} '<table width="100%" border="0"> <tr> {foreach name=mo_pic item=img_values from=$mo_img} <td align="center" width="50%"> {$img_values.PRODUCTS_MO_IMAGE_BLOCK} </td> {if $smarty.foreach.mo_pic.iteration % 3 == 0 && !$smarty.foreach.mo_pic.last} </tr><tr> {/if} {/foreach} </tr> {/if} {$PRODUCTS_MO_IMAGE_BLOCK} </table> <br /> <!-- more images eof --> {if $PRODUCTS_IMAGE_LINK!=''} <a href="{$PRODUCTS_IMAGE_LINK}" onclick="window.open(this.href); return false;">{$PRODUCTS_TEXT_ZOOM}</a><br /> {/if} вывод картинок по 3 штуки в рядок а не столбцом. Стырено с default и немножко переделано. Проблема была все-таки в выводе картинок в самом шаблоне парадайс. Если у кого-то такая проблема то я переписал так. <!-- more images --> {if $PRODUCTS_MO_IMAGES} '<table width="100%" border="0"> <tr> {foreach name=mo_pic item=img_values from=$mo_img} <td align="center" width="50%"> {$img_values.PRODUCTS_MO_IMAGE_BLOCK} </td> {if $smarty.foreach.mo_pic.iteration % 3 == 0 && !$smarty.foreach.mo_pic.last} </tr><tr> {/if} {/foreach} </tr> {/if} {$PRODUCTS_MO_IMAGE_BLOCK} </table> <br /> <!-- more images eof --> {if $PRODUCTS_IMAGE_LINK!=''} <a href="{$PRODUCTS_IMAGE_LINK}" onclick="window.open(this.href); return false;">{$PRODUCTS_TEXT_ZOOM}</a><br /> {/if} вывод картинок по 3 штуки в рядок а не столбцом. Стырено с default и немножко переделано. а у меня не заработало на шаблоне paradise, не выводиться описание картинок да и не сохраняется в админке/категория товаров/ картинки/описание. Строка описание товара появилась, а вводимое значение не сохраняется в базе видимо. Проблема вывода описания осталась, сайт http://babymgorka.by/ Помогите плиз!!!! не выводиться описание картинок да и не сохраняется в админке/категория товаров/ картинки/описание. Строка описание товара появилась, а вводимое значение не сохраняется значит установили хак не правильно. по каждому пункту пройдитесь. не выводиться описание картинок да и не сохраняется в админке/категория товаров/ картинки/описание. Строка описание товара появилась, а вводимое значение не сохраняется значит установили хак не правильно. по каждому пункту пройдитесь. Сделал все поэтапно, в базу не сохранялось из-за плагина загрузки картинок, я его отключил, надпись выводится при наведении на картинку, а почему бы не сделать так, чтоб под картинкой прописать? |
|