Giter Site home page Giter Site logo

Comments (3)

everton-rosario avatar everton-rosario commented on April 23, 2024

Please, can you share here more info about your transformation problem?

I need you to share your html markup, this way I can help you to create this transformation rule correctly.

Most of the cases that has contents not important we just add an IgnoreRule or a PassThroughRule.

Share here your html markup and the rules you have defined in rules.json.

Will reopen when the needed info provided.

thanks for using Instant Articles.

from facebook-instant-articles-sdk-php.

truetesterphp avatar truetesterphp commented on April 23, 2024

http://laylita.com/recettes/2586/glace-noix-coco/
Please check above link , there recipe section showing in middle of the article , check screenshot
https://drive.google.com/file/d/0B5hQbOsvbp0oOVJudVJwbk50djQ/view?usp=drivesdk

And here the HTML Markup For Recipe :

<div class="zlrecipe-print-link fl-r">
  <a class="butn-link" title="Print this recipe" href="javascript:void(0);" onclick="zlrPrint('zlrecipe-container-178', 'http://laylita.com/recettes/wp-content/plugins/zip-recipes-premium/'); return false" rel="nofollow">
  Imprimer            </a>
</div>
<div id="zlrecipe-title" itemprop="name" class="b-b h-1 strong ">Glace de noix de coco</div>
</div>
<div class="zlmeta zlclear">
  <div class="fl-l width-50">
    <script type="text/javascript">
      window.ajaxurl = "http://laylita.com/recettes/wp-admin/admin-ajax.php";
    </script>
    <div data-recipeid="178" class="zrdn__rating__container" id="zlrecipe-rating" itemprop="aggregateRating" itemscope="" itemtype="http://schema.org/AggregateRating">
      <meta itemprop="worstRating" content="0">
      <meta itemprop="bestRating" content="5">
      <span class="ratings" style="display: inline-block;">
        <span class="zrdn__rating__user_rating"><span class="zrdn__rating__user_rating_label">Rate this recipe </span><span style="display: none" class="zrdn__rating__user_rating_value"></span></span>
        <br>
        <span style="display: inline-block; cursor: pointer">
          <div class="br-wrapper br-theme-css-stars">
            <select class="zrdn__rating" style="display: none;">
              <option value=""></option>
              <option value="1">1</option>
              <option value="2">2</option>
              <option value="3">3</option>
              <option value="4">4</option>
              <option selected="" value="5">5</option>
            </select>
            <div class="br-widget">
              <a href="#" data-rating-value="1" data-rating-text="1" class="br-selected"></a><a href="#" data-rating-value="2" data-rating-text="2" class="br-selected"></a><a href="#" data-rating-value="3" data-rating-text="3" class="br-selected"></a><a href="#" data-rating-value="4" data-rating-text="4" class="br-selected"></a><a href="#" data-rating-value="5" data-rating-text="5" class="br-selected br-current"></a>
              <div class="br-current-rating">5</div>
            </div>
          </div>
          <div class="zrdn__rating__count_label" style="cursor: auto; text-align: center; font-size: 0.9em; position: relative; top: -13px;"><span class="zrdn__rating__count">2</span> ratings</div>
        </span>
        <meta itemprop="ratingValue" content="5">
        <meta itemprop="ratingCount" content="2">
      </span>
    </div>
    <p id="zlrecipe-prep-time">
      Temps de préparation: <span itemprop="prepTime" content="PT10M">10 minutes</span>
    </p>
    <p id="zlrecipe-cook-time">
      Temps de cuisson: <span itemprop="cookTime" content="PT30M">30 minutes</span>
    </p>
  </div>
  <div class="fl-l width-50">
    <p id="zlrecipe-yield">
      Quantité ou nb de personnes: <span itemprop="recipeYield">Environ 1 litre de glace</span>
    </p>
    <div id="zlrecipe-nutrition" itemprop="nutrition" itemscope="" itemtype="http://schema.org/NutritionInformation">
      <p id="zlrecipe-serving-size">
        Taille d'une portion: <span itemprop="servingSize">Environ 30 grammes pour une boule de glace</span>
      </p>
    </div>
  </div>
  <div class="zlclear">
  </div>
</div>
<div class="img-desc-wrap">
  <p class="t-a-c hide-card hide-print">
    <img class="photo" itemprop="image" src="http://laylita.com/recettes/wp-content/uploads/2016/07/glace-noix-de-coco.jpg" title="Glace de noix de coco" alt="Glace de noix de coco">
  </p>
  <div id="zlrecipe-summary" itemprop="description">
    <p class="summary italic">Recette facile pour la glace de noix de coco. Se prépare avec du lait de coco, de la crème fraiche, du sucre, noix de coco fraiche râpée et un peu de rhum. </p>
  </div>
</div>
<p id="zlrecipe-ingredients" class="h-4 strong">
  Ingrédients 
</p>
<ul id="zlrecipe-ingredients-list">
  <li class="ingredient no-bullet" itemprop="recipeIngredient">
    « 2 boîtes (environ 400ml chacune) de lait de noix de coco non sucré
  </li>
  <li class="ingredient no-bullet" itemprop="recipeIngredient">
    1 tasse de crème épaisse
  </li>
  <li class="ingredient no-bullet" itemprop="recipeIngredient">
    1 tasse de sucre (on peut remplacer la crème et le sucre par du lait condensé)
  </li>
  <li class="ingredient no-bullet" itemprop="recipeIngredient">
    1 C.à.c. d’extrait de coco- optionnel
  </li>
  <li class="ingredient no-bullet" itemprop="recipeIngredient">
    6 C.à.s de rhum vieux- on peut aussi utiliser l’extrait de rhum à sa place
  </li>
  <li class="ingredient no-bullet" itemprop="recipeIngredient">
    ½ à 1 tasse de noix de coco rappée
  </li>
  <li class="ingredient no-bullet" itemprop="recipeIngredient">
    De la noix de coco grillée pour la décoration et le service
  </li>
</ul>
<p id="zlrecipe-instructions" class="h-4 strong">Préparation</p>
<ol id="zlrecipe-instructions-list" class="instructions">
  <li class="instruction " itemprop="recipeInstructions">
    Mettre le lait de coco , la crème et le sucre dans une casserole ou fait tout moyen, chauffer et remuer jusqu’à la dissolution complète du sucre.
  </li>
  <li class="instruction " itemprop="recipeInstructions">
    Retirer du feux, ajouter le rhum et l’extrait de noix de coco. Gouter et rectifier la quantité de rhum et d’extrait de coco selon votre goût. Laisser refroidir totalement le mélange.
  </li>
  <li class="instruction " itemprop="recipeInstructions">
    Verser le mélange de coco et crème dans la sorbetière et préparer selon les instructions de l’appareil.
  </li>
  <li class="instruction " itemprop="recipeInstructions">
    Ajouter la noix de coco rappé fraiche pendant les dernières minutes dans la sorbetière et laisser que sa ce mélange bien avec le reste de la glace. Sortir la glace de la sorbetière et la mettre dans un conteneur supportant la congélation. Laisser reposer environ deux heures avant de le servir. Pour une préparation sans sorbetière placer le mélange de la glace dans un récipient de plastique ou de métal (qui peut aller au congélateur) et congeler pendant une heure. Il doit être semi congelé, mais encore assez souple. Utiliser le mixeur pour mixer et homogénéiser le mélange. Vous pouvez aussi le mettre dans le processeur d’aliments et le mélanger. (S’assurer que votre mixeur est capable de triturer de la glace)
  </li>
  <li class="instruction " itemprop="recipeInstructions">
    Remettre le mélange de glace et laisser reposer une heure de plus. Ensuite répéter cela 3 ou 4 fois ou jusqu’à l’obtention d’un consistance souple et crémeuse. Ajouter la noix de coco rappée pendant le dernier mixage. Laisser reposer la glace quelques heures dans le congélateur avant de le servir.
  </li>
  <li class="instruction " itemprop="recipeInstructions">
    Servir la glace de coco toute seule ou décorée avec la noix de coco grillée ou de votre choix de fruits frais.
  </li>
</ol>
<div class="ziprecipes-plugin" style="display: none;">4.5.2.11</div>
</div>
<div id="zl-printed-copyright-statement" itemprop="copyrightHolder">©Laylita.com Tous Droits Réservés</div>

Let me Know if you need anything else

from facebook-instant-articles-sdk-php.

everton-rosario avatar everton-rosario commented on April 23, 2024

Add these rules by the end of your rules.json file.


            {
                "class" : "IgnoreRule",
                "selector": "div.zlrecipe-print-link"
            },
            {
                "class" : "IgnoreRule",
                "selector": "script"
            },
            {
                "class" : "IgnoreRule",
                "selector": "div.ziprecipes-plugin"
            },
            {
                "class" : "IgnoreRule",
                "selector": "div#zl-printed-copyright-statement"
            },
            {
                "class": "PassThroughRule",
                "selector": "div.zlmeta"
            },
            {
                "class": "PassThroughRule",
                "selector": "div.b-b"
            },
            {
                "class": "PassThroughRule",
                "selector": "div.fl-l"
            },
            {
                "class": "PassThroughRule",
                "selector": "span"
            },
            {
                "class": "PassThroughRule",
                "selector": "div.zlclear"
            },
            {
                "class": "PassThroughRule",
                "selector": "div.img-desc-wrap"
            },
            {
                "class": "PassThroughRule",
                "selector": "div#zlrecipe-nutrition"
            },
            {
                "class": "H1Rule",
                "selector": "div#zlrecipe-title"
            },
            {
                "class": "PassThroughRule",
                "selector": "div#zlrecipe-summary"
            },
            {
                "class": "BlockquoteRule",
                "selector": "p.summary"
            },
            {
                "class": "ListItemRule",
                "selector" : "li"
            },
            {
                "class": "ListElementRule",
                "selector" : "ul"
            },
            {
                "class": "ListElementRule",
                "selector" : "ol"
            },
            {
                "class": "InteractiveRule",
                "selector": "div.zrdn__rating__container",
                "properties" : {
                    "interactive.iframe" : {
                        "type" : "children",
                        "selector" : "div"
                    }
                }
            },
            {
                "class": "ImageInsideParagraphRule",
                "selector": "img.photo",
                "properties": {
                    "image.url": {
                        "type": "string",
                        "selector": "img",
                        "attribute": "src"
                    }
                }
            }

This should be enough.

To check if your transformer is 100% good, check if you have any warnings after transformation:

        $transformer->transform($instant_article, $document);
        $result = $instant_article->render('', true)."\n";
        var_dump($result);
        foreach ($transformer->getWarnings() as $warning) {
          print_r($warning->__toString()."\n");
        }

from facebook-instant-articles-sdk-php.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.