Степан Прищепенко

Степан Прищепенко

С нами с 09 апреля 2013; Место в рейтинге пользователей: #66

Семантически правильныe Breadcrumbs на pdoCrumbs

Верстая очередной проект для замороченных на SEO клиентов, столкнулся с тем, что pdoCrumbs конечно хорош в своей программной логике, но приведенные в документации примеры не совсем верно построены с точки зрения SEO и архитектуры HTML.

Под катом сам код, мои заметки и несколько полезных комментариев.



Николай Савин
27 января 2017, 19:12
modx.pro
49
15 727
+20

Вывод заказов пользователя и товаров заказа

Нужна была возможность вывода заказов клиента и товаров в этих заказах. Велосипедов много, мой один из них.

1) Снипет для вывода заказов:
<?php
// снипет выводит заказы текущего пользователя

$user_id = $modx->user->get('id');
$tpl = $modx->getOption('tpl',$scriptProperties,'tpl.order');

// подхватываем заказы текущего пользователя
$q = $modx->newQuery('msOrder', array('user_id' => $user_id));
$results = $modx->getCollection('msOrder', $q);

// выводим или чанками или предупреждением что заказов пока нет
foreach ($results as $result) {
  if ( $result ) {
    $resultArray = $result->toArray();
    $output .= $modx->getChunk($tpl,$resultArray);
  } else {
    $output = 'У вас пока еще нет заказов.';
  }
}
return $output;
и соответственно чанк tpl.order (на феноме):
<div>
  <div> Заказ <span>{$_pls['num']}</span> от <span>{$_pls['createdon']}</span> года</div>
  <div>
    {$_modx->runSnippet('!msOrdersProducts', ['order'=>$_pls['id']])}
  </div>
</div>

2) Снипет вывода товаров заказа:
<?php
// выводит товары заказа.
$tpl = $modx->getOption('tpl',$scriptProperties,'tpl.order_cell'); // если товар найден
$tpl_empty = $modx->getOption('tpl',$scriptProperties,'tpl.order_cell_empty'); // если товар не найден

// ищем товар по id заказа
$q = $modx->prepare("SELECT * FROM ".$modx->getOption('table_prefix')."ms2_order_products WHERE order_id=".$order);
$q->execute();
$results = $q->fetchAll(PDO::FETCH_ASSOC);

$output;
// перебором либо выводим нужный заказ, либо оповещаем что его уже нет
foreach ($results as $result) {
  $res = $modx->getObject('modResource', array('pagetitle'=>$result[name]));
  
  if ($res) {
    $resArray = $res->toArray();
    $output .= $modx->getChunk($tpl,$resArray);
  } else {
    $prodName = $modx->setPlaceholder('name', $result[name]);
    $output .= $modx->getChunk($tpl_empty);
  }
}
return $output;
и соответственно чанк tpl.order_cell (на феноме):
<div>
  <span><a href="{$id | url}">{$pagetitle}</a></span>
  <span>{$price} Р</span>
</div>
и чанк в том случае если товара уже нет tpl.order_cell_empty:
<div>
  <span>{$_pls['name']}</span>
  <span>не найден</span>
</div>

Писал потому как, во первых учусь писать, во вторых быстрее написать чем искать подходящее решение и допиливать его. Буду рад советам и исправлениям. Пригодились бы советы по поводу:
1) сырого SQL:
$q = $modx->prepare("SELECT * FROM ".$modx->getOption('table_prefix')."ms2_order_products WHERE order_id=".$order);
$q->execute();
$results = $q->fetchAll(PDO::FETCH_ASSOC);
2) Первоначально хотел все в первом снипете вывести вот тут (далее в коде), но не получилось. Если кто подскажет буду рад.
// выводим или чанками или предупреждением что заказов пока нет
foreach ($results as $result) {

  // думал тут подхватить товары, но что с ними дальше так и не придумал...

  if ( $result ) {
    $resultArray = $result->toArray();
    $output .= $modx->getChunk($tpl,$resultArray);
  } else {
    $output = 'У вас пока еще нет заказов.';
  }
}
Всем успехов.
Юрий Фомин
27 января 2017, 15:51
modx.pro
15
3 412
+2

