O ecsmart é um produto da ecshop, lançado em 2015. Para mais informações, visite o site oficial ou procure por "商之翼" "ecsmart" no Google.
O ecsmart foi desenvolvido para plataformas PC, móvel e aplicativo. A estrutura do diretório inclui admin para gerenciamento do PC e /mobile/admin para gerenciamento do aplicativo móvel. É importante entender essa divisão ao trabalhar no sistema, embora possa-se unificar os painéis de controle se necessário.
No meu projeto recente, concentrei-me no desenvolvimento para o WeChat, focando principalmente nos diretórios mobile/admin.
As imagens dos produtos são armazenadas em /data/images. As imagens de anúncio têm caminhos diferentes para PC e WeChat, pois são armazenadas em tabelas separadas (PC: ad, ad_position; WeChat: ecsmart_ad, ecsmart_ad_position). Ambientes de backend possuem menus de configuração de anúncios separados, mas essas tabelas têm campos muito semelhantes.
O backend do PC oferece uma ampla gama de funcionalidades, incluindo adicionar, modificar e categorizar produtos. O backend móvel permite configurar a loja WeChat, páginas front-end e configurações específicas do WeChat.
Para evitar confusões, é crucial entender a estrutura do sistema. Por exemplo, modifiquei o arquivo shop_config do backend do PC para ecsmart_shop_config para a loja WeChat, mas isso era desnecessariamente complexo. Compreender a organização dos diretórios simplifica as operações.
A navegação do backend do PC é configurada modificando libiary/lic_menu.php e libiary/lic_priv.php. No entanto, para o backend móvel, altere mobile/templates/menu.htm, mobile/libiary/lic_menu.php e mobile/libiary/lic_priv.php.
Quando fazendo upload em massa de produtos usando arquivos CSV codificados em GB2312 ou GBK, pode ocorrer corrupção de caracteres. Isso acontece porque o sistema espera arquivos UTF-8. Para resolver isso, adicionei uma função para detectar a codificação do arquivo no goods_batch.php:
function detect_encoding($file) {
$encodings = ['GBK', 'UTF-8', 'UTF-16LE', 'UTF-16BE', 'ISO-8859-1', 'GB2312'];
$content = file_get_contents($file);
foreach ($encodings as $encoding) {
$decoded = mb_convert_encoding($content, $encoding, $encoding);
if (md5($decoded) === md5($content)) {
return $encoding;
}
}
return null;
}
if ($_REQUEST['act'] == 'upload') {
admin_priv('goods_batch');
$lines = file($_FILES['file']['tmp_name']);
$tempFile = $_FILES['file']['tmp_name'];
$fileEncoding = detect_encoding($tempFile);
foreach ($lines as $index => $line) {
if ($index === 0) continue;
if (strtolower($fileEncoding) !== 'utf-8') {
if (($_POST['charset'] !== 'UTF8') && strpos(strtolower(EC_CHARSET), 'utf') === 0) {
$line = ecs_iconv($_POST['charset'], 'UTF8', $line);
}
}
// processamento contínuo...
}
}
Caso esteja importando dados do Taobao, é importante verificar e adicionar novos formatos de dados na verificação de data_cat no goods_batch.php.
Em páginas do WeChat, detalhes de produtos podem não aparecer devido à remoção de tags <script> no goods.dwt. Remova esses comentários para restaurar a funcionalidade.
O goods.dwt possui uma função chamada show_desc que pode falhar se os detalhes contiverem aspas. Para resolver, remova esta função e exiba os detalhes diretamente no HTML:
<div class="main" id="user_goods_ka_2" style="display:none">
<div class="product_main" style="margin-top:40px;">
<div class="product_images product_desc" id="product_desc">{$goods.goods_desc}</div>
</div>
</div>
Se imagens do WeChat não aparecem, ajuste a função get_url() ou modifique mobile/weixin/index.php para corrigir caminhos relativos:
$newsData[$key]['PicUrl'] = (strpos($value['thumb'], 'http://') !== false) ? $value['thumb'] : $baseUrl . $value['thumb'];
Estou continuando a usar o ecsmart para projetos futuros e compartilharei mais problemas e soluções conforme necessário.