RU/EN

Блог

автор:

ibednov

дата:

16-07-2017

просмотров

106

рейтинг

0

Хак_3. "Загружаемая галерея изображений" настройка к шаблону "Game_guru"

Данный хак бы написан, специально к шаблону игрового портала "Game_guru", для корректного вывода галереи изображений.
Хак актуален на следующих версиях DLE ~9.7- 11.3.

Техническое задание:
при создании дополнительного поля "Загружаемая галерея изображений" и выводу в файлах шаблона (shortstory и fullstory), галерея не работа так как необходимо созданному макету. Стало необходимым подогнать стили галереи заложенные в "движок" и добавить к ним определенные, необходимые нам классы.

Теория:
- стандартно движок выводит галерею следующим образом:
ЕСЛИ (есть уменьшенная копия) ТОГДА выводит:
    <ul>
        <li><a href="ссылка_изображения_1"><img src="ссылка_изображения_1" alt=""></a></li> -1
        <li><a href="ссылка_изображения_2"><img src="ссылка_изображения_2" alt=""></a></li> -2
        <li><a href="ссылка_изображения_3"><img src="ссылка_изображения_3" alt=""></a></li> -2
        -----------------------------------------------------------------------------------
        <li><a href="ссылка_изображения_3"><img src="ссылка_изображения_3" alt=""></a></li> -N
    </ul>
    //где N - колличество изображений в галерее
в противном случае
(ЕСЛИ НЕТ [уменьшенной копии]) ТОГДА выводит:
    <ul>
        <li><img src="ссылка_изображения_1" alt=""></li> -1
        <li><img src="ссылка_изображения_2" alt=""></li> -2
        <li><img src="ссылка_изображения_3" alt=""></li> -3
        ---------------------------------------------------
        <li><img src="ссылка_изображения_3" alt=""></li> -N
    </ul>

- Со стандартным выводом галереи разобрались, а теперь давай посмотрим как нам необходимо чтобы код выглядел.
Примерно так:
ЕСЛИ (есть уменьшенная копия) ТОГДА выводит:
    <ul class="slides xfieldimagegallery название_доп.поля>">
        <li>
            <div class="itB_short_image-slider"><img src="ссылка_изображения_1" alt=""></div>
        </li>
    </ul>
    <ul class="slides xfieldimagegallery ">
        <li>
            <div class="itB_short_image-slider"><img src="ссылка_изображения_2" alt=""></div>
        </li>
    </ul>
    <ul class="slides xfieldimagegallery ">
        <li>
            <div class="itB_short_image-slider"><img src="ссылка_изображения_3" alt=""></div>
        </li>
    </ul>
    <ul class="slides xfieldimagegallery ">
        <li>
            <div class="itB_short_image-slider"><img src="ссылка_изображения_4" alt=""></div>
        </li>
    </ul>

в противном случае
(ЕСЛИ НЕТ [уменьшенной копии]) ТОГДА выводит:
    <ul class="slides xfieldimagegallery название_доп.поля>">
        <li>
            <div class="itB_short_image-slider"><img src="ссылка_изображения_1" alt=""></div>
        </li>
    </ul>
    <ul class="slides xfieldimagegallery ">
        <li>
            <div class="itB_short_image-slider"><img src="ссылка_изображения_2" alt=""></div>
        </li>
    </ul>
    <ul class="slides xfieldimagegallery ">
        <li>
            <div class="itB_short_image-slider"><img src="ссылка_изображения_3" alt=""></div>
        </li>
    </ul>
    <ul class="slides xfieldimagegallery ">
        <li>
            <div class="itB_short_image-slider"><img src="ссылка_изображения_4" alt=""></div>
        </li>
    </ul>
- Сразу скажу в измененной версии и при (ЕСЛИ ЕСТЬ) и при (ЕСЛИ НЕТ) выводится одинаковый код без <a></a>, т.к. в шаблоне не должно быть <a>.
- С теорией закончено, можно переходить к установке.

Установка:
1.0. Открываем файл "show.short.php" находящийся в папке "/engine/modules" вашего движка.
1.1. Ищем следующий код (~627 строка):
if($thumb_url) {
                        $gallery_image[] = "<li><a href=\"$img_url\" onclick=\"return hs.expand(this, { slideshowGroup: 'xf_{$row['id']}_{$value[0]}' })\" target=\"_blank\"><img src=\"{$thumb_url}\" alt=\"\" /></a></li>";
                    } else $gallery_image[] = "<li><img src=\"{$img_url}\" alt=\"\" /></li>";
                
                }
                
                $xfieldsdata[$value[0]] = "<ul class=\"xfieldimagegallery {$value[0]}\">".implode($gallery_image)."</ul>";
                $uniq_id = "xf_{$row['id']}_{$value[0]}";
                $onload_scripts[$uniq_id] = "hs.addSlideshow({slideshowGroup: '{$uniq_id}', interval: 4000, repeat: false, useControls: true, fixedControls: 'fit', overlayOptions: { opacity: .75, position: 'bottom center', hideonmouseout: true } });";
                
            }

