@Maila

Yii2-advanced Как подключить одновременное отображение галереи в backend и fronted?

Сайт с блогом пока находиться на локальном сервере. В backend -картинки загружаются нормально, во fronted отображаются одновременно только из imperavi-vidget

Блог подключён как расширение в vendor. Папки разделены так:
5a04690fce900852492086.jpeg

site\yii2\common\config\bootstrap.php
<?php
Yii::setAlias('@common', dirname(__DIR__));
Yii::setAlias('@frontend', dirname(dirname(__DIR__)) . '/frontend');
Yii::setAlias('@backend', dirname(dirname(__DIR__)) . '/backend');
Yii::setAlias('@console', dirname(dirname(__DIR__)) . '/console');
Yii::setAlias('@images', dirname(dirname(dirname(__DIR__))) . '/public_html/uploads/images');
Yii::setAlias('@upload', 'http://site.com/uploads');
/*Yii::setAlias('@uploadPath', '@frontend/web/uploads');*/
Yii::setAlias('@upload', 'http://site.com/uploads');
/*http://site.com/uploads/images/blog*/
Yii::setAlias('@uploadPath','http://site.com/uploads/images/Blog');


Папки frontend/web/uploads у меня нет, чтобы добавить туда
<img src="http://site.com/upload/images/1.jpg" />
Есть общая 'public_html' и в ней папка 'uploads', куда сейчас загружаются файлы из блога в backend. Каким образом можно правильно прописать путь загрузки, чтобы картинки после загрузки в админке сразу отображались и во fronted?
5a04699fa5bf0945836346.jpeg

И где в представлениях нужно прописать:
Html::img('@upload' . $one->imageUrl)
Если в fronted/one.php добавить такой код:

<?php 
 $fotorama = \metalguardian\fotorama\Fotorama::begin(
        [
            'options' => [
                'loop' => true,
                'hash' => true,
                'ratio' => 800/600,
            ],
            'spinner' => [
                'lines' => 20,
            ],
            'tagName' => 'span',
            'useHtmlData' => false,
            'htmlOptions' => [
                'class' => 'custom-class',
                'id' => 'custom-id',
            ],
        ]
    ); 
    foreach ($model->images as $one) {
     echo  Html::img('@upload' . $one->imageUrl),(['alt'=>$one->alt]);
       } 
       $fotorama->end(); ?>

то в дебаге такая ошибка:
5a0480104827f988025191.jpeg

а если такой код, то выводятся картинки с этих адресов, где последний http-это адрес загруженной в посте блога (admin.site.com/blog/blog/view?id=5) картинки
<?php 
   echo \metalguardian\fotorama\Fotorama::widget(
        [
            'items' => [
                ['img' => 'http://s.fotorama.io/1.jpg', 'id' => 'id-one',],
                ['img' => 'http://s.fotorama.io/2.jpg',],
                ['img' => 'http://s.fotorama.io/3.jpg',],
                ['img' => 'http://s.fotorama.io/4.jpg',],
                ['img' =>  'http://site.com/uploads/images/Blog/1510225349_sVHPVH.jpg',],

            ],   
            'options' => [
                'nav' => 'thumbs',
            ]
        ]
    ); 
    ?>

Но как сделать, чтобы во fronted в постах автоматически отображались загруженные именно из backand, а в blog/index и site/index- уменьшённые в размерах или как превью? Не добавлять же их адреса каждый раз в код..
  • Вопрос задан
  • 257 просмотров
Пригласить эксперта
Ответы на вопрос 1
Maksclub
@Maksclub
maksfedorov.ru
Чтобы не заморачиваться с путями, когда админка у вас по адресу /admin,
то можно просто создать поддомен (вообще для всей статики)
и тогда картинки всегда будут static.site.com/images/blog/....

всегда так и делаю:

5a0495beb2be7265416774.png

на папку static потом травлю сервер с поддоменом static и дял бекенда и фронтенда всегда один и то же путь до картинки

+ бонус — можно выносить в любой момент картинки на др сервер или CDN
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы