
Подскажите пожалуйста, как здесь можно добавить поле — например, для строковое для описания адреса или поле для вставки ссылки
Вопросы по фотографиям

Подскажите пожалуйста, как здесь можно добавить поле — например, для строковое для описания адреса или поле для вставки ссылки

TOPg, очевидно ведь, что ваш совет не поможет. ТС нужно новое поле у фотографии.
ТС, такого в движке не предусмотрено. Добавлять поля у фотографий нельзя.
Почему нельзя прям в описании писать? Зачем еще поле?
Source: Link
© Link
@ Link
Подскажите пожалуйста, как здесь можно добавить поле — например, для строковое для описания адреса или поле для вставки ссылки
всё это актуально для instantcns 2.18, в других версиях может отличаться но смысл, будет понятен, обновление затрёт
sql в бд
ALTER TABLE `cms_photos` ADD COLUMN `address` VARCHAR(500) DEFAULT NULL COMMENT 'Адрес/местоположение съемки' AFTER `camera`, ADD COLUMN `address_url` VARCHAR(1000) DEFAULT NULL COMMENT 'URL ссылка на карту/адрес' AFTER `address`, ADD KEY `address` (`address`(255));
в файле system/controllers/photos/actions/edit.php после
$photo_types = $this->request->get('type', []);
вставить
$photo_addresses = $this->request->get('address', []); $photo_address_urls = $this->request->get('address_url', []);
далее, в этом же файле
$_photo = [ 'content_source' => (...), 'content' => (...), тут ];
вместо «тут» добавить
в файле system/controllers/photos/actions/upload.php
после
$photo_types = $this->request->get('type', []); }
вставить
$photo_addresses = $this->request->get('address', []); $photo_address_urls = $this->request->get('address_url', []);
и ниже
$_photo = [ 'date_pub' => null, 'album_id' => $this->album['id'], 'title' => strip_tags($photo_titles[$photo_id] ? $photo_titles[$photo_id] : sprintf(LANG_PHOTOS_PHOTO_UNTITLED, $photo_id)), 'content_source' => ($photo_contents[$photo_id] ? cmsEventsManager::hook('html_filter', [ 'text' => $photo_contents[$photo_id], 'is_process_callback' => false, 'typograph_id' => $this->options['typograph_id'], 'is_auto_br' => false ]) : null), 'content' => ($photo_contents[$photo_id] ? cmsEventsManager::hook('html_filter', [ 'text' => $photo_contents[$photo_id], 'typograph_id' => $this->options['typograph_id'], 'is_auto_br' => !$editor_params['editor'] ? true : null ]) : null), тут 'ordering' => $last_order ];
вместо «тут» вставить
после строк
$result['id'] = $this->model->addPhoto([ 'album_id' => $this->album['id'], 'user_id' => $this->cms_user->id, 'image' => $result['paths'], 'date_photo' => $date_photo, 'camera' => $camera,
добавить:
'address' => null, 'address_url' => null,
в файле templates/default/controllers/photos/widget.tpl.php
после блока
<?php if($types){ ?> <div class="photo_type"> <?php echo html_select('type['.$photo['id'].']', $types, $photo['type']); ?> </div> <?php } ?>
вставить
<div class="photo_address"> <?php echo html_input('text', 'address['.$photo['id'].']', (isset($photo['address']) ? $photo['address'] : ''), array('placeholder' => LANG_PHOTOS_ADDRESS, 'maxlength' => 500)); ?> </div> <div class="photo_address_url"> <?php echo html_input('text', 'address_url['.$photo['id'].']', (isset($photo['address_url']) ? $photo['address_url'] : ''), array('placeholder' => LANG_PHOTOS_VIEW_ON_MAP, 'maxlength' => 1000)); ?> </div>
и для modern в templates/modern/controllers/photos/widget.tpl.php
<?php if($types){ ?> <div class="photo_type form-group"> <?php echo html_select('type['.$photo['id'].']', $types, $photo['type']); ?> </div> <?php } ?>
вставить
<div class="photo_address form-group"> <?php echo html_input('text', 'address['.$photo['id'].']', (isset($photo['address']) ? $photo['address'] : ''), array('placeholder' => LANG_PHOTOS_ADDRESS, 'maxlength' => 500, 'class' => 'form-control')); ?> </div> <div class="photo_address_url form-group"> <?php echo html_input('text', 'address_url['.$photo['id'].']', (isset($photo['address_url']) ? $photo['address_url'] : ''), array('placeholder' => LANG_PHOTOS_VIEW_ON_MAP, 'maxlength' => 1000, 'class' => 'form-control')); ?> </div>
после, в блоке <div class=«preview_template block row» style=«display:none»>
<div class="form-group photo_content"> <textarea id="" class="textarea form-control" name=""></textarea> </div> <div class="form-group photo_privacy"> <?php echo html_select('', array(LANG_PRIVACY_PUBLIC, LANG_PRIVACY_PRIVATE, LANG_PHOTOS_ACCESS_BY_LINK), (isset($album['is_private']) ? $album['is_private'] : 0)); ?> </div> <?php if($types){ ?> <div class="form-group photo_type"> <?php echo html_select('', $types); ?> </div> <?php } ?>
добавить
<div class="form-group photo_address"> <?php echo html_input('text', '', '', array('placeholder' => LANG_PHOTOS_ADDRESS, 'maxlength' => 500, 'class' => 'form-control')); ?> </div> <div class="form-group photo_address_url"> <?php echo html_input('text', '', '', array('placeholder' => LANG_PHOTOS_VIEW_ON_MAP, 'maxlength' => 1000, 'class' => 'form-control')); ?> </div>
в файл templates/default/controllers/photos/view.tpl.php после
<dl class="photo_details">
вставить
<?php if (!empty($photo['address']) || !empty($photo['address_url'])) { ?> <div class="photo-address"> <h3><?php echo LANG_PHOTOS_ADDRESS; ?></h3> <?php if (!empty($photo['address'])) { ?> <p><?php echo html($photo['address']); ?></p> <?php } ?> <?php if (!empty($photo['address_url'])) { ?> <p><a href="<?php echo html($photo['address_url']); ?>" target="_blank" rel="noopener"><?php echo LANG_PHOTOS_VIEW_ON_MAP; ?></a></p> <?php } ?> </div> <?php } ?>
в файл templates/modern/controllers/photos/view.tpl.php, после
<dl class="photo_details bg-light border-top px-3 pb-3">
вставить
<?php if (!empty($photo['address']) || !empty($photo['address_url'])) { ?> <div class="photo-address bg-light px-3 pt-3 pb-2"> <h5><?php echo LANG_PHOTOS_ADDRESS; ?></h5> <?php if (!empty($photo['address'])) { ?> <p class="mb-1"><?php echo html($photo['address']); ?></p> <?php } ?> <?php if (!empty($photo['address_url'])) { ?> <p class="mb-0"><a href="<?php echo html($photo['address_url']); ?>" target="_blank" rel="noopener"><?php echo LANG_PHOTOS_VIEW_ON_MAP; ?></a></p> <?php } ?> </div> <?php } ?>
в файл system/languages/ru/controllers/photos/photos.php
define('LANG_PHOTOS_SORT_ORDERTO', 'Направление сортировки');
вставить
define('LANG_PHOTOS_ADDRESS', 'Местоположение'); define('LANG_PHOTOS_VIEW_ON_MAP', 'Посмотреть на карте');
в файлы templates/default/js/photos.js и templates/modern/js/photos.js
после
$('.photo_type select', preview_block).attr('name', 'type['+result.id+']');
вставить
$('.photo_address input', preview_block).attr('name', 'address['+result.id+']'); $('.photo_address_url input', preview_block).attr('name', 'address_url['+result.id+']');
могу скинуть патчем если гит на проекте есть)
Ну пипец… вы бы уж тогда компонент новый написали вместо photos.
ideasdigger 😄🥳 +++
Ну пипец… вы бы уж тогда компонент новый написали вместо photos.
а не помешал бы, фотоальбом вообще никакой
а не помешал бы, фотоальбом вообще никакой
А какой хотели бы? Создайте тему, соберите хотелки. Может кто и реализует.
Подскажите пожалуйста, как здесь можно добавить поле — например, для строковое для описания адреса или поле для вставки ссылки RUSLEGIONER всё это актуально для instantcns 2.
Ох, спасибо! Какая работа огромная проведена!
Если можно скинуть — скиньте, переживаю что при редактировании боюсь где-то сделать ошибку.
а не помешал бы, фотоальбом вообще никакой TOPg А какой хотели бы? Создайте тему, соберите хотелки. Может кто и реализует.
вот идеальный пример, нормального фотоальбома foto.mos.ru/photo
а не помешал бы, фотоальбом вообще никакой TOPg А какой хотели бы? Создайте тему, соберите хотелки. Может кто и реализует.Lora вот идеальный пример, нормального фотоальбома foto.mos.ru/photo
Определенно можно брать за эталон как список вывода фотоальбомов, так и вывод фото в фотоальбоме, так и вывод фото на отдельной странице:)
TOPg, отличия в функционале практически нет. Единственное, что заметил, это возможность скачивать и делиться фото из списка. А остальное тоже самое. Стили другие. Слайдер другой. Так это дело индивидуальное. У кого какой шаблон. Кому что нравится.
TOPg, отличия в функционале практически нет. Единственное, что заметил, это возможность скачивать и делиться фото из списка. А остальное тоже самое. Стили другие. Слайдер другой.
таки да, нормальные стили и нормальный слайдер
эталон как список вывода фотоальбомов, так и вывод фото в фотоальбоме, так и вывод фото на отдельной странице:)
То что вы описали это LightGallery.
Как то так?
TOPg Ваш пример альбома, сдох.