Jump to content

[Module] Random Special


Recommended Posts

De momento tenho o programa a funcionar dentro do livro de excel que contem o preçário do meu fornecedor, mas poderei tentar po-lo a funcionar num livro autonomo ;) .

Este program tem ainda outras funcionalidades:
- Pesquisa uma palavra ou texto por colunas e linhas pre-determindas por nós... ex: pesquisar da Coluna A á D e da linha 100 á 1800 pela palavra "Ford" e devolve todos os resultados com os respectivos links para cada célula.

Todas as funções a seguir utilizam a primeira(pesquisa) para funcionarem.

- substitui uma palavra numa célula por outra que quisermos. ex: Celula A- "Ford Fiesta - Brake Pads" , palavra a procurar"Brake Pads", Palavra a Substituir"Pastilhas de Travão" e o resultado na Coluna A1 será "Ford Fiesta - Pastilhas de Travão" .
- substitui o conteudo todo da célula na mesma coluna ou noutra coluna ou cria uma célula nova numa coluna ainda não utilizada. Ex: Coluna B2="Brakes Pads and Discs ", texto a procurar "Brake Pads and Discs"; texto a substituir "Sistema de Travagem"; Coluna B2 passa a ter "Sistema de Travagem".
Isto pode ser feito para várias linhas de uma só vez.

- Copia o conteudo de uma célula de uma coluna para a célula de outra coluna eleminado uma determinada palvara da célula copiada. Ex: Copia Coluna A1="Ford Fiesta 1.8 TDDI" e elemina "1.8" colocando na outra célula B2 ou na mesma A1 "Ford Fiesta TDDI". Isto pode ser feito para várias linhas de uma só vez.

- Junta o conteudo de duas células de colunas diferentes com a possibilidade de adicionar texto antes, no meio e depois, para a memsma coluna ou para outra coluna. Ex: Coluna A - "Ford, " ; Coluna B - "Fiesta "; Colocar Antes - "Marca -" ; Colocar no meio- "Modelo - " ; Colocar Depois - "1.8 TDDI" . O Resultado da junção da Coluna A com a Coluna B será colocado na Coluna A,B ou qualquer outra por nós determinada Resultado= "Marca - Ford, Modelo - Fiesta 1.8 TDDI". Isto pode ser feito para várias linhas de uma só vez.

Todas estas funções devolvem uma lista com todas as células alteradas e os respectivos links para elas e pode ser feito em várias linhas ao mesmo tempo ou em toda a folha. Já cheguei a utilizar para 65000 linhas e obter mais de 3000 resultados de uma só vez. Gerar a lista é opcional pois aumenta o tempo de processamento da função.

Eu sei que o Excel tem o Filtro que faz algumas destas funções mas como não funciona dentro dos moldes que queria optei por personalizar.

Link to comment
Share on other sites

  • 4 weeks later...
  • 3 weeks later...

bousoir,
Ce module à l'air super, mais en l'installant sur ma version 1.2.5, j'ai ce resultat :

Notice: Undefined index: RANDOMSPECIAL_DST in J:\ftp_easy_php_2.0b1\www\prestashop_electrique\classes\Module.php(325) : eval()'d code on line 23

Notice: Undefined index: RANDOMSPECIAL_TIMER in J:\ftp_easy_php_2.0b1\www\prestashop_electrique\classes\Module.php(325) : eval()'d code on line 26

Notice: Undefined index: RANDOMSPECIAL_TIMEDATE in J:\ftp_easy_php_2.0b1\www\prestashop_electrique\classes\Module.php(325) : eval()'d code on line 29

Notice: Undefined index: RANDOMSPECIAL_TIMEDATETO in J:\ftp_easy_php_2.0b1\www\prestashop_electrique\classes\Module.php(325) : eval()'d code on line 32



C'est normal ?
Merci beaucoup pour votre retour :-)

Link to comment
Share on other sites

Non, pas normal. Toutefois, n'interfèrent pas avec le fonctionnement du module. J'ai corrigé ce problème et vous pouvez télécharger la version corrigée du module.


Não, não é normal. Contudo, não interfere no funcionamento do módulo. Eu consertei esse problema e você pode descarregar essa versão corrigida do módulo.
Link to comment
Share on other sites

bonjour et merci Ehinarr , :-)
la version corrigée, c'est celle qui est au début du fil ?
Merci beaucoup pour votre confirmation
A bientot,
Steph

Olá e obrigado Ehinarr, :-)
a versão revista é o que está no topo da linha?
Obrigado pela sua confirmação
A bientot,
Steph

Link to comment
Share on other sites

