čtvrtek 11. září 2025

NopCommerce Vlastní plugin

 Vytvoření pluginu

Založení nového projektu s pluginem




Projekty pluginů jsou uloženy ve složce Plugins.
Zbuildovaný plugin se ale PostBuild stepem přenáší do pložky Plugins v projektu Nop.Web

Nastavení projektu

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <Copyright>Copyright © Tyrion SW, s.r.o.</Copyright>
    <Company>Tyrion SW, s.r.o.</Company>
    <Authors>Tyrion SW, s.r.o.</Authors>
    <PackageLicenseUrl></PackageLicenseUrl>
    <OutputPath>..\..\Presentation\Nop.Web\Plugins\Payments.ComGate</OutputPath>
    <OutDir>$(OutputPath)</OutDir>
    <CopyLocalLockFileAssemblies>false</CopyLocalLockFileAssemblies>
  </PropertyGroup>
...

...
<ItemGroup>
    <ProjectReference Include="..\..\Presentation\Nop.Web.Framework\Nop.Web.Framework.csproj" />
    <ClearPluginAssemblies Include="$(MSBuildProjectDirectory)\..\..\Build\ClearPluginAssemblies.proj" />
  </ItemGroup>


  <!-- This target execute after "Build" target -->
  <Target Name="NopTarget" AfterTargets="Build">
    <!-- Delete unnecessary libraries from plugins path -->
    <MSBuild Projects="@(ClearPluginAssemblies)" Properties="PluginPath=$(MSBuildProjectDirectory)\$(OutDir)" Targets="NopClear" />
  </Target>

Reference na Framework

Aby byla v projektu dostupná funkcionaliza NopCommerce je potřeba přidat rteferenci na projekt Nop.Web.Framework. V něm se například nachází třída BasePlugin ze které budeme náš nový plugin dědit.

plugin.json


logo.png

Logo se potom zobrazuje v seznamu pluginů v administraci NopCommerce a u platebních metod jako logo platební metody

Nastavení vlastností souborů

Jak plugin.json tak i logo.png musí mít nastaveny vlastnosti 



Třída pluginu



Administrace / Configuration / Local plugins


Controller


public ActionResult Index2()
        {
            return new ContentResult() { Content="Ahoj" };
        }

public ActionResult Index()
        {
            return View("~/Plugins/Payments.Test/Views/Index.cshtml");
        }

Konfigurace


return $"{_webHelper.GetStoreLocation()}Admin/PaymentComGate/Configure";

Routing

https://docs.nopcommerce.com/en/developer/tutorials/guide-to-creating-a-page-containing-a-reporting-table-of-datatables.html
public partial class RouteProvider : IRouteProvider
    {
        /// <summary>
        /// Register routes
        /// </summary>
        /// <param name="endpointRouteBuilder">Route builder</param>
        public void RegisterRoutes(IEndpointRouteBuilder endpointRouteBuilder)
        {
            
            endpointRouteBuilder.MapControllerRoute("Plugin.Payments.Test.Index", "Plugins/Test/Index",
                 new { controller = "Test", action = "Index" });

            endpointRouteBuilder.MapControllerRoute("Plugin.Payments.Test.Generator", "Admin/Test/Generator",
                 new { controller = "Test", action = "Generator" });


        }

        /// <summary>
        /// Gets a priority of route provider
        /// </summary>
        public int Priority => -1;
    }

Menu položka

Views





Zdroj:

Make.com - zpracování vícestránkové odpovědi

 Make.com - zpracování vícestránkové odpovědi

Pokud HTTP response vrací vícestránkovou odpověď, je potřeba ji zpracovat v cyklu a projít všechny stránky.
To není úplně jednoduché realizovat na platformě Make, pokud odpověď neobsahuje počet stránek, ale pouze odkaz na další stránku. např. takto: 

Mně se zatím jako jediný osvědčil tento scénář:

  • Vytvořit proměnné done a ContinuationToken.

  • Ty následně načíst a použít ve volání HTTP requestu.

  • Po HTTP requestu znovu nastavit proměnné v závislosti na odpovědi.

  • Poté zpracovat data z odpovědi iterátorem.

  • Před HTTP requestem je nastavený filtr na done != true a na true se proměnná done nastaví, pokud se v odpovědi vrátí ContinuationToken = null.





pondělí 21. července 2025

Make.com konverze času na desetinné číslo

Hodnotu ve formátu 12:30:30 převede na desetinné číslo 12.508333333333333 v hodinách

V proměnné 2.YourTimeVariable mám uložený čas 12:30:30

Funkce v prostředí Make.com

{{(parseNumber(get(split(2.YourTimeVariable; ":"); 1); )) + (parseNumber(get(split(2.YourTimeVariable; ":"); 2); ) / 60) + (parseDate(get(split(2.YourTimeVariable; ":"); 3); ) / 3600)}}


Vyzkoušej Make.com



Poznámka:

pro vkládání funkcí v editoru výrazu je potřeba je vyhledávat v nabídce, která se zobrazí po vložení znaku lomítka '/' 

Zápis je poněkud krkolomný a je potřeba si na něj zvyknout.

Matematické operace je potřeba zadávat také přes znak lomeno


Druhá varianta



{{parseNumber(substring(1.cas; 0; 2); ) + (parseNumber(substring(1.cas; 3; 5); ) /60 ) + (parseNumber(substring(1.cas; 6; 8); ) /3600) }}