1.2. Меняем на:
if($thumb_url) {
                        $gallery_image[] = "<li><div class=\"itB_short_image-slider\"><a href=\"$img_url\" onclick=\"return hs.expand(this, { slideshowGroup: 'xf_{$row['id']}_{$value[0]}' })\" target=\"_blank\"><img class=\"img-responsive\" src=\"{$thumb_url}\" alt=\"\" /></a></div></li>";
                    } else $gallery_image[] = "<li><div class=\"itB_short_image-slider\"><img class=\"img-responsive\" src=\"{$img_url}\" alt=\"\" /></div></li>";
            
                }
            
                $xfieldsdata[$value[0]] = "<ul class=\"slides xfieldimagegallery {$value[0]}\">".implode($gallery_image)."</ul>";
                $uniq_id = "xf_{$row['id']}_{$value[0]}";
                $onload_scripts[$uniq_id] = "hs.addSlideshow({slideshowGroup: '{$uniq_id}', interval: 4000, repeat: false, useControls: true, fixedControls: 'fit', overlayOptions: { opacity: .75, position: 'bottom center', hideonmouseout: true } });";
            
            }

Далее.
2.0. Открыть файл show.full.php.
2.1. Найти (~1300 строка)
if($thumb_url) {
                $gallery_image[] = "<li><a href=\"$img_url\" onclick=\"return hs.expand(this, { slideshowGroup: 'xf_{$related['id']}_{$value[0]}' })\" target=\"_blank\"><img src=\"{$thumb_url}\" alt=\"\" /></a></li>";
            } else $gallery_image[] = "<li><img src=\"{$img_url}\" alt=\"\" /></li>";

        }

        $xfieldsdata[$value[0]] = "<ul class=\"xfieldimagegallery {$value[0]}\">".implode($gallery_image)."</ul>";
        $uniq_id = "xf_{$related['id']}_{$value[0]}";
        $onload_scripts[$uniq_id] = "hs.addSlideshow({slideshowGroup: '{$uniq_id}', interval: 4000, repeat: false, useControls: true, fixedControls: 'fit', overlayOptions: { opacity: .75, position: 'bottom center', hideonmouseout: true } });";

    }

2.2. Заменить на:
    if($thumb_url) {
                        $gallery_image[] = "<li><div class=\"itB_short_image-slider\"><a href=\"$img_url\" onclick=\"return hs.expand(this, { slideshowGroup: 'xf_{$row['id']}_{$value[0]}' })\" target=\"_blank\"><img class=\"img-responsive\" src=\"{$thumb_url}\" alt=\"\" /></a></div></li>";
                    } else $gallery_image[] = "<li><div class=\"itB_short_image-slider\"><img class=\"img-responsive\" src=\"{$img_url}\" alt=\"\" /></div></li>";
            
                }
            
                $xfieldsdata[$value[0]] = "<ul class=\"slides xfieldimagegallery {$value[0]}\">".implode($gallery_image)."</ul>";
                $uniq_id = "xf_{$row['id']}_{$value[0]}";
                $onload_scripts[$uniq_id] = "hs.addSlideshow({slideshowGroup: '{$uniq_id}', interval: 4000, repeat: false, useControls: true, fixedControls: 'fit', overlayOptions: { opacity: .75, position: 'bottom center', hideonmouseout: true } });";
            
            }

2.3. Найти (~1678 строка):
if($thumb_url) {
                            $gallery_image[] = "<li><a href=\"$img_url\" onclick=\"return hs.expand(this, { slideshowGroup: 'xf_{$row['id']}_{$value[0]}' })\" target=\"_blank\"><img src=\"{$thumb_url}\" alt=\"\" /></a></li>";
                        } else $gallery_image[] = "<li><img src=\"{$img_url}\" alt=\"\" /></li>";

                    }

                    $xfieldsdata[$value[0]] = "<ul class=\"xfieldimagegallery {$value[0]}\">".implode($gallery_image)."</ul>";
                    $uniq_id = "xf_{$row['id']}_{$value[0]}";
                    $onload_scripts[$uniq_id] = "hs.addSlideshow({slideshowGroup: '{$uniq_id}', interval: 4000, repeat: false, useControls: true, fixedControls: 'fit', overlayOptions: { opacity: .75, position: 'bottom center', hideonmouseout: true } });";

                }

2.4. Заменить на:
if($thumb_url) {
                        $gallery_image[] = "<li><div class=\"itB_short_image-slider\"><a href=\"$img_url\" onclick=\"return hs.expand(this, { slideshowGroup: 'xf_{$row['id']}_{$value[0]}' })\" target=\"_blank\"><img class=\"img-responsive\" src=\"{$thumb_url}\" alt=\"\" /></a></div></li>";
                    } else $gallery_image[] = "<li><div class=\"itB_short_image-slider\"><img class=\"img-responsive\" src=\"{$img_url}\" alt=\"\" /></div></li>";
            
                }
            
                $xfieldsdata[$value[0]] = "<ul class=\"slides xfieldimagegallery {$value[0]}\">".implode($gallery_image)."</ul>";
                $uniq_id = "xf_{$row['id']}_{$value[0]}";
                $onload_scripts[$uniq_id] = "hs.addSlideshow({slideshowGroup: '{$uniq_id}', interval: 4000, repeat: false, useControls: true, fixedControls: 'fit', overlayOptions: { opacity: .75, position: 'bottom center', hideonmouseout: true } });";
            
            }


Готово.

Это всего лишь реклама :)