bonjour et merci Ehinarr , :-)
la version corrigée, c'est celle qui est au début du fil ?
Merci beaucoup pour votre confirmation
A bientot,
Steph


Correct. Vous pouvez télécharger le module qui est joint le premier message.

Correto. Podes descarregar o módulo que está na primeira mensagem.
Link to comment
Share on other sites

  • 4 weeks later...

Hi, i've uploaded the module and it work great (i'm on 1.2.5)
No problem during installation (i'm working in local up to now with XAMP).

Just a question : is possible to choose only some specific articles to put on Dayly Offer?
I've read this post but i'm not so inside th elanguage :(

Tks for your help

Link to comment
Share on other sites

  • 5 months later...

Hi all,

The random special module is great. So far I only have one little problem not sure if it relates to the module.
I have an item seems stuck at the random special forever. http://www.ecyclog.com/prices-drop.php (the third one: SATA to USB adapter cable)
I tried to delete all cache, and even delete the product but it's just stuck there never go away. It's sooo weird.

Link to comment
Share on other sites

Ya I tried to put 0 on both price and %. It doesn't do anything. I just want it go back to regular price. I even deleted the item and re-add'd it again but it's still there with the special price. I'm suspecting that there's something weird going on with my database right now cause I have some items disappeared in my back office all of a sudden. Oh well, I'm tired so I'll wait til tomorrow and see.
Thank you anyway!

Link to comment
Share on other sites

  • 4 weeks later...


Só tenho um problema, tenho uma categoria de disponiveis brevemente e o primeiro produto foi logo 1 dessa categoria :)

obrigado pelo modulo


Bom dia, aonde eu encontro este módulo "disponíveis brevemente" já tentei no forum ingles, espanhol e alemao. Venho da Áustria, se tiver este com um file para traducao, entao é o que procuro já há tempos.

Quanto ao modulo hotprice, como posso adicionar outro produto de minha escolha, que nao estao incluídos no bloco "Specials". Eu estou querendo reduzir um produto ainda nao reduzido. Meu outor probleme é que no bloco specials e bloco special of this day sempre se mostram os mesmos produtos. Neste caso seria melhor retirar o bloco specials de lá e oferecer somente os especiais do dia/semana..
Link to comment
Share on other sites

  • 8 months later...

ola tem como colocar a promoçao somente em um produto, por que quando instalo o modulo ele tambem afeta os produtos com desconto, gostaria de por so um produto tipo uma super promoçao, ele ta alterando o preço dos outros produtos em promoçao entendeu. obrigado.

Link to comment
Share on other sites

  • 1 month later...

Fatal error: Uncaught exception 'SmartyCompilerException' with message 'Syntax Error in template "Z:\home\1.ru\www/modules/randomspecial/datetime.tpl" on line 6 "{html_select_date prefix='dateTo_' month_format="%B" }" - Unexpected " }", expected one of: "}"

v1.4.3

Link to comment
Share on other sites

Does not work:
line 6,7

{html_select_date prefix='dateTo_'  month_format="%B" }
{html_select_time prefix='timeTo_'  display_seconds=false use_24_hours=true minute_interval=2}



and:
line 17,18

{html_select_date prefix='changeTo_'  month_format=%B }
{html_select_time prefix='changeTo_'  display_seconds=false use_24_hours=true minute_interval=2}



How to fix?

May be as follows:

$smarty.now|date_format:'%Y-%m-%d %H:%M:%S' <= $specific_prices.to && $smarty.now|date_format:'%Y-%m-%d %H:%M:%S' >= $specific_prices.from

Link to comment
Share on other sites

Este módulo não foi elaborado para PS 1.4, além do mais ele usa smarty 2. Mas eu vou instala-lo em uma 1.4 e verificar se é possível adaptá-lo.

Quem tiver problemas aproveite para relatar, enquanto eu estou disponível para soluciona-los.

Link to comment
Share on other sites

A atualização para PS v1.4.3 foi mais difícil do que imaginei, mas acho que consegui. Faltam fazer alguns ajustes e, talvez, aproveitar e adicionar mais recursos.

Foi a partir deste módulo que eu desenvolvi o módulo venteflash, o qual não foi terminado.

Portanto, toda e qualquer questão ou sugestão a respeito do randomspecial será considerada afim de torná-lo estável.

Eu preciso redesenhar o Back Office do modulo e aperfeiçoar o gerenciamento das datas. Colocar um DateTime Picker melhor. Nos meus testes houve uma diferença de 7 segundos entre o termino do contador e a hora do servidor. Eu tive que fazer mais uma atualização na página (refresh) afim de aparecer a redução.

As sugestões podem também serem enviadas diretamente para meu e-mail: [email protected]

O arquivo anexo é apenas para testes a fim de que minhas conclusões sejam avaliadas e ele será retirado em um um dia.

randomspecial.zip

Link to comment
Share on other sites

Hello, I'm testing your module.
I have not found errors.

I noticed that you have developed almost the entire module from scratch.
You are a great developer!
Thank you for the module!


Great!

Thank You.

But I plan to make some improvements, like a good DateTime Picker and manage the changes of the specials by Ajax and not by reload the entire page, among other things I want to do.
Link to comment
Share on other sites

  • 3 weeks later...
  • 3 months later...
  • 7 months later...
  • 1 month later...
  • 4 months later...
  • 2 weeks later...

Achei uma solução:

Editar o arquivo modules/homefeatured/homefeatured.php

 

Alterar a função hookDisplayHome() da seguinte maneira:

 

De:

 

$products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 10));

