Верстка блока продуктов

А
На сайте с 11.11.2010
Offline
66
214

Мы получаем меню с сайта, путем прямого парсинга, то есть получения HTML кода страниц сайта.

На качество парсинга влияет качественная верстка. Все теги на странице должны быть парными, то есть открытые теги должны быть закрыты и не должны существовать закрытые теги без открытых. Исключение составляют одиночные теги типа <image />, <br /> и тд.

Блок категорий должен иметь текстовые обозначения, то есть тег категории с пиццей должнен иметь текст "Пицца", недостаточно одного изображения. Категория должна быть жестко привязана к блоку продуктов, несколько категорий не должны вести на одну страницу/блок с продуктами. В случае, если категория никак не связана с блоком продуктов через html код, парсинг невозможен.

Блок продуктов должен существовать, в нем каждый продукт также должен быть обернут в собственный блок.

Блок каждого продукта должен содержать в себе следующие отдельные элементы:

- Название

- Вес

- Калории (не обязательно)

- Описание

- Цена

- Изображение

Варианты - это список обязательных к выбору модификаций продуктов, допустим размер у пиццы или объем у напитков.

Список вариантов должен располагаться внутри блока соответствующего продукта. Варианты, которые есть на странице,но не привязанны к конкретному продукту мы забрать не сможем. Каждый вариант должен содержать цену в html коде.

Пример в конце файла.

Ингредиенты - это список необязательных к выбору модификаций продуктов, допустим соус к картошке.

Список ингредиентов должен располагаться внутри блока соответствующего продукта. Ингредиенты, которые есть на странице,но не привязанны к конкретному продукту мы забрать не сможем. Каждый ингредиент должен содержать цену в html коде.

Пример в конце файла.

Пример подходящей верстки блока продукта:

<div class="products">

<div class="product">

<h2 class="name">Пицца Маргарита</h2>

<p class="description">Помидоры черри, сыр гальбани, сыр моцарелла, фирменный соус, базилик</p>

<p class="price">520 рублей</p>

<img class="image" src="https://site.ru/images/image.jpg" />

<select class="variants">

<option price="520">32 см</option>

<option price="820">42 см</option>

</select>

<div class="ingredients">

<span>

<input type="checkbox" value="30" price="30">

<label>Соленые огурчики 30 гр</label>

</span>

<span>

<input type="checkbox" value="40" price="40">

<label>Ананас 10 гр</label>

</span>

<span>

<input type="checkbox" value="50" price="50">

<label>Колбаски 50 гр</label>

</span>

</div>

</div>

</div>

---------- Добавлено 13.10.2019 в 17:21 ----------

В каком месте копать чтобы осуществить данный вид использования блоков на действующем сайте?

O
На сайте с 30.09.2019
Offline
18
#1

Лучше, наверное, через DOMDocument() получить массив, а потом верстать, как угодно. Как то так:


$html = спарсенная страница
$doc = new DOMDocument();
@$doc->loadHTML($html);
$xpath = new DomXPath($doc);
$elements = $xpath->query('.//тег_меню');

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий