Jump to content

Guy Verville

Members
  • Posts

    204
  • Joined

  • Last visited

Posts posted by Guy Verville

  1. https://www.spiria.com

    After several sites made with ProcessWire, Spiria decided it was time to get rid of its cumbersome Drupal site. To be honest, ProcessWire is still difficult to sell to customers, because this CMS/CMF is not as well known as the most popular ones.

    The migration to ProcessWire therefore served several purposes:

    1. Eliminate the frustrations experienced with Drupal (especially with image management and some structural problems).
    2. Allow integrators to learn the CMS during quiet periods, when they are not needed on other projects.
    3. Promote the CMS by adopting it.

    The challenges were many, but by no means insolvent, thanks to the great versatility of this programming framework. Indeed, if ProcessWire can be considered as a CMS in its own right, it also offers all the advantages of a CMF (Content Management Framework). Unlike other solutions, the programmer is not forced to follow the proposed model and can integrate his ways of doing things.

    The blog

    The site includes a very active blog where visuals abound. It was essential to cache the various dynamic components. For example, in all sections of the blog, there is a list of recent articles, a list of "short technical news", another list from the same author, a classification by category. In short, these lists evolve independently. ProcessWire's cache system, including its ability to classify by namespace, has significantly improved loading speed. Cache file management has been placed in a "saved" hook in the useful "ready.php" file.

    Data migration

    Importing the blog data was complex because at the time the site was designed in Drupal, programmers had not been used the easily translatable "entities", so each article resided in two different "nodes" (pages). We would have liked to use the core ProcessWire import module, but it does not yet take into account multilingual fields. However, we have used this code as a basis for building our own import module. This is one of ProcessWire's great qualities, as a CMF, it is easy to use existing code to design your own solutions.

    Reproduce the layout

    The current layout of the site has been reproduced exactly as it serves the company's needs very well. ProcessWire has simplified the work in many ways. Apart from the blog, which is very structured, the other sections of the site are more free, especially the case study section ("Our Work"). The use of page reference fields has particularly helped developers. As everything is a page in ProcessWire, you can create a pseudo relational database within the site itself. The administrator user becomes more aware of the data hierarchy and has better control over the data.

    Programming architecture

    The separation between controllers and Twig visualization files facilitates the management of the multiple components of the site. We haven't really explored the "regions" of ProcessWire, because we prefer not to mix these aspects of programming. This greatly facilitates the timely arrival of programmers in our department, used to an MVC structure, because they have a better understanding of what does what.

    The Search

    Once again, we were able to simplify what had been done in Drupal. There are two types of searches on the site, the blog search and the more general search on page 404 ( https://www.spiria.com/potato). The Drupal site search was driven by an Apache Solr server in Drupal. We decided to rely on the ease of ProcessWire and the Typeahead library (for the blog), because we didn't need the power of Solr (or Elasticsearch) anyway. Work to improve performance still needs to be done in this area. We would have liked to have seen the excellent search tool offered on the administrative side available on the frontend. We have not yet had time to explore the possibility of harnessing this code from the core of ProcessWire. Our wish here is that the CMS designer, Ryan Cramer, sees this as an opportunity to offer an exciting new feature to his CMS!

    Powerful modules

    We have the excellent modules ProCache (static caching), ProFields (fields that greatly improve the functionality of existing fields) and ListerPro (data search and processing tool). As the site is installed on a nginx server, we have ruled out ProCache for the moment and we are satisfied with the use of the cache() function alone. The ProFields fields are a blessing just like ListerPro. This last module is very useful to correct, for example, import errors (we had more than 800 blog articles, some of which date back to 2013).

    We used a functional field to gather translations of terms that would normally have remained hard coded and difficult to access in the translation interface (an aspect to be improved in ProcessWire, in our opinion). By grouping translations in a single page, site administrators can easily change or correct terms.

    Language management

    What remains a very small irritant for us is the management of languages, which is fantastic in many ways. The fact that there is a default language is both a blessing and a problem. For example, in 2013, blog articles were not systematically translated. We experienced the same situation with a customer's site. If the article is only in English, no problem, we only have to not check French as an active language. However, if the article is only in French, we are still required to create the page in English and make tricks in the code, thanks in particular to a checkbox such as "Not present in English" to reproduce the behaviour naturally present for English (or any language deemed by default). Perhaps there is a more elegant solution here that we have not yet discovered. It's not much, but some clients don't see why there are two ways to do it here.

    In conclusion

    In any case, ProcessWire's great qualities continue to appeal to programmers, integrators, graphic designers, users and even our UI/UX expert. The solidity of the CMS/CMF, its functionalities all translated into objects/variables ($pages, $page, $config, $sanitizer, $input... the list is long) allows us to systematize our workflow, easily recover code and reduce production costs.

    Although it is dangerous to offer only a CMS solution to our customers (hammer syndrome that only sees nails), it is tempting to consider ProcessWire as the Swiss Army knife par excellence of Web programming. As mentioned above, the CMF is suitable for all situations, has very good security tools and its designer has successfully improved PHP methods to make programming very pleasant and intuitive.

    For us, migrating the company's website to this platform was the best tribute we could pay to its designer, @ryan.

    Capture d’écran, le 2018-11-26 à 10.39.11.png

    Capture d’écran, le 2018-11-26 à 10.38.45.png

    Capture d’écran, le 2018-11-26 à 10.50.47.png

    • Like 25
  2. Ok, case closed. My provider finally found that there was a Rebase /sendy on my root folder... I promisse, it's not me that put it there... I am just suprised though that this .htaccess file, which is in the root (outside what is accessible to me) affects the admin backend of ProcessWire.

  3. I saw this in my provider system log that ProcessWire, in admin, wants to get access to a directory in the root called "sendy". So it wants to read "sendy/index.php". I put an empty index.php file into a director that I recreated, and the admin part just stops to function... I wrote "echo 'I am here';" and... I obtain an empty page with I am here. Silly.

    I once used the Sendy, but I removed it this week since it was of no use for a long time. I thoroughly checked that there was no mention of "sendy" in the database of my site. Nothing. I must also say that I have two other family sites residing in the root and both admins are not accessible suffering this same awfully misdirection.

    I have no way to regain the Sendy folder and do not want either. I have removed in the Amazon Services website the Sendy entry, but to no avail. The ProcessWire JCore calls somewhere on the planet something that points to guyverville.com/sendy!  I did import the database from the production site into local. Everything is working perfectly well.

     

     

  4. Thank you for the reply. Unfortunately, it does not resolve the problem. After writing this post, I recalled that I had a similar problem last year!

    But my solution to uncomment the Rewrite base in .htaccess is not actually the culprit since it is still uncommented... I deleted already all the cache. Very frustrating.

    The only thing that has changed in my computer recently is that I moved to Mojave...

  5. Hi,

    I have a request from a customer who would like to prevent his employees to give their credentials to other employees. In another word, if someone logs in with a given username while another is logged, either the former is not allowed (with a message), or the latter is kicked out (with a message).

    While there is now two-factor authentication in PW, I am not sure the client wants that. Just wondering if there would be other ways to do so.

  6. The change to the region selector has changed recently. Weird that the logo code has not followed. Thanks for this. I will make this corrected first in the next morning.

    update: strange, the code calling the logo is the same for every situation. I don't have this issue here. The source the problem seems related to cache.

    • Like 1
  7. Hi Adrian,

    Which browser you use? For the region selection, the IP detection is not a practical solution as some "region" are quite near of each other (for example Peterborough, Toronto or Hamilton). Where do you divide the line between them? It could be easier for the Maritimes, or in Quebec. Again, this is difficult because someone, for example, living in Trois-Rivières (middle of the province), might decide to go to Montreal instead of Quebec city. Another example are those living near Ottawa, but on the Quebec side (Gatineau). Quebec retailers are linked to Montreal, but the consumer might decide to go to Ottawa, etc. Since there were no clear answers to that, our client has decided to make people choose the region.

    As for the language, there is already a detection of the browser language but, again, a lot of people use an English OS while they speak French... ?

  8. Thank you Dragan, 

    I was not really aware of the functional fields. This can be handy indeed while I see the putting everything in a Variables section of the tree is more friendly to end users. But the functional fields is certainly something to inquire!

  9. https://www.centura.ca

    We finally put Centura's national website online. A whole journey of a year and a half that began with an important phase of analysis.

    Centura is one of Canada's leading distributors of floor and wall coverings. Seven administrative regions with different prices, four user profiles each with their privileges, daily synchronization with an inventory system, an ElasticSearch search and a concern for speed, these are the main challenges in the development of this site. And of course, everything must be adapted to the mobile. 

    It is a smooth launch, without drum or trumpet, to stabilize the site, to know the reactions of the administrators, the pleasures and frustrations of the users.
    The primary goal was to provide a national showcase for this important distributor. Centura has an inventory system that includes tens of thousands of products, the SKUs. However, this large database does not contain descriptions or groupings by collections.

    So we used ProcessWire as a central data management point, where images and text meet inventory. Since Centura is divided into seven administrative regions with 14 distribution centres, it was essential to leave control over the local aspects of these divisions, such as opening hours, collections sold in the region, promotions, etc. In addition, one region, London and Windsor, is going it alone. It was important to add it to the list and direct the visitor to the right region (and another CMS).

    As a distributor, Centura deals with retailers to sell its products. He also negotiates at a higher level with architects and construction contractors. Four types of users were identified.

    1. The consumer who can keep favorites in his profile.
    2. The retailer who can query the central inventory and who has access to promotions and other documents.
    3. The architect or designer who can order free samples.
    4. The installer interested in ordering tools or installation products.

    Apart from consumers, the remaining types of members are managed (approved) by each branch. The branch administrators therefore had to be able to "visualize", to locate this information in the tree structure. This involved creating four types of profiles, four main forms, allowing everyone to have a custom dashboard. People registered in these profiles are registered "under" each branch.

    Let us not forget the daily synchronization, done at night, in order to reflect new products, price changes, etc.. Since the new SKUs are "orphaned" before being associated to a collection, the import mechanism, inspired at the base of the module the Ryan Cramer, Import Pages from CSV, allows to identify what has been changed from what is new. This last category is placed in the tree structure under a page called Orphaned Skus. The site managers can create collections in the Products section and associates through a Page reference field the SKUs. When saving, since SKUs now have an association, they are pushed under the collection, so administrators can easily spot what belongs to what.

    This large site required the intensive use of various fields, including Page reference, Repeater Matrix. The ProFields collection was a great help, as was ListerPro, widely used by both us and the administrators. What a choice to create batch actions with custom actions! This last module would however deserve a little more love, because it is a little more difficult to understand for the administrator user. We also used Form Builder, but the programmers preferred to build the four main forms themselves, as too much interaction was needed with other components of the site. The documentation for this module is anemic. If the use of the module speaks for itself, its use by API is immediately more cryptic. However, we promise to explore it further in order to leave as much control as possible to the administrator.

    Another aspect that could be improved in ProcessWire is language management. The internationalization system is fantastic and we have nothing to say about it, but the translation of coded texts is rather hell. For the administrator user, finding a translation and modifying it is very complicated and sometimes incomprehensible. Indeed, what is marked by the __("token") function can be changed in two places for each translation (English and French in our case). But when the time comes to modify these translations again, you have to remember that it is the "token" that governs the search... Moreover, unlike Drupal, if identical __("token") commands are found in different PHP files, you have to translate them in several places!  There are ways to use pages inside the site to feed all translations of the site, this takes time and good planning. You can also use a central translation file, but with large sites, it can become cumbersome.

    There are two types of search in this site. The search by facets of coating products required the use of Elasticsearch which allowed an almost instantaneous display of products.
    For tools and installation products, we used a more standard model, built with ProcessWire. Why two search systems? There was a questions of time and budget here. The second search is quite different in practice.

    Caching the site was of course important. Several obstacles to this one: the use of numerous cookies, in particular those of the choice of region and language by the user, the regional variation of the prices, the variation also of the collections to show. Finally, nginx in node balancing. Unfortunately, we could not use the ProCache module, depending on the htaccess file. It is possible to translate ProCache rules into nginx rules. We were, however, reluctant to depend on something over which we had little control. So we opted instead to pull the strings of the cache, as we saw fit, with the features of ProcessWire. It should also be remembered that nginx also has very powerful caching features.
    In the near future, however, we will revisit ProCache.

    We, at Spiria, love working with ProcessWire. The more we create sites with this CMS, the more we develop reusable components, which greatly speeds up the creation process. At the moment, we are setting up four "microsites" of products for another company. These sites will then be linked to a central site for "information exchange". In another case, we have to create two sites that operate in parallel. The customer wants to manage the information in a single site while pushing to a second certain information.

    Our main challenge remains the notoriety of ProcessWire which is sometimes difficult to sell against giants such as Wordpress and Drupal. However, by creating sites the size of Centura, we are confident that this great CMF/CMS will take its rightful place.

    Speaking of Centura, the journey continues. An online shop will be created, as well as a blog. ProcessWire makes it possible to create solutions adapted to each company without escalating costs. In other words, you can easily do without Wordpress plugins or Drupal modules, because a customized solution is always more profitable than trying to deconstruct what others have done.


    Translated with www.DeepL.com/Translator

     

    centura001.jpg

    centura002.jpg

    centura003.jpg

    centura004.jpg

    centura005.jpg

    centura006.jpg

    centura007.jpg

    centura008.jpg

    centura2009.jpg

    centura2010.jpg

    centura002.thumb.jpg.c50e0df63e2e1ee0ebf1a0a56a0b8da8.jpg

    centura2011.jpg

    • Like 11
  10. I made a simple case of creating a role with only the management of users as requested and it works. ARB is used with a role that must be restricted for the page tree. I do get, as shown, the user menu, but the pages themselves aren't shown. If I change the role name to something that doesn't match the branch involved, I get my users...

    Maybe other restrictions are involved and coded by my programmer who is on vacation. I don't know. I will have to wait, I think.

×
×
  • Create New...