modNodejs - Интеграция Nodejs в MODx

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

Заголовок говорит сам за себя, это интеграция Nodejs в MODx.
Так зачем он нужен? Для realtime! Как сказал Николай: «технологии диктуют».

Простейший пример: в minishop2 поступил заказ, а менеджер гуляет по админке\сайту, вот что он увидит:

Без перезагрузки страницы и тд, можно выполнить любой js по наступлению эвента.
but1head
21 января 2017, 03:11
modx.pro
22
12 498
+27

Ссылки на сайты-магазины на minishop2

Привет всем. Кому не сложно, подкиньте в комментах ссылок на сайты-магазины на минишопе, а то мне ответить нечем на "что-то я не видел магазинов на modx, все нормальные фирмы делают на Битриксе". Ну и думаю будет многим интересно посмотреть.
Виталий Барышников
12 января 2017, 10:27
modx.pro
8
5 054
+1

[ms2Gallery] Версия 2.0

С новым годом, друзья! Сегодня я хочу рассказать вам об изрядно переписанной ms2Gallery 2.0.

— Весь код заново просмотрен и отформатирован в PSR-2.
— Улучшена сортировка картинок, настройка «ms2gallery_exact_sorting» удалена.
— Улучшен вывод картинок в админке, настройка «ms2gallery_thumbnail_size» удалена. Больше вы не должны видеть логотип вместо превьюшек — они подключаются в зависимости от настроек источника файлов.
— В properties файла пишется дата съёмки EXIF, если скрипт может её получить.
Василий Наумкин
06 января 2017, 18:18
modx.pro
6
13 364
+27

Функции хелперы для MODX

Друзья, поздравляю всех с наступающим Новым годом! Надеюсь, в новом году мы преодолеем все трудности и нам всем улыбнётся удача!


Ещё я хочу представить новую разработку в сфере улучшения процесса разработки — функции для работы с MODX.
Сергей Шлоков
31 декабря 2016, 08:57
modx.pro
22
5 226
+25

Создаём ZIP архив средствами MODX

Случается так, что на сайте надо запаковать какую-то папку, а по некоторым причинам сделать это невозможно затруднительно. Предлагаю вариант, который практически не требует ничего, кроме MODX и доступа в бек-энд.

В xPDO есть класс xPDOZip, который умеет запаковывать/распаковывать архивы. К сожалению, в самом MODX его функциональность задействована ровно наполовину — распаковать ZIP архив мы можем, а вот запаковать папку в архив не имеем возможности. Предлагаю решение!
Павел Гвоздь
13 декабря 2016, 01:00
modx.pro
17
5 044
+13

Для установки страниц, настроек и приложений

Простое приложение для первоначальной установки и настройки сайта.

Внимание!!! Устанавливать только на чистый MODX REVO.

Приложение может:
— создать страницы;
— установить отмеченные приложения;
— задать настройки по умолчанию (такие как емаил по умолчанию, включение ЧПУ и тд.);






Приложение бесплатное.

Приложение в магазине
Андрей Степаненко
01 декабря 2016, 13:40
modx.pro
6
3 304
+10

[msOptionsPrice2] - Галерея модификаций.

В msOptionsPrice2 новой версии добавлена галерея модификаций. Это не самостоятельная галерея а лишь работа со стандартной галереей продукта miniShop2


Володя
18 ноября 2016, 13:31
modx.pro
3
5 690
+23

[modTelegram] - Telegram сообщения

[modTelegram] — Небольшое дополнение для работы с Telegram.

Реализовано:
— методы работы с api
— помощник сайта
Володя
15 августа 2016, 09:34
modx.pro
17
15 628
+23