Вывод заказов для Minishop2
Давно использую MODX Revo, но в основном для небольших сайтов. А сейчас решил сделать на нём интернет-магазин. Захотелось сделать на сайте личный кабинет покупателя, где он сможет просматривать свои заказы. Начал искать и не нашёл ни одного решения этого вопроса (может плохо искал?!).
Странно. В итоге написал свой велосипед — сниппет и чанк в котором выводится содержимое.
Сниппет getOrders:
Решение на сказать что готовое, но более подходящего раздела для темы нет.
На нужной странице вызываем сниппет:
Если есть советы по усовершенствованию, то пишите.
ЗЫ: в комментариях дали совет по переделке — отделить логику от отображения и переделать c SQL на xPDO. Первое сделаю обязательно, а вот второе под вопросом — не вижу в этом смысла.
Странно. В итоге написал свой велосипед — сниппет и чанк в котором выводится содержимое.
Сниппет getOrders:
<?php
$user_id = $modx->user->get('id');
$chunkName = 'tpl.GetOrder.row';
$q = $modx->prepare("SELECT * FROM modx_ms2_orders WHERE user_id='$user_id' ORDER BY createdon");
$q->execute();
$orders = $q->fetchAll(PDO::FETCH_ASSOC);
if(count($orders)!=0){
foreach($orders as $order){
echo '<div class="row order">';
$order_id = $order[id];
$order_num = $order[num];
$order_status = $order[status];
$order_created = $order[createdon];
switch ($order_status){
case 1:
$order_status = '<span class="badge">Новый</span>';break;
case 2:
$order_status = '<span class="badge green">Оплачен</span>';break;
case 3:
$order_status = '<span class="badge blue">Отправлен</span>';break;
case 4:
$order_status = '<span class="badge red">Отменён</span>';break;
};
echo '<div class="col-md-2 center" style="padding: 20px;">';
echo '<p>Заказ</p>'.$order_num.' от
<p>'.$order_created.'</p><p>'.$order_status.'</p>';
echo '</div>';
echo '<div class="col-md-10">';
$q = $modx->prepare("SELECT * FROM modx_ms2_order_products WHERE order_id='$order_id'");
$q->execute();
$products = $q->fetchAll(PDO::FETCH_ASSOC);
echo '<table class="table table-hover"><thead><tr><th>#</th><th>Фото</th><th>Арт.</th><th>Кол</th><th>Цена</th><th>Итого</th></tr></thead><tbody>';
$i = 0;
foreach($products as $product){
$i = $i + 1;
$product_id = $product[product_id];
$q = $modx->prepare("SELECT * FROM modx_ms2_products WHERE id='$product_id'");
$q->execute();
$product_data = $q->fetchAll(PDO::FETCH_ASSOC);
$fields = array(
'id'=>$product_id,
'num'=>$i,
'thumb'=>$product_data[0][thumb],
'article'=>$product_data[0][article],
'count'=>$product[count],
'price'=>$product[price],
'summa'=>$product[price]*$product[count]
);
echo $modx->getChunk('tpl.GetOrder.row',$fields);
};
echo '</tbody></table>';
echo '</div>';
echo '</div>';
};
} else {
echo '<p>У вас ещё не было заказов</p>';
};
Чанк tpl.GetOrder.row:<tr>
<td>[[+num]]</td>
<td><a href="[[~[[+id]]]]"><img src="[[++site_url]][[+thumb:default=`[[++assets_url]]components/minishop2/img/web/ms2_small.png`]]" width="100px"/></a></td>
<td><a href="[[~[[+id]]]]">[[+article]]</a></td>
<td>[[+count]]</td>
<td>[[+price]]</td>
<td>[[+summa]]</td>
</tr>
На премию за изящество это решение не претендует, но вроде работает.Решение на сказать что готовое, но более подходящего раздела для темы нет.
На нужной странице вызываем сниппет:
[[!getOrders]]
и всё.Если есть советы по усовершенствованию, то пишите.
ЗЫ: в комментариях дали совет по переделке — отделить логику от отображения и переделать c SQL на xPDO. Первое сделаю обязательно, а вот второе под вопросом — не вижу в этом смысла.
Комментарии: 38
Начал искать и не нашёл ни одного решения этого вопроса (может плохо искал?!).store.simpledream.ru/office
Да, его видел. Но это целый компонент. Мне он ни к чему. Я искал решения из этого разряда:
bezumkin.ru/modx/minishop2/solutions/
bezumkin.ru/modx/minishop2/solutions/
То есть, нужен не личный кабинет, а вывод заказов?
Так и пиши.
Так и пиши.
Нужен был. Я сделал, решил поделиться.
Поправил заголовок, спасибо! Так действительно понятнее.
Поправил заголовок, спасибо! Так действительно понятнее.
Так может имеет смысл перенести эту запись сюда?
Ну или в другой раздел с решениями.
Ну или в другой раздел с решениями.
Думаю все же стоит сначала немного привести в порядок, запросы с xPDO, html в чанки.
привести в порядок, запросы с xPDOВот этот пункт, если не трудно, прокомментируйте чуть подробнее. Что именно не так?
Ну я к тому, чтобы избавиться от сырого SQL:
$q = $modx->newQuery('msOrder', array('user_id' => $user_id));
$q->sortby('createdon')
...
Павел Пустота, а как выводить данные товара? нужно «цвет» и «размер»?
В цикле foreach($products as $product) добавить:
$options = json_decode($product['options'], true);
$color = $options['color'];
$size = $options['size'];
В массив $fields добавить:
'color'=>$color,
'size'=>$size
$options = json_decode($product['options'], true);
$color = $options['color'];
$size = $options['size'];
В массив $fields добавить:
'color'=>$color,
'size'=>$size
Спасибо, педали закрутились!
и ещё вопрос, как вывести доставку и способ оплаты?
В цикле foreach($orders as $order)
Что то вроде этого:
Что то вроде этого:
$order_delivery = $order[delivery];
$order_payment = $order[payment];
switch ($order_delivery){
case 1:
$order_delivery = '<span class="badge">Самовывоз</span>';break;
case 2:
$order_delivery = '<span class="badge">Что там у вас настроено</span>';break;
};
switch ($order_payment){
case 1:
$order_delivery = '<span class="badge">Оплата наличными</span>';break;
case 2:
$order_delivery = '<span class="badge">PayPal</span>';break;
}
Большое спасибо — работает.
Павел, а как вывести имя товара? вместо поля «артикул»
Спасибо. но все это полностью переделать пришлось привязку шаблонов, запросы, вывод ошибок, вывод просто списка заказов а по клику отображать содержимое и т.д.
А в целом за идею реализации спасибо.
А в целом за идею реализации спасибо.
Случайно наткнулся на этот пост — искал готовое решение (из интереса и лень было писать самому)
Павел Пустота, вам ++ за героизм — когда не зная ни одной строчки языков программирования смело пытаются что-то делать сами, respect. За это вам (и всем за компанию) в подарок ваш код вызова ордеров только в правильном виде
A весь ваш код выкиньте в мусорную корзину, как можно скорее
p.s. хорошо что клиенты, некоторым из которых здесь платят ДЕНЬГИ, не видят то, что здесь происходит… )
Павел Пустота, вам ++ за героизм — когда не зная ни одной строчки языков программирования смело пытаются что-то делать сами, respect. За это вам (и всем за компанию) в подарок ваш код вызова ордеров только в правильном виде
<?php
$user_id = $modx->user->get('id');
// поменяйте префикс modx на свой
// выводите только нужные данные указывая их вместо звезд с алиасами иначе будут перезаписаны (a.id AS a_id)
$results = $modx->query("SELECT a.*, b.*, c.* FROM modx_ms2_orders a, modx_ms2_order_products b, modx_ms2_products c WHERE a.user_id=$user_id AND a.id=b.order_id AND c.id=b.product_id ORDER BY a.createdon");
echo '<table class="table table-hover"><thead><tr><th># ордер</th><th>Фото</th><th>Арт.</th><th>Кол</th><th>Цена</th><th>Итого</th></tr>';
$i=0;
while ($r = $results->fetch(PDO::FETCH_ASSOC)) {
++$i; // вставите куда надо
echo "<tr><th>".$r['order_id']."</th><th><img src=".$r['thumb']."></th><th>".$r['id']."</th><th>".$r['count']."</th><th>".$r['price']."</th><th>".$r['count']*$r['price']."</th></tr>"; // можете сунуть в ваши любимые "сниппеты" для "крутых программистов"
echo "<tr><td colspan=100>".print_r($r)."</td></tr>"; // здесь увидите все доступные данные, потом уберете эту строку
}
if($i==0) echo '<tr><td colspan=100>У вас ещё не было заказов</td></tr>';
echo "</table>";
НИКОГДА НЕ ДЕЛАЙТЕ рекурсивных запросов к базам из цикловA весь ваш код выкиньте в мусорную корзину, как можно скорее
p.s. хорошо что клиенты, некоторым из которых здесь платят ДЕНЬГИ, не видят то, что здесь происходит… )
А лучше вообще делать как то так: modx.pro/howto/13548/
pdoResources прекрасно справляется со своими функциями
pdoResources прекрасно справляется со своими функциями
Лучше вообще чужим кривым кодом не пользоваться
p.s. старая советская шутка: «Если (if) человек дурак — он идет работать учителем, если же (else if) человек настолько дурак, что не может работать учителем — он идет работать учителем физкультуры»
p.p.s. по статье по ссылке могу лишь добавить "… а если человек инвалид, и не может работать учителем физкультуры, он идет работать учителем модикса"
p.s. старая советская шутка: «Если (if) человек дурак — он идет работать учителем, если же (else if) человек настолько дурак, что не может работать учителем — он идет работать учителем физкультуры»
p.p.s. по статье по ссылке могу лишь добавить "… а если человек инвалид, и не может работать учителем физкультуры, он идет работать учителем модикса"
Забавно, может какие то аргументы будут?)
Вы ваш запрос к pdoResources будете писать дольше и потратите больше «букаф», чем требуется к самостоятельному запросу. Я вот этот список «полезных команд» протеза под именем pdoResources читал дольше, чем написал запрос на ордера к базе
Resource selection properties
These properties determine what resources will appear in the generated list.
Name Default Description
&parents Current resource Comma-separated list of parents, to find results. Set to 0 for unlimited, to +0 for the top level. If a parent id starts with a dash, it and its children are excluded from the query.
&depth 10 Search depth of child resources from parent in the Resource Tree.
&resources Comma-separated list of resources to add to the results. If the id of the resource starts with a hyphen, this resource is excluded from the query.
&context Limit the resources from the given context.
&where An array of additional selection parameters encoded JSON.
&showHidden 1 Show resources that are hidden in the menu.
&showUnpublished 0 Show unpublished resources.
&showDeleted 0 Show resources that have been marked as deleted.
&hideContainers 0 Exclude container resources, that is, resources with «isfolder = 1».
&select 0 A comma-separated list of fields to retrieve. You can specify a JSON string array, for example {«modResource»:«id,pagetitle,content»}.
&sortby pagetitle Any resource field for sorting, including TVs if the &includeTVs property is also set. You can specify a JSON string with an array of multiple fields, for example {«tvname»:«ASC», «pagetitle»:«DESC»}. To randomly sort use «RAND()».
&sortdir DESC Sort direction: Ascending or Descending.
&limit 10 Limit the number of results. You can use «0» for no limit.
&offset 0 Number of items to skip, from the beginning.
&first 1 Number of the first item of the output results.
&last Automatic, by the formula (total + first — 1) Number of the last item of the results.
&loadModels Comma-separated list of components whose model you need to download for building a query. Example: &loadModels=`ms2gallery,msearch2`.
&tvFilters List of filters on TV, delimited AND and OR. Separator specified parameter &tvFiltersOrDelimiter represents the logical OR condition thereon and conditions grouped primarily. Within each group, you can specify a list of values, separated &tvFiltersAndDelimiter. Search values can be performed in any particular TV, if it is provided «myTV == value», or in any «value». Sample call: &tvFilters=`filter2==one,filter1==bar%||filter1==foo`. Please note: The filter uses the LIKE operator and the "%" symbol is a metacharacter. This will search for the values for the resources that are located in the site_tmplvar_contentvalues table, not from the default settings of the TV.
&tvFiltersAndDelimiter "," Separator for conditional AND property &tvFilters.
&tvFiltersOrDelimiter "||" Separator for conditional OR property &tvFilters.
Template Properties
These properties specify the chunks that contain the templates to format the generated output.
Name Description
&returnIds Set to «1» to return a string with a list of resource ids, instead of complete results. All of the templates are ignored.
&tpl Name chunk for formatting the individual items. If not specified, the contents of the resource fields will be printed to the screen.
&tplFirst Name of the chunk to format the first item in the results.
&tplLast Name of the chunk to format the last item in the results.
&tplOdd Name of the chunk to format every odd-numbered item in the results.
&tplWrapper Chunk — wrapper, to wrap all results. Accepts one placeholder:[[+output]]. It does not work in conjunction with &toSeparatePlaceholders.
&wrapIfEmpty Includes outer chunk wrapper *&tplWrapper** even if there are no results.
&tplCondition Defines a field of the resource to evaluate against keys defined in the &conditionalTpls property.
&tplOperator Optional operator for comparison of the resource field &tplCondition with an array of values and in &conditionalTpls chunks.
&conditionalTpls A JSON object defining a map of field values and the associated tpl Chunks to use when the field defined by &tplCondition matches the value. The comparison operator is specified in &tplOperator. For operators such as isempty you can not use an array of keys.
&outputSeparator Optional string to separate the results.
Result Properties
These properties further define what data to fetch and how to display it.
Name Default Description
&fastMode 0 Quick mode for processing chunks. All raw tags (output modifiers, snippets, etc.) are removed.
&idx The starting number of iterations of the output.
&setTotal 0 Indicates if the total placeholder should be populated with a count of the results.
&totalVar total Name of the placeholder for storing the total number of results.
&includeContent 0 Indicates if the «content» field of each resource should be returned in the results.
&includeTVs Comma-separated list of Template Variable values that should be included in the placeholders available to each resource template. Example: «action,time» will produce the placeholders [[+tv.action]] and [[+tv.time]].
&prepareTVs «1», prepares all TVs specified in &includeTVs Comma-separated list of media source-dependant TV values to be prepared before output.
&processTVs Comma-separated list of TVs that should be processed according to their output options. If set to «1», all TV listed in &includeTVs will be processed.
&tvPrefix tv. Prefix TV property.
&scheme -1 Type of URL scheme, passed to modX::makeUrl(). See this for a list of valid options.
&useWeblinkUrl 0 Generate link to the weblink resource, not to the destination URL. NOTE: To get this properly working, be sure to use [[+link]] instead of [[~[[+id]]]] eg. [[+pagetitle]].
&toPlaceholder Save output to a placeholder with this name instead of displaying the output to the screen.
&toSeparatePlaceholders Each item will be displayed in a placeholder with a name starting with this value and ending with the sequential number starting from zero. For example, by specifying the property value «myPl», you'll get placeholders [[+myPl0]], [[+myPl1]] & etc.
&showLog 0 Show additional debugging information on the processing of the snippet only to logged-in Manager users.
Resource selection properties
These properties determine what resources will appear in the generated list.
Name Default Description
&parents Current resource Comma-separated list of parents, to find results. Set to 0 for unlimited, to +0 for the top level. If a parent id starts with a dash, it and its children are excluded from the query.
&depth 10 Search depth of child resources from parent in the Resource Tree.
&resources Comma-separated list of resources to add to the results. If the id of the resource starts with a hyphen, this resource is excluded from the query.
&context Limit the resources from the given context.
&where An array of additional selection parameters encoded JSON.
&showHidden 1 Show resources that are hidden in the menu.
&showUnpublished 0 Show unpublished resources.
&showDeleted 0 Show resources that have been marked as deleted.
&hideContainers 0 Exclude container resources, that is, resources with «isfolder = 1».
&select 0 A comma-separated list of fields to retrieve. You can specify a JSON string array, for example {«modResource»:«id,pagetitle,content»}.
&sortby pagetitle Any resource field for sorting, including TVs if the &includeTVs property is also set. You can specify a JSON string with an array of multiple fields, for example {«tvname»:«ASC», «pagetitle»:«DESC»}. To randomly sort use «RAND()».
&sortdir DESC Sort direction: Ascending or Descending.
&limit 10 Limit the number of results. You can use «0» for no limit.
&offset 0 Number of items to skip, from the beginning.
&first 1 Number of the first item of the output results.
&last Automatic, by the formula (total + first — 1) Number of the last item of the results.
&loadModels Comma-separated list of components whose model you need to download for building a query. Example: &loadModels=`ms2gallery,msearch2`.
&tvFilters List of filters on TV, delimited AND and OR. Separator specified parameter &tvFiltersOrDelimiter represents the logical OR condition thereon and conditions grouped primarily. Within each group, you can specify a list of values, separated &tvFiltersAndDelimiter. Search values can be performed in any particular TV, if it is provided «myTV == value», or in any «value». Sample call: &tvFilters=`filter2==one,filter1==bar%||filter1==foo`. Please note: The filter uses the LIKE operator and the "%" symbol is a metacharacter. This will search for the values for the resources that are located in the site_tmplvar_contentvalues table, not from the default settings of the TV.
&tvFiltersAndDelimiter "," Separator for conditional AND property &tvFilters.
&tvFiltersOrDelimiter "||" Separator for conditional OR property &tvFilters.
Template Properties
These properties specify the chunks that contain the templates to format the generated output.
Name Description
&returnIds Set to «1» to return a string with a list of resource ids, instead of complete results. All of the templates are ignored.
&tpl Name chunk for formatting the individual items. If not specified, the contents of the resource fields will be printed to the screen.
&tplFirst Name of the chunk to format the first item in the results.
&tplLast Name of the chunk to format the last item in the results.
&tplOdd Name of the chunk to format every odd-numbered item in the results.
&tplWrapper Chunk — wrapper, to wrap all results. Accepts one placeholder:[[+output]]. It does not work in conjunction with &toSeparatePlaceholders.
&wrapIfEmpty Includes outer chunk wrapper *&tplWrapper** even if there are no results.
&tplCondition Defines a field of the resource to evaluate against keys defined in the &conditionalTpls property.
&tplOperator Optional operator for comparison of the resource field &tplCondition with an array of values and in &conditionalTpls chunks.
&conditionalTpls A JSON object defining a map of field values and the associated tpl Chunks to use when the field defined by &tplCondition matches the value. The comparison operator is specified in &tplOperator. For operators such as isempty you can not use an array of keys.
&outputSeparator Optional string to separate the results.
Result Properties
These properties further define what data to fetch and how to display it.
Name Default Description
&fastMode 0 Quick mode for processing chunks. All raw tags (output modifiers, snippets, etc.) are removed.
&idx The starting number of iterations of the output.
&setTotal 0 Indicates if the total placeholder should be populated with a count of the results.
&totalVar total Name of the placeholder for storing the total number of results.
&includeContent 0 Indicates if the «content» field of each resource should be returned in the results.
&includeTVs Comma-separated list of Template Variable values that should be included in the placeholders available to each resource template. Example: «action,time» will produce the placeholders [[+tv.action]] and [[+tv.time]].
&prepareTVs «1», prepares all TVs specified in &includeTVs Comma-separated list of media source-dependant TV values to be prepared before output.
&processTVs Comma-separated list of TVs that should be processed according to their output options. If set to «1», all TV listed in &includeTVs will be processed.
&tvPrefix tv. Prefix TV property.
&scheme -1 Type of URL scheme, passed to modX::makeUrl(). See this for a list of valid options.
&useWeblinkUrl 0 Generate link to the weblink resource, not to the destination URL. NOTE: To get this properly working, be sure to use [[+link]] instead of [[~[[+id]]]] eg. [[+pagetitle]].
&toPlaceholder Save output to a placeholder with this name instead of displaying the output to the screen.
&toSeparatePlaceholders Each item will be displayed in a placeholder with a name starting with this value and ending with the sequential number starting from zero. For example, by specifying the property value «myPl», you'll get placeholders [[+myPl0]], [[+myPl1]] & etc.
&showLog 0 Show additional debugging information on the processing of the snippet only to logged-in Manager users.
это зачем нужно?
простите, вы когда утром бреетесь запускаете для этого ядерный реактор или просто бритву используете? ))
простите, вы когда утром бреетесь запускаете для этого ядерный реактор или просто бритву используете? ))
Вы ваш запрос к pdoResources будете писать дольше и потратите больше «букаф», чем требуется к самостоятельному запросуДа ладно? Ну давай проверим. В моем запросе 665 символов, в нем уже учтены такие моменты как возможная смена названия таблицы (новое имя автоматом подтянется), возможная смена префикса, шаблонизатор, что позволит дальше адекватно расширять фронт, а также подключается 4 таблицы, а не 3. В твоем же примере 742 символа и абсолютно никакая сопровождаемость. pdoTools далеко гораздо более функционален, чем просто конструктор запросов как бы
1. «на ты» будешь разговаривать со своим папой, ты не мой ребенок
2. твой запрос ты не показал
3. мои клиенты сами не меняют ни префиксы, ни названия таблиц, сменят — обратятся и оплатят лишнюю работу, я не разрабатываю modx, я работаю с другими, более серьезными продуктами ))
4. 742 символа вместе с print_r и комментариями для дебилов? )))))))
5. ты мне предлагаешь написать аналог pdoTools? нахуя, если он уже написан? или использовать pdoTools? нахуя, если моя задача этого не требует?
2. твой запрос ты не показал
3. мои клиенты сами не меняют ни префиксы, ни названия таблиц, сменят — обратятся и оплатят лишнюю работу, я не разрабатываю modx, я работаю с другими, более серьезными продуктами ))
4. 742 символа вместе с print_r и комментариями для дебилов? )))))))
5. ты мне предлагаешь написать аналог pdoTools? нахуя, если он уже написан? или использовать pdoTools? нахуя, если моя задача этого не требует?
Ясно, очередной диванный критик и мамкин миллионер, совсем забыл, каникулы же начались, пора завязывать отвечать на комментарии.
К слову я не рекламировал и ничего не навязывал, я сказал что это «лучше» как минимум по тому, что в принципе не хорошо выходить из экосистемы на которой весь сайт написан. Но тебе же барану не объяснить, кроме тебя твоими проектами 100% никто не занимается. У тебя такие серьезные проекты, что позволяют писать там код без код ревью с логикой «Если надо будет поправить — заплатят мне — я поправлю», да-да охотно верю. Если что, лендинги и сайт для соседнего суши — бара, это не серьезные проекты.
К слову я не рекламировал и ничего не навязывал, я сказал что это «лучше» как минимум по тому, что в принципе не хорошо выходить из экосистемы на которой весь сайт написан. Но тебе же барану не объяснить, кроме тебя твоими проектами 100% никто не занимается. У тебя такие серьезные проекты, что позволяют писать там код без код ревью с логикой «Если надо будет поправить — заплатят мне — я поправлю», да-да охотно верю. Если что, лендинги и сайт для соседнего суши — бара, это не серьезные проекты.
ваши pdoTools с 2013 года на хабре обозвали охинеей, их автора аферистом, не читали? пройдите по ссылке поставьте ему ТАМ лайк, а то у бедного за 5 лет вместе с вашими «замечательными тулзАми» всего 5 плюсиков ))
habr.com/post/199062/
p.s. слышь, дите из Нахичевани, мой профайл посмотри сначала, где я живу и работаю, где ты (у меня рядом «суши баров» нет, одни шотбулеры)
habr.com/post/199062/
p.s. слышь, дите из Нахичевани, мой профайл посмотри сначала, где я живу и работаю, где ты (у меня рядом «суши баров» нет, одни шотбулеры)
Напишите с помощью pdoResources вывод списка ордеров 3-мя (максимум пятью) строчками текста — включая php, html, запрос к базе, и вывод на страницу вместе с дизайном — всё вместе чтобы не превышало 3-5 строк, и прикрепите здесь, очень интересно
У меня в примере весь код, включая все чанки, сниппеты, дизайн, бакенд, фронтенд и пдо запросы в 5-и (пяти) строчках. Больше ничего нет и не требуется :)
У меня в примере весь код, включая все чанки, сниппеты, дизайн, бакенд, фронтенд и пдо запросы в 5-и (пяти) строчках. Больше ничего нет и не требуется :)
Классный аргумент, строчками мерится это конечно показатель профессионализма, да. Может на символы пересчитаем? Уверен что по символам у pdoResource будет в разы меньше и читаемость в разы лучше чем в вашем говнопримере. Делать запросы в базу даже без учета денамического префикса (который к слову может в любой момент измениться другим разработчиком — это сильно)
Вы правы, вы слишком талантливы чтобы учить людей, а также чтобы что-то выкладывать на гитхаб или писать компоненты, не стоит вам этого делать
Вы правы, вы слишком талантливы чтобы учить людей, а также чтобы что-то выкладывать на гитхаб или писать компоненты, не стоит вам этого делать
слово дИнамический пишется через И ))
вставь $table_prefix -> SELECT * FROM $table_prefix_ms2_orders
а, вы настолько талантливы, что можете только критиковать то, что другие даром выкладывают? ))) поделитесь вашим примером, я вам его оплачу
зы если вы включите моск или купите очки, то заметите, что мой запрос использует pdo модикса, хотя я мог его сделать совсем напрямую через mysqli_connect() и даже вообще через shell exec(«sudo mysql ***») :D
вставь $table_prefix -> SELECT * FROM $table_prefix_ms2_orders
а, вы настолько талантливы, что можете только критиковать то, что другие даром выкладывают? ))) поделитесь вашим примером, я вам его оплачу
зы если вы включите моск или купите очки, то заметите, что мой запрос использует pdo модикса, хотя я мог его сделать совсем напрямую через mysqli_connect() и даже вообще через shell exec(«sudo mysql ***») :D
а, вы настолько талантливы, что можете только критиковать то, что другие даром выкладывают? ))) поделитесь вашим примером, я вам его оплачуЯ вам ссылку скинул на свою статью как бы. Можете в профиль зайти, там их еще несколько.
зы если вы включите моск или купите очки, то заметите, что мой запрос использует pdo модиксаЯ это вижу, но это тут причем? К слову pdoTools как раз НЕ имспользует xpdo модикса
а, ну тогда всё ясно
вам тут за каждую строчку рекламы платят? ))
личше этот свой кривой сайт починили бы, на котором даже ЛОГИНЫ из соцсетей НЕ РАБОТАЮТ )))))))))))
вам тут за каждую строчку рекламы платят? ))
личше этот свой кривой сайт починили бы, на котором даже ЛОГИНЫ из соцсетей НЕ РАБОТАЮТ )))))))))))
1) Это не мой сайт
2) А я что то рекламирую? Или все в жизни упирается в деньги?)
2) А я что то рекламирую? Или все в жизни упирается в деньги?)
ваши pdoTools с 2013 года на хабре обозвали охинеей, их автора аферистом, не читали? пройдите по ссылке поставьте ему ТАМ лайк, а то у бедного за 5 лет вместе с вашими «замечательными тулзАми» всего 5 плюсиков ))
Можно вопрос: вы занимаетесь изобретением собственного языка программирования? ))
Чем вас не устраивает чистый php и чистые запросы к базе — потому что вы их не изучали и не знаете? )
И последний вопрос, на засыпку: КАКОЙ запрос к базе используют САМИ pdoResources и сам Modx?
Если я вам сейчас покажу, что сам Modx (и любой другой cms, framework, и даже facebook Цукерберга) и даже ваш pdoTools делает запрос к базе данных «напрямую» — вы спать сможете спокойно, или будете ворочаться? )))))))
Давайте процитируем самого товарища Безумкина, аффтара этого шедевра: «К сожалению, xPDO не может похвастаться скоростью вывода (как, наверное, вообще любая ORM), поэтому я попробовал совместить её плюсы с обычным PDO, добавить лучшую работу с чанками и сделать удобную библиотеку для MODX.
Основные особенности:
Быстрая работа с БД. Все запросы составляются на xPDO, а выбираются без объектов — на PDO» < — вау, ваш pdoResources использует МОЙ прямой «говнозапрос»? какая неожиданность ))
А терь посмотрим комментарии к вашему аффтару, который «дурачит простачков»:
«И вот опять вот эта ахинея… «Мое прелестное дополнение»…
Это не просто твое прелестное дополнение. Это самое великое из того, что ты сделал — самый великий блеф! Тебе по прежнему удается простачков дурачить тем, что ты офигенный компонент написал и много-много его дорабатываешь. И многие верят (не хватает же мозгов проверить). И главное — сколько уже ты на него из СимплДрима денег вытянул? :-) Ведь тебе оплачивается твое рабочее время
В общем, это никакая не замена xPDO (хорошо хоть давно уже перестал это говорить, понял, что ляпнул не подумавши). Это простой синтаксический сахар, при чем не просто сомнительный, а конкретно ничего под собой не имеющий»
habr.com/post/199062/
Так что, гуляй, Паша, с простачками ))
Чем вас не устраивает чистый php и чистые запросы к базе — потому что вы их не изучали и не знаете? )
И последний вопрос, на засыпку: КАКОЙ запрос к базе используют САМИ pdoResources и сам Modx?
Если я вам сейчас покажу, что сам Modx (и любой другой cms, framework, и даже facebook Цукерберга) и даже ваш pdoTools делает запрос к базе данных «напрямую» — вы спать сможете спокойно, или будете ворочаться? )))))))
Давайте процитируем самого товарища Безумкина, аффтара этого шедевра: «К сожалению, xPDO не может похвастаться скоростью вывода (как, наверное, вообще любая ORM), поэтому я попробовал совместить её плюсы с обычным PDO, добавить лучшую работу с чанками и сделать удобную библиотеку для MODX.
Основные особенности:
Быстрая работа с БД. Все запросы составляются на xPDO, а выбираются без объектов — на PDO» < — вау, ваш pdoResources использует МОЙ прямой «говнозапрос»? какая неожиданность ))
А терь посмотрим комментарии к вашему аффтару, который «дурачит простачков»:
«И вот опять вот эта ахинея… «Мое прелестное дополнение»…
Это не просто твое прелестное дополнение. Это самое великое из того, что ты сделал — самый великий блеф! Тебе по прежнему удается простачков дурачить тем, что ты офигенный компонент написал и много-много его дорабатываешь. И многие верят (не хватает же мозгов проверить). И главное — сколько уже ты на него из СимплДрима денег вытянул? :-) Ведь тебе оплачивается твое рабочее время
В общем, это никакая не замена xPDO (хорошо хоть давно уже перестал это говорить, понял, что ляпнул не подумавши). Это простой синтаксический сахар, при чем не просто сомнительный, а конкретно ничего под собой не имеющий»
habr.com/post/199062/
Так что, гуляй, Паша, с простачками ))
Ой дебил блять) Других слов нет) Я честно не знаю что было в 2013ом году, я тогда был еще на другой версии modx, но сейчас pdoTools это огромная экосистема, которая вносит изменения в родной парсер, которая содержит шаблонизатор отличный от родного, которая позволяет сделать файловую структуру проекта, а главное работает в несколько раз быстрее, чем xpdo. И да, я прекрасно знаю что под капотом под pdoTools. Про чистый php и почему я считаю что он тут не уместен я уже писал, повторятся не стану. Можешь не отвечать на этот коммент, надоело с дурачками общаться
надоело с дурачками общатьсяДа и не нужно.
Всё таки не зря попкорн рядом стоит. Интересно почитать таких вот «залетевших случайно» на modx.pro
Про pdoTools. Просто его удобно юзать. Предсказуемость результатов и маловероятный шанс что вызов сломается. Если ты не понял, хлебушка кусочек.
Про твоё и Павла решение. Без токсика написать не? Сложно? Ай, как же я мог забыть, ты же программист 1000000$ в наносекунду. Так и быть, тебе можно (нет).
Про pdoTools. Просто его удобно юзать. Предсказуемость результатов и маловероятный шанс что вызов сломается. Если ты не понял, хлебушка кусочек.
Про твоё и Павла решение. Без токсика написать не? Сложно? Ай, как же я мог забыть, ты же программист 1000000$ в наносекунду. Так и быть, тебе можно (нет).
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.