❓Вопрос от пользователя
Psalm Cannot find referenced variable $articles in global scope в шаблоне подключенном через include
Работаю над добавлением Psalm в проект. В нем есть метод-функция для подключения php файла-шаблона:
public function include(string $template, array $args = array(), bool $echo = true)
{
include $this->templates_path . $template;
}
С ее помощью подключается шаблон arcticles.php:
Статический анализ в PHP Storm правильно связывает с $articles с типом Article, но psalm выдает ошибку Cannot find referenced variable $articles in global scope
Как можно доработать psalm, чтобы он воспринимал переменную с @var как переменную переданную в шаблон?
PHP задачи с собеседований
Psalm Cannot find referenced variable $articles in global scope в шаблоне подключенном через include
Работаю над добавлением Psalm в проект. В нем есть метод-функция для подключения php файла-шаблона:
public function include(string $template, array $args = array(), bool $echo = true)
{
include $this->templates_path . $template;
}
С ее помощью подключается шаблон arcticles.php:
<?php
declare(strict_types=1);
/**
* @var Article[] $articles
*/
foreach ($articles as $article) :
//...
endforeach;
Статический анализ в PHP Storm правильно связывает с $articles с типом Article, но psalm выдает ошибку Cannot find referenced variable $articles in global scope
Как можно доработать psalm, чтобы он воспринимал переменную с @var как переменную переданную в шаблон?
PHP задачи с собеседований
❓Вопрос от пользователя
Структура построения отображения картинок
Имеется код страницы
В нем в процессе загрузки создаются блоки с картинками, мне надо что-бы они были условно построечно, но не создавали пропусков, ни где не смог найти ответов, в том числе у ии, просьба помочь с реализацией задуманного.
Первый блок кода - код блока с картинкой
Второй блок кода - вся страница
1 картинка показывает что по факту имеется
2 картинка показывает что должно получится (сделал в photoshop)
Второй код
Структура построения отображения картинок
Имеется код страницы
В нем в процессе загрузки создаются блоки с картинками, мне надо что-бы они были условно построечно, но не создавали пропусков, ни где не смог найти ответов, в том числе у ии, просьба помочь с реализацией задуманного.
Первый блок кода - код блока с картинкой
Второй блок кода - вся страница
1 картинка показывает что по факту имеется
2 картинка показывает что должно получится (сделал в photoshop)
<?php foreach ($photos as $photo) { ?>
<div class="col draggable" data-id="<?=$photo['id']?>">
<div class="card">
<div class="card-body p-0 position-relative">
<img src="uploads/<?=$photo['file_name']?>" class="card-img-top img-fluid" alt="Фото <?=$photo['id']?>" onclick="openModal(this.src)">
<div class="photo-actions position-absolute w-100 d-flex justify-content-center">
<div class="opacity-75 p-2 rounded">
<a href="uploads/<?=$photo['file_name']?>" download class="btn btn-secondary">Скачать</a>
<button class="btn btn-primary print-request" data-id="<?=$photo['id']?>">Запрос на печать</button>
<button class="btn btn-danger delete-photo" data-id="<?=$photo['id']?>">Удалить</button>
</div>
</div>
</div>
</div>
</div>
<?php } ?>
Второй код
<?php
require("includes/header.php");
require("../src/db.php");
$stmt = $conn->prepare("SELECT * FROM bids WHERE user_id=?");
$stmt->execute([$_SESSION['user_id']]);
$bids = $stmt->fetchAll();
$photosStmt = $conn->prepare("SELECT * FROM photos WHERE user_id=?");
$photosStmt->execute([$_SESSION['user_id']]);
$photos = $photosStmt->fetchAll();
?>
<div class="container-fluid w-75 mb-3 mx-auto">
<h2 class="text-center p-3">Личный кабинет</h2>
<div class="container border mb-5">
<a href="bid_form.php" class="btn btn-success mb-2 mt-3">Новая заявка</a>
<h3>Ваши заявки:</h3>
<button class="btn btn-primary mb-3 mt-2" type="button" data-bs-toggle="collapse" data-bs-target="#bidsTable" aria-expanded="false" aria-controls="bidsTable">
Показать/Скрыть заявки
</button>
<div class="collapse" id="bidsTable">
<div class="row row-cols-1 row-cols-md-2 g-4">
<?php foreach ($bids as $bid) { ?>
<div class="col">
<div class="card">
<div class="card-body">
<h5 class="card-title">Заявка № <?=$bid["id"]?></h5>
<h5 class="card-title"><?=$bid["title"]?></h5>
<p class="card-text"><?=$bid["description"]?></p>
<p class="card-text"><?=$bid["status"]?></p>
</div>
</div>
</div>
<?php } ?>
</div>
</div>
</div>
<div class="container border">
<h3>Ваши фото:</h3>
<form action="api/upload_photo.php" method="post" enctype="multipart/form-data">
<input type="file" name="photo" id="photoInput" class="form-control mb-3" onchange="toggleUploadButton()">
<button type="submit" id="uploadButton" class="btn btn-primary" disabled>Загрузить фото</button>
</form>
<div id="photoGallery" class="row row-cols-1 row-cols-md-2 g-4 mt-3 mb-3">
<?php foreach ($photos as $photo) { ?>
<div class="col draggable" data-id="<?=$photo['id']?>">
<div class="card">
<div class="card-body p-0 position-relative">
<img src="uploads/<?=$photo['file_name']?>" class="card-img-top img-fluid" alt="Фото <?=$photo['id']?>" onclick="openModal(this.src)">
<div class="photo-actions position-absolute w-100 d-flex justify-content-center">
<div class="opacity-75 p-2 rounded">
<a href="uploads/<?=$photo['file_name']?>" download class="btn btn-secondary">Скачать</a>
<button class="btn btn-primary print-request" data-id="<?=$photo['id']?>">Запрос на печать</button>
<button class="btn btn-danger delete-photo" data-id="<?=$photo['id']?>">Удалить</button>
</div>
</div>
</div>
</div>
</div>
<?php } ?>
</div>
</div>
</div>
<!-- Modal for full-size image -->
<div id="imageModal" class="modal" tabindex="-1">
<span class="close" onclick="closeModal()">×</span>
<img class="modal-content" id="modalImage">
</div>
<script>
function toggleUploadButton() {
const photoInput = document.getElementById('photoInput');
const uploadButton = document.getElementById('uploadButton');
uploadButton.disabled = !photoInput.files.length;
}
document.addEventListener('DOMContentLoaded', function() {
const deleteButtons = document.querySelectorAll('.delete-photo');
deleteButtons.forEach(button => {
button.addEventListener('click', function() {
const photoId = this.getAttribute('data-id');
if (confirm('Вы уверены, что хотите удалить это фото?')) {
fetch('api/delete_photo.php', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
body: new URLSearchParams({
'photo_id': photoId
})
})
.then(response => response.json())
.then(data => {
if (data.success) {
this.closest('.col').remove();
} else {
alert('Ошибка при удалении фото: ' + data.message);
}
})
.catch(error => {
console.error('Ошибка:', error);
alert('Произошла ошибка при удалении фото');
});
}
});
});
});
function openModal(src) {
const modal = document.getElementById("imageModal");
const modalImg = document.getElementById("modalImage");
modal.style.display = "block";
modalImg.src = src;
}
function closeModal() {
const modal = document.getElementById("imageModal");
modal.style.display = "none";
}
</script>
<style>
.card-body {
position: relative;
overflow: hidden;
}
.card-body .photo-actions {
display: flex;
align-items: center;
justify-content: center;
bottom: -100%;
left: 0;
right: 0;
background: linear-gradient(rgba(0, 0, 0, 0), rgba(255, 255, 255, 0.45));
transition: bottom 0.3s ease;
padding: 10px;
}
.card:hover .photo-actions {
bottom: 0;
}
/* Стили для предотвращения растягивания изображения */
.card-img-top {
object-fit: cover;
width: 100%;
height: auto;
}
/* Modal styles */
.modal {
display: none;
position: fixed;
z-index: 1000;
padding-top: 60px;
left: 0;
top: 0;
width: 100%;
height: 100%;
overflow: auto;
background-color: rgba(0, 0, 0, 0.8);
}
.modal-content {
margin: auto;
display: block;
max-width: 90%;
max-height: 90%;
width: auto;
height: auto;
}
.close {
position: absolute;
top: 15px;
right: 35px;
color: #fff;
font-size: 40px;
font-weight: bold;
transition: 0.3s;
}
.close:hover,
.close:focus {
color: #bbb;
text-decoration: none;
cursor: pointer;
}
</style>
<?php require("includes/footer.php"); ?>
❓Вопрос от пользователя
Как устранить ошибку Fatal error: Unknown: Failed opening required?
0
Загрузил на сервер магазин на ocStore , но выдает такую ошибку:
Как решить данную проблему??
PHP задачи с собеседований
Как устранить ошибку Fatal error: Unknown: Failed opening required?
0
Загрузил на сервер магазин на ocStore , но выдает такую ошибку:
Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0
Fatal error: Unknown: Failed opening required '/home/sldybopt/public_html/index.php'
(include_path='.:/opt/alt/php73/usr/share/pear') in Unknown on line 0
Как решить данную проблему??
PHP задачи с собеседований
❓Вопрос от пользователя
Слияние одинаковых массивов PHP с заполнением значений если не пустое
Всем доброго времени суток! Имею два массива. Первый со значениями по некоторым складам [free_to_sell_amount], а второй со всеми складами но пустыми значениями [free_to_sell_amount]. Пытаюсь объединить их, чтобы в результате получить массив по всем складам и заполненными значениями из второго массива, там где есть.
Первый массив со складами где есть остатки (free_to_sell_amount)
Второй массив (со всеми складами, но пустыми значениями free_to_sell_amount)
Слияние одинаковых массивов PHP с заполнением значений если не пустое
Всем доброго времени суток! Имею два массива. Первый со значениями по некоторым складам [free_to_sell_amount], а второй со всеми складами но пустыми значениями [free_to_sell_amount]. Пытаюсь объединить их, чтобы в результате получить массив по всем складам и заполненными значениями из второго массива, там где есть.
Первый массив со складами где есть остатки (free_to_sell_amount)
Array
(
[sku] => 1312583660
[item_code] => 774420-10
[item_name] => 774420 Legrand Valena / Розетка белая 2К+З (10шт) ОригиналРитейлГрупп
[stock] => Array
(
[0] => Array
(
[warehouse_name] => ХОРУГВИНО_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 1
[reserved_amount] => 1
)
[1] => Array
(
[warehouse_name] => Новосибирск_РФЦ_НОВЫЙ
[promised_amount] => 0
[free_to_sell_amount] => 7
[reserved_amount] => 0
)
[2] => Array
(
[warehouse_name] => Екатеринбург_РФЦ_НОВЫЙ
[promised_amount] => 0
[free_to_sell_amount] => 11
[reserved_amount] => 0
)
[3] => Array
(
[warehouse_name] => САМАРА_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 18
[reserved_amount] => 0
)
[4] => Array
(
[warehouse_name] => СОФЬИНО_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 24
[reserved_amount] => 0
)
[5] => Array
(
[warehouse_name] => СПБ_ШУШАРЫ_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 24
[reserved_amount] => 0
)
)
)
Второй массив (со всеми складами, но пустыми значениями free_to_sell_amount)
Array
(
[sku] => 1312583660
[item_code] => 774420-10
[item_name] => 774420 Legrand Valena / Розетка белая 2К+З (10шт) ОригиналРитейлГрупп
[stock] => Array
(
[0] => Array
(
[warehouse_name] => ХОРУГВИНО_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)
[1] => Array
(
[warehouse_name] => Санкт_Петербург_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)
[2] => Array
(
[warehouse_name] => САМАРА_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)
[3] => Array
(
[warehouse_name] => ПЕТРОВСКОЕ_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)
[4] => Array
(
[warehouse_name] => СОФЬИНО_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)
[5] => Array
(
[warehouse_name] => ПУШКИНО_1_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)
[6] => Array
(
[warehouse_name] => Новосибирск_РФЦ_НОВЫЙ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)
[7] => Array
(
[warehouse_name] => Екатеринбург_РФЦ_НОВЫЙ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)
[8] => Array
(
[warehouse_name] => СПБ_ШУШАРЫ_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)
[9] => Array
(
[warehouse_name] => Ростов_на_Дону_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)
[10] => Array
(
[warehouse_name] => НОВОРОССИЙСК_МРФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)
[11] => Array
(
[warehouse_name] => ЖУКОВСКИЙ_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)
[12] => Array
(
[warehouse_name] => ПУШКИНО_2_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)
[13] => Array
(
[warehouse_name] => АДЫГЕЙСК_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)
[14] => Array
(
[warehouse_name] => НОГИНСК_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)
[15] => Array
(
[warehouse_name] => ВОРОНЕЖ_2_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)
[16] => Array
(
[warehouse_name] => ГРИВНО_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)
[17] => Array
(
[warehouse_name] => ТВЕРЬ_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)
)
)
Хочу получить такой массив
Array
(
[sku] => 1312583660
[item_code] => 774420-10
[item_name] => 774420 Legrand Valena / Розетка белая 2К+З (10шт) ОригиналРитейлГрупп
[stock] => Array
(
[0] => Array
(
[warehouse_name] => ХОРУГВИНО_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 1
[reserved_amount] => 1
)
[1] => Array
(
[warehouse_name] => Санкт_Петербург_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 0
[reserved_amount] => 0
)
[2] => Array
(
[warehouse_name] => САМАРА_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 18
[reserved_amount] => 0
)
[3] => Array
(
[warehouse_name] => ПЕТРОВСКОЕ_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 0
[reserved_amount] => 0
)
[4] => Array
(
[warehouse_name] => СОФЬИНО_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 24
[reserved_amount] => 0
)
[5] => Array
(
[warehouse_name] => ПУШКИНО_1_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 0
[reserved_amount] => 0
)
[6] => Array
(
[warehouse_name] => Новосибирск_РФЦ_НОВЫЙ
[promised_amount] => 0
[free_to_sell_amount] => 7
[reserved_amount] => 0
)
[7] => Array
(
[warehouse_name] => Екатеринбург_РФЦ_НОВЫЙ
[promised_amount] => 0
[free_to_sell_amount] => 11
[reserved_amount] => 0
)
[8] => Array
(
[warehouse_name] => СПБ_ШУШАРЫ_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 24
[reserved_amount] => 0
)
[9] => Array
(
[warehouse_name] => Ростов_на_Дону_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 0
[reserved_amount] => 0
)
[10] => Array
(
[warehouse_name] => НОВОРОССИЙСК_МРФЦ
[promised_amount] => 0
[free_to_sell_amount] => 0
[reserved_amount] => 0
)
[11] => Array
(
[warehouse_name] => ЖУКОВСКИЙ_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 0
[reserved_amount] => 0
)
[12] => Array
(
[warehouse_name] => ПУШКИНО_2_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 0
[reserved_amount] => 0
)
[13] => Array
(
[warehouse_name] => АДЫГЕЙСК_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 0
[reserved_amount] => 0
)
[14] => Array
(
[warehouse_name] => НОГИНСК_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 0
[reserved_amount] => 0
)
[15] => Array
(
[warehouse_name] => ВОРОНЕЖ_2_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 0
[reserved_amount] => 0
)
[16] => Array
(
[warehouse_name] => ГРИВНО_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 0
[reserved_amount] => 0
)
[17] => Array
(
[warehouse_name] => ТВЕРЬ_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 0
[reserved_amount] => 0
)
)
)
Делаю так, но нечего не выходит
$general_array = array_merge($array1, $array2);
❓Вопрос от пользователя
Сумма из чисел массива, наиболее близкая к определенному числу с минимальным остатком
Подскажите правильный алгоритм, или решение на php.
Есть число
x = 112;
и массив
[20,30,38]
И число, и массив могут меняться.
Мне нужно получить число, максимально близкое к числу X, из суммы элементов массива, при условии, что числа из массива могут повторяться.
То есть из примера, который мне нужен
20+20+20+20+30 = 110 ( остаток 2)
или
30+30+30+20 = 110 ( остаток 2)
PHP задачи с собеседований
Сумма из чисел массива, наиболее близкая к определенному числу с минимальным остатком
Подскажите правильный алгоритм, или решение на php.
Есть число
x = 112;
и массив
[20,30,38]
И число, и массив могут меняться.
Мне нужно получить число, максимально близкое к числу X, из суммы элементов массива, при условии, что числа из массива могут повторяться.
То есть из примера, который мне нужен
20+20+20+20+30 = 110 ( остаток 2)
или
30+30+30+20 = 110 ( остаток 2)
PHP задачи с собеседований
❓Вопрос от пользователя
Не отправляется почта mail() с сервера
Пробую вот так:
<?php
if(!mail("куда отправляем", "я письмо", "я сообщение"))
echo 'не пашет ';
?>
Нажимаю Enter, пишет не пашет. Пробовал на другом хостинге всё работает. Что делать? Обращаться в тех поддержку? Или самому что-то исправлять?
PHP задачи с собеседований
Не отправляется почта mail() с сервера
Пробую вот так:
<?php
if(!mail("куда отправляем", "я письмо", "я сообщение"))
echo 'не пашет ';
?>
Нажимаю Enter, пишет не пашет. Пробовал на другом хостинге всё работает. Что делать? Обращаться в тех поддержку? Или самому что-то исправлять?
PHP задачи с собеседований
❓Вопрос от пользователя
добавить информацию через форму в бд
не добавляется информация через форму, после ввода в инпут нажимаю на кнопку и ничего не происходит, в базе информация не появляется
PHP задачи с собеседований
добавить информацию через форму в бд
не добавляется информация через форму, после ввода в инпут нажимаю на кнопку и ничего не происходит, в базе информация не появляется
<form method="post" action="add_track.php" class="block"></form>
<input type="text" placeholder="Введите название трека" class="name" name="name">
<input type="text" placeholder="Введите исполнителя трека" class="ispol" name="ispol">
<input type="text" placeholder="Введите ссылку на изображение трека" class="link" name="link">
<button type="submit" class="add"></button>
</form>
<?php
require_once 'connect.php';
$name = $_POST['name'];
$ispol = $_POST['ispol'];
$link = $_POST['link'];
mysqli_query($connect, "INSERT INTO `track` (`name`, `performer`, `img`)
VALUES ('$name', '$ispol', '$link')");
header('Location: /')
?>
PHP задачи с собеседований
❓Вопрос от пользователя
нужно расставить по 4 объекта на страницу
пытался расставить объекты по 4 штуки, следующие должны переноситься на новую строку, но не получается, переносятся только последние 4 объекта код html
PHP задачи с собеседований
нужно расставить по 4 объекта на страницу
пытался расставить объекты по 4 штуки, следующие должны переноситься на новую строку, но не получается, переносятся только последние 4 объекта код html
<div class="container">
<?php foreach($info as $data): ?>
<div class="item">
<div class="b_ava">
<img src="<?= $data['img']; ?>" class="ava">
<h3 class="name"><?= $data['name']; ?></h3>
<h3 class="name"><?= $data['performer']; ?></h3>
<span class="name"><?= $data['rating']; ?></span>
</div>
<?php endforeach; ?>
</div>
</div>
.container{
display: flex;
position: relative;
max-width: 2000px;
max-height: 2000px;
left: 300px;
bottom: 500px;
}
.item{
display: flex;
flex-wrap: wrap;
grid-gap: 70px;
}
.b_ava{
width: 252px;
height: 355px;
background-color: #1d1c21;
box-shadow: inset 0px 0px 4px 2px #1d1c21;
border-radius: 20px;
}
.name{
color: aliceblue;
font-size: 18px;
text-align: center;
font-family: Gill Sans, sans-serif;
padding-top: 10px;
}
.ava{
position: relative;
left: 33px;
top: 25px;
border-radius: 20px;
width: 190px;
height: 190px;
}
PHP задачи с собеседований
❓Вопрос от пользователя
Как сделать массовую замену URL ссылок в phpMyAdmin для ocStore?
Подскажите, пожалуйста, какой нужно сделать SQL запрос в phpMyAdmin чтобы сделать массовую замену ссылок для ocStore 3??
PHP задачи с собеседований
Как сделать массовую замену URL ссылок в phpMyAdmin для ocStore?
Подскажите, пожалуйста, какой нужно сделать SQL запрос в phpMyAdmin чтобы сделать массовую замену ссылок для ocStore 3??
PHP задачи с собеседований
❓Вопрос от пользователя
В шаблонах blade laravel для указания путей используется asset(), есть ли что-то подобное в компонентах vue 3?
Пример
<script src="{{ asset('js/script.js') }}"></script>
PHP задачи с собеседований
В шаблонах blade laravel для указания путей используется asset(), есть ли что-то подобное в компонентах vue 3?
Пример
<script src="{{ asset('js/script.js') }}"></script>
PHP задачи с собеседований
❓Вопрос от пользователя
Как сделать вывод тегов относящихся только к текущей категории, в категории товаров Prestashop 1.6
Подскажите пожалуйста как можно сделать вывод тегов товаров, которые относятся только к текущей категории? В престе по-умолчанию теги выводятся все сразу... есть такой код вставляю в category.tpl:
Он выводит все как нужно, НО также выводит и пустые значения. Т.е. если в товаре тег не заполнен, то он все равно выводится как пустая ссылка...Подскажите пожалуйста как можно выводить теги для конкретной категории, если они заполнены в товаре, и не выводить пустые значения.
PHP задачи с собеседований
Как сделать вывод тегов относящихся только к текущей категории, в категории товаров Prestashop 1.6
Подскажите пожалуйста как можно сделать вывод тегов товаров, которые относятся только к текущей категории? В престе по-умолчанию теги выводятся все сразу... есть такой код вставляю в category.tpl:
<div class="producttags">
{foreach from=$products item=product name=products}
{foreach from=Tag::getProductTags($product.id_product) key=k item=v}
{foreach from=$v item=value}
{if isset($tags) && !empty($tags) && $tags > 0}
<a href="{$link->getPageLink('search', true, NULL, "tag={$value|urlencode}")}">{$value|escape:html:'UTF-8'}</a>
{else}
{l s='Пока что здесь ничего нет' mod='blocktags_mod'}
{/if}
{/foreach}
{/foreach}
{/foreach}
</div>
Он выводит все как нужно, НО также выводит и пустые значения. Т.е. если в товаре тег не заполнен, то он все равно выводится как пустая ссылка...Подскажите пожалуйста как можно выводить теги для конкретной категории, если они заполнены в товаре, и не выводить пустые значения.
PHP задачи с собеседований