Як правильно читати теги з двокрапкою (<p:id>) у google_merchant.xml у PHP
Спосіб читання xml з тегами, що мають двокрапку <p:id>, як у вивантаженні в Google Merchant. Використання registerXPathNamespace або звернення безпосередньо до тега.
Нещодавно переді мною стало завдання відсортувати видачу продуктів за таблицею, яка не описана в schema.xml. Наведу короткий приклад схеми таблиці та структури таблиці з позиціями, за якою мені слід відсортувати товари.
Спрощена таблиця товарів (об'єднав таблицю перекладів з основної та урізав поля):
| id | (int) | ID товару |
| name | (string) | Ім'я |
| create_date | (int) | Дата |
Схема таблиці (schema.xml):
<table name="shop_products" phpName="SProducts">
<vendor type="mysql">
<parameter name="Charset" value="utf8"/>
</vendor>
<column name="id" type="INTEGER" required="true" autoIncrement="true" primaryKey="true"/>
<column name="name" type="varchar" size="500" required="true"/>
<column name="create_date" type="INTEGER"/>
</table>
Дорпустим у нас є прив'язка товарів до статей, і в кожної статті може зустрічатися один і той самий товар і кожен товар може мати свою позицію в кожній статті.
Наведу приклад таблиці статей та зв'язку товарів (назвемо таблицю link_page):
| page_id | (int) | Id статті (наведено для прикладу) |
| product_id | (int) | ID товару зі схеми SProducts |
| position | (int) | Позиція у якій товар є у статті |
Ось є позиція кожного товару у статті, але в таблиці товару немає зв'язки, щоб зробити join пропелом. Тому починаємо робити ось так:
SProductsQuery::create()
->addJoin('shop_products.id' , 'link_page.product_id', Criteria::INNER_JOIN)
->addAsColumn('position', 'link_page.position')
->where('page_link_product.page_id = ' . 'ID страницы товара')
->orderBy('position','ASC')
->find();
У моєму випадку повний шлях до Criteria::INNER_JOIN \Propel\Runtime\ActiveQuery\Criteria::INNER_JOIN .
SProductsQuery - згенерована модель за схемою, спрощена для розуміння та описана вище.
Даний запит дасть можливість підключити таблицю, що не оголошена в моделях, в пропел запит, щоб не робити милиць і велосипедів для сортування.
Спробуйте, розбирайтеся, у разі addJoin() дозволив заощадити час перепису і перегенерації схеми під потреби, цим не сильно обтяжуючи сторінку статті, де присутні товари.
Спосіб читання xml з тегами, що мають двокрапку <p:id>, як у вивантаженні в Google Merchant. Використання registerXPathNamespace або звернення безпосередньо до тега.
Розбір JWT HS256 шифрування, розшифровка JWT HS256, порівняння сигнатур sha256 на цілісність інформації.
Розглянемо виправлення зникнення пробiлiв перед змінними у старій версії Twig на php 7.4 не оновлюючи версію.
Розглянемо можливість швидкого створення CSV файлу з автоматичним скачуванням файлу. Розглянемо формування, роздільники та header для можливості завантажити файл.
Останні шаблони від ImageCMS 4.12, для завантаження потрібна авторизація.