$this->smarty->assign(array(

 

Para:

 

$products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 10), 'date_add', 'DESC', false, true, true, $nb);

shuffle($products);

$this->smarty->assign(array(

 

 

 

Té mais!

  • Like 1
Link to comment
Share on other sites

  • 4 weeks later...

Oi Ehinar, pois este não está a ser compatível com a versão 1.4.9, a página fica meio desorganizada e também falta um campo para podermos escolher o produto que queremos meter em promoção, penso que já vi um módulo por aí que já tinha esse campo, mas também não funcionava com esta versão do PS..

 

Ve lá se consegues mudar aí qq coisa quando tiveres tempo ok..

 

Cumps..

Link to comment
Share on other sites

  • 4 months later...

TEST FOR [PrestaShop™ 1.5.3.1]

 

ERROR

 

 

[PrestaShop] Fatal error in module smarty_internal_templatecompilerbase:

Uncaught exception 'SmartyCompilerException' with message 'Syntax Error in template "/home/banco8412/public_html/modules/randomspecial/datetime.tpl" on line 17 "{html_select_date prefix='changeTo_' month_format=%B }" - Unexpected "%"' in /home/banco8412/public_html/tools/smarty/sysplugins/smarty_internal_templatecompilerbase.php:627 Stack trace: #0 /home/banco8412/public_html/tools/smarty/sysplugins/smarty_internal_templateparser.php(3154): Smarty_Internal_TemplateCompilerBase->trigger_template_error() #1 /home/banco8412/public_html/tools/smarty/sysplugins/smarty_internal_templateparser.php(3219): Smarty_Internal_Templateparser->yy_syntax_error(39, '%') #2 /home/banco8412/public_html/tools/smarty/sysplugins/smarty_internal_smartytemplatecompiler.php(105): Smarty_Internal_Templateparser->doParse(39, '%') #3 /home/banco8412/public_html/tools/smarty/sysplugins/smarty_internal_templatecompilerbase.php(171): Smarty_Internal_SmartyTemplateCompiler->doCompile('??

Link to comment
Share on other sites

  • 3 weeks later...
  • 1 month later...

Tenho este erro , alguem ja conseguiu sucesso em resolve-lo ??

 

[PrestaShop] Erro Fatal no módulo smarty_internal_templatecompilerbase: 'SmartyCompilerException' Uncaught exceção com a mensagem de "erro de sintaxe no template" / home / compras / public_html / modules / randomspecial / datetime.tpl "na linha 17" {html_select_date prefix = 'changeTo_' month_format = % B} "- Unexpected"% "'in / home / shopping / public_html / tools / smarty / sysplugins / smarty_internal_templatecompilerbase.php: 665 Stack trace: # 0 / home / shopping / public_html / tools / smarty / sysplugins / smarty_internal_templateparser.php (3144): Smarty_Internal_TemplateCompilerBase-> trigger_template_error () # 1 / home / compras / public_html / tools / smarty / sysplugins / smarty_internal_templateparser.php (3209): Smarty_Internal_Templateparser-> yy_syntax_error (40, '%') # 2 / home / compras / public_html / tools / smarty / sysplugins / smarty_internal_smartytemplatecompiler.php (105): Smarty_Internal_Templateparser-> doParse (40, '%') # 3 / home / compras / public_html / ferramentas / smarty / sysplugins / smarty_internal_templatecompilerbase.php (200): Smarty_Internal_SmartyTemplateCompiler- > doCompile ('?

Link to comment
Share on other sites

  • 1 year later...

Na Versao 1.6

In v1.6

 

shop/modules/homefeatured/homefeatured.php

<?php
/*
* 2007-2014 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to [email protected] so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <[email protected]>
* @copyright 2007-2014 PrestaShop SA
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/

if (!defined('_PS_VERSION_'))
    exit;

class HomeFeatured extends Module
{
    protected static $cache_products;

    public function __construct()
    {
        $this->name = 'homefeatured';
        $this->tab = 'front_office_features';
        $this->version = '1.6';
        $this->author = 'PrestaShop';
        $this->need_instance = 0;

        $this->bootstrap = true;
        parent::__construct();

        $this->displayName = $this->l('Featured products on the homepage');
        $this->description = $this->l('Displays featured products in the central column of your homepage.');
    }

    public function install()
    {
        $this->_clearCache('*');
        Configuration::updateValue('HOME_FEATURED_NBR', 8);
        Configuration::updateValue('HOME_FEATURED_CAT', (int)Context::getContext()->shop->getCategory());
        Configuration::updateValue('HOME_FEATURED_RANDOMIZE', false);

        if (!parent::install()
            || !$this->registerHook('header')
            || !$this->registerHook('addproduct')
            || !$this->registerHook('updateproduct')
            || !$this->registerHook('deleteproduct')
            || !$this->registerHook('categoryUpdate')
            || !$this->registerHook('displayHomeTab')
            || !$this->registerHook('displayHomeTabContent')
        )
            return false;

        return true;
    }

    public function uninstall()
    {
        $this->_clearCache('*');

        return parent::uninstall();
    }

    public function getContent()
    {
        $output = '';
        $errors = array();
        if (Tools::isSubmit('submitHomeFeatured'))
        {
            $nbr = Tools::getValue('HOME_FEATURED_NBR');
            if (!Validate::isInt($nbr) || $nbr <= 0)
            $errors[] = $this->l('The number of products is invalid. Please enter a positive number.');

            $cat = Tools::getValue('HOME_FEATURED_CAT');
            if (!Validate::isInt($cat) || $cat <= 0)
                $errors[] = $this->l('The category ID is invalid. Please choose an existing category ID.');
                
            $rand = Tools::getValue('HOME_FEATURED_RANDOMIZE');
            if (!Validate::isBool($rand))
                $errors[] = $this->l('Invalid value for the "randomize" flag.');
            if (isset($errors) && count($errors))
                $output = $this->displayError(implode('<br />', $errors));
            else
            {
                Configuration::updateValue('HOME_FEATURED_NBR', (int)$nbr);
                Configuration::updateValue('HOME_FEATURED_CAT', (int)$cat);
                Configuration::updateValue('HOME_FEATURED_RANDOMIZE', (bool)$rand);
                Tools::clearCache(Context::getContext()->smarty, $this->getTemplatePath('homefeatured.tpl'));
                $output = $this->displayConfirmation($this->l('Your settings have been updated.'));
            }
        }

        return $output.$this->renderForm();
    }

    public function hookDisplayHeader($params)
    {
        $this->hookHeader($params);
    }

    public function hookHeader($params)
    {
        if (isset($this->context->controller->php_self) && $this->context->controller->php_self == 'index')
            $this->context->controller->addCSS(_THEME_CSS_DIR_.'product_list.css');
        $this->context->controller->addCSS(($this->_path).'homefeatured.css', 'all');
    }

    public function _cacheProducts()
    {
        if (!isset(HomeFeatured::$cache_products))
        {
            $category = new Category((int)Configuration::get('HOME_FEATURED_CAT'), (int)Context::getContext()->language->id);
            $nb = (int)Configuration::get('HOME_FEATURED_NBR');
            if (Configuration::get('HOME_FEATURED_RANDOMIZE'))
                HomeFeatured::$cache_products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 8), null, null, false, true, true, ($nb ? $nb : 8));
            else
                HomeFeatured::$cache_products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 8), 'position');
        }

        if (HomeFeatured::$cache_products === false || empty(HomeFeatured::$cache_products))
            return false;
    }

    public function hookDisplayHomeTab($params)
    {
        if (!$this->isCached('tab.tpl', $this->getCacheId('homefeatured-tab')))
            $this->_cacheProducts();

        return $this->display(__FILE__, 'tab.tpl', $this->getCacheId('homefeatured-tab'));
    }

    public function hookDisplayHome($params)
    {
        $category = new Category(Context::getContext()->shop->getCategory(), (int)Context::getContext()->language->id);
$nb = (int)(Configuration::get('HOME_FEATURED_NBR'));
/*$products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 10));*/
$products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 10), 'date_add', 'DESC', false, true, true, $nb);

