Павел

Павел

С нами с 11 июня 2015; Место в рейтинге пользователей: #150
Павел
13 октября 2016, 19:01
0
Сколько пробовал, не получается. Пробовал новый резолвер создать, в него всё это дело записал.
Установка пакета не завершается, хотя скрипт всё выполняет, что от него требуется, Илья, не подскажешь, почему так, как более опытный)

<?php

/** @var $modx modX */
if (!$modx = $object->xpdo AND !$object->xpdo instanceof modX) {
    return true;
}

/** @var $options */
switch ($options[xPDOTransport::PACKAGE_ACTION]) {
    case xPDOTransport::ACTION_INSTALL:
    case xPDOTransport::ACTION_UPGRADE:
	// Скрипт вставлял здесь
        break;
    case xPDOTransport::ACTION_UNINSTALL:
        break;
}

return true;
Павел
13 октября 2016, 16:47
+2
На чистом MODX через консоль попробовал, ошибка вылетает
[2016-10-13 16:36:22] (INFO @ /home/s6897/www/core/components/console/processors/exec.class.php(15) : eval()'d code : 303)
success!!
Павел
12 октября 2016, 13:48
0
Ещё бы разобраться, как новый источник файлов создавать… ну и права желательно… и вообще круто будет)
Павел
11 октября 2016, 20:13
+3
Сам спросил, сам и отвечаю)) Может кому пригодится.

В общем правим резолвер tvs. Он находится здесь: siteExtra-master/_build/resolvers/resolve.tvs.php

В общем меняем вызовы тивишек:

$name = 'address';
        if (!$tv = $modx->getObject('modTemplateVar', array('name' => $name))) {
            $tv = $modx->newObject('modTemplateVar');
        }
        $tv->fromArray(array(
            'name'         => $name,
            'type'         => 'text',
            'caption'      => 'Адрес',
            'category'     => $cat_id
        ));
        $tv->save();
        $tvs[] = $tv->get('id');
        
        $name = 'phone';
        if (!$tv = $modx->getObject('modTemplateVar', array('name' => $name))) {
            $tv = $modx->newObject('modTemplateVar');
        }
        $tv->fromArray(array(
            'name'         => $name,
            'type'         => 'text',
            'caption'      => 'Телефон',
            'category'     => $cat_id
        ));
        $tv->save();
        $tvs[] = $tv->get('id');

На:

$name = 'address';
        $tempID = '1,2'; // Пишем id наших шаблонов
        if (!$tv = $modx->getObject('modTemplateVar', array('name' => $name))) {
            $tv = $modx->newObject('modTemplateVar');
        }
        $tv->fromArray(array(
            'name'         => $name,
            'type'         => 'text',
            'caption'      => 'Адрес',
            'category'     => $cat_id
        ));
        $tv->save();
        $tvs[] = $tv->get('id').'-'.$tempID;
        
        $name = 'phone';
        $tempID = '2';  // Пишем id наших шаблонов
        if (!$tv = $modx->getObject('modTemplateVar', array('name' => $name))) {
            $tv = $modx->newObject('modTemplateVar');
        }
        $tv->fromArray(array(
            'name'         => $name,
            'type'         => 'text',
            'caption'      => 'Телефон',
            'category'     => $cat_id
        ));
        $tv->save();
        $tvs[] = $tv->get('id').'-'.$tempID;

Можно указать один шаблон, а можно несколько через запятую.

А также заменяем скрипт который записывает id этих шаблонов для тивишек.

Меняем:

foreach ($modx->getCollection('modTemplate') as $template) {
            $templateId = $template->id;
            foreach ($tvs as $k => $tvid) {
                if (!$tvt = $modx->getObject('modTemplateVarTemplate', array('tmplvarid' => $tvid, 'templateid' => $templateId))) {
                    $record = array('tmplvarid' => $tvid, 'templateid' => $templateId);
                    $keys = array_keys($record);
                    $fields = '`' . implode('`,`', $keys) . '`';
                    $placeholders = substr(str_repeat('?,', count($keys)), 0, -1);
                    $sql = "INSERT INTO {$modx->getTableName('modTemplateVarTemplate')} ({$fields}) VALUES ({$placeholders});";
                    $modx->prepare($sql)->execute(array_values($record));
                }
            }
        }

На:

foreach ($modx->getCollection('modTemplate') as $template) {
            $templateId = $template->id;
            foreach ($tvs as $k => $tv) {
                $tvOpt = explode("-", $tv);
                $tvid = $tvOpt[0];
                $tvTemps = explode(",",$tvOpt[1]);
                
                foreach ($tvTemps as $tvTemp){
                    if($templateId == $tvTemp){
                        if (!$tvt = $modx->getObject('modTemplateVarTemplate', array('tmplvarid' => $tvid, 'templateid' => $templateId))) {
                            $record = array('tmplvarid' => $tvid, 'templateid' => $templateId);
                            $keys = array_keys($record);
                            $fields = '`' . implode('`,`', $keys) . '`';
                            $placeholders = substr(str_repeat('?,', count($keys)), 0, -1);
                            $sql = "INSERT INTO {$modx->getTableName('modTemplateVarTemplate')} ({$fields}) VALUES ({$placeholders});";
                            $modx->prepare($sql)->execute(array_values($record));
                        }
                    }
                }
            }
        }

Скажу, что этого очень не хватало. Думаю, что Илья может доработать это дело получше)). А вообще хотелось бы увидеть подобный функционал в этом пакете.
Павел
11 октября 2016, 18:09
0
Подскажите кто-нибудь одну вещь.
Как при создании ТВ указать, для каких шаблонов она доступна?
Павел
08 октября 2016, 02:11
0
Спасибо
Павел
30 сентября 2016, 12:40
0
Тоже интересуюсь этим вопросом
Павел
26 сентября 2016, 19:27
0
А можно как-нибудь, если 0 человек проголосовало, показывать 5 пустых звёзд, вместо пустоты, при вызове результатов опроса?
Павел
15 сентября 2016, 17:26
0
Добрый день, подскажите пожалуйста, будет ли работать импорт со свойствами созданных через компонент msExtraFields… Просто они там по особому создаются…

Павел
05 сентября 2016, 20:42
0
Хм, заметил странность.
Обновил сайт до 2.5.1 на хостинге таймвеб, все норм. Сайт на модхосте обновил, все крашутся миниатюры… пришлось откатиться пока 2.5.0… Буду тестить дальше, бред какой то
Павел
09 августа 2016, 16:25
0
На тестовом сайте modhost долго компоненты ставятся и это больше минуты примерно занимает… Приходится несколько раз пробовать устанавливать свой пакет, пока все компоненты не будут установлены…
Павел
20 июля 2016, 10:44
+1
Недавно прикручивал себе слайдер от бутстрапа к migx… В общем смотри

<div id="carousel_top" class="carousel slide border_box" data-ride="carousel">
	<!-- Indicators -->

	<ol class="carousel-indicators">
	  [[!getImageList?
		&tvname=`slider_main`
		&tpl=`slider_main_indicators`
		&docid=`[[*id]]`
	  ]]
	</ol>

	<!-- Wrapper for slides -->
	<div class="carousel-inner">

	[[!getImageList?
		&tvname=`slider_main`
		&tpl=`slider_main`
		&docid=`[[*id]]`
	]]

	</div>

	<!-- Controls -->
	<a class="left carousel-control" href="#carousel_top" data-slide="prev"></a>
	<a class="right carousel-control" href="#carousel_top" data-slide="next"></a>
</div>

Чанк: slider_main
<div class="item [[+idx:is=`1`:then=`active`]]"  >
    <img src="[[+image]]">
</div>

Чанк: slider_main_indicators
<li data-target="#carousel_top" data-slide-to="[[!defone? &input=`[[+idx]]`]]" [[+idx:is=`1`:then=`class="active"`]]></li>

И сниппет defone (который как раз и вычитает от idx единичку)
<?php
return $input = $input-1;

Павел
14 июля 2016, 11:21
0
Вот как выглядит на php 7.0
А вот на php 5.6
Павел
14 июля 2016, 11:12
0
FastUploadTV не выводит миниатюру на php 7.0
Павел
13 июля 2016, 20:15
+1
Добрый день. Интересно. Напишите на почту daruse93@gmail.com
Павел
13 июля 2016, 15:58
0
Сделай проверку на get=page
[[#GET.page:notempty=`
	[[!+page.nav]]
`]]
Павел
13 июля 2016, 15:55
-1
Хм… костыльный вариант могу предложить… создаёшь товар с этой стоимостью и при нажатии на чекбокс он добавляется в корзину.
Павел
13 июля 2016, 15:53
+1
у меня все сайты в 2-3 раза быстрее работать стали.
Павел
13 июля 2016, 15:51
+1
Да всё также, как и на простом php. Вызываешь сниппет с этим скриптом на той же странице, где и форма. Саму форму отправляешь постом на текущею страницу.
<form action="" method="POST">
Страница после чего перезагружается и сниппет отрабатывает.