shuffle($products);
$this->smarty->assign(array(
'products' => $products,
'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'),
'homeSize' => Image::getSize('home_default'),
));
return $this->display(__FILE__, 'homefeatured.tpl');
}

    public function hookDisplayHomeTabContent($params)
    {
        return $this->hookDisplayHome($params);
    }

    public function hookAddProduct($params)
    {
        $this->_clearCache('*');
    }

    public function hookUpdateProduct($params)
    {
        $this->_clearCache('*');
    }

    public function hookDeleteProduct($params)
    {
        $this->_clearCache('*');
    }

    public function hookCategoryUpdate($params)
    {
        $this->_clearCache('*');
    }

    public function _clearCache($template, $cache_id = NULL, $compile_id = NULL)
    {
        parent::_clearCache('homefeatured.tpl');
        parent::_clearCache('tab.tpl', 'homefeatured-tab');
    }

    public function renderForm()
    {
        $fields_form = array(
            'form' => array(
                'legend' => array(
                    'title' => $this->l('Settings'),
                    'icon' => 'icon-cogs'
                ),
                'description' => $this->l('To add products to your homepage, simply add them to the corresponding product category (default: "Home").'),
                'input' => array(
                    array(
                        'type' => 'text',
                        'label' => $this->l('Number of products to be displayed'),
                        'name' => 'HOME_FEATURED_NBR',
                        'class' => 'fixed-width-xs',
                        'desc' => $this->l('Set the number of products that you would like to display on homepage (default: 8).'),
                    ),
                    array(
                        'type' => 'text',
                        'label' => $this->l('Category from which to pick products to be displayed'),
                        'name' => 'HOME_FEATURED_CAT',
                        'class' => 'fixed-width-xs',
                        'desc' => $this->l('Choose the category ID of the products that you would like to display on homepage (default: 2 for "Home").'),
                    ),
                    array(
                        'type' => 'switch',
                        'label' => $this->l('Randomly display featured products'),
                        'name' => 'HOME_FEATURED_RANDOMIZE',
                        'class' => 'fixed-width-xs',
                        'desc' => $this->l('Enable if you wish the products to be displayed randomly (default: no).'),
                        'values' => array(
                            array(
                                'id' => 'active_on',
                                'value' => 1,
                                'label' => $this->l('Yes')
                            ),
                            array(
                                'id' => 'active_off',
                                'value' => 0,
                                'label' => $this->l('No')
                            )
                        ),
                    ),
                ),
                'submit' => array(
                    'title' => $this->l('Save'),
                )
            ),
        );

        $helper = new HelperForm();
        $helper->show_toolbar = false;
        $helper->table = $this->table;
        $lang = new Language((int)Configuration::get('PS_LANG_DEFAULT'));
        $helper->default_form_language = $lang->id;
        $helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') : 0;
        $this->fields_form = array();
        $helper->id = (int)Tools::getValue('id_carrier');
        $helper->identifier = $this->identifier;
        $helper->submit_action = 'submitHomeFeatured';
        $helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false).'&configure='.$this->name.'&tab_module='.$this->tab.'&module_name='.$this->name;
        $helper->token = Tools::getAdminTokenLite('AdminModules');
        $helper->tpl_vars = array(
            'fields_value' => $this->getConfigFieldsValues(),
            'languages' => $this->context->controller->getLanguages(),
            'id_language' => $this->context->language->id
        );

        return $helper->generateForm(array($fields_form));
    }

    public function getConfigFieldsValues()
    {
        return array(
            'HOME_FEATURED_NBR' => Tools::getValue('HOME_FEATURED_NBR', (int)Configuration::get('HOME_FEATURED_NBR')),
            'HOME_FEATURED_CAT' => Tools::getValue('HOME_FEATURED_CAT', (int)Configuration::get('HOME_FEATURED_CAT')),
            'HOME_FEATURED_RANDOMIZE' => Tools::getValue('HOME_FEATURED_RANDOMIZE', (bool)Configuration::get('HOME_FEATURED_RANDOMIZE')),
        );
    }
}
Link to comment
Share on other sites

  • 3 months later...

Prestashop 1.6.0.11 vem com o módulo homefeatured e a possibilidade de produtos aleatórios nativamente. Para quem usa PS 1.6. basta fazer um upgrade do módulo. Para que usa PS 1.5. ou inferiro terá que adaptar através de código mesmo ou entao fazer um upgrade da software para PS 1.6.0.11+

Edited by selectshop.at (see edit history)
Link to comment
Share on other sites

×
×
  • Create New...