91³Ô¹ÏÍø

Watch CBS News

Gardening 101: What to buy a gardener for Christmas

NORTH TEXAS - If you are looking for some gift ideas for the Gardener in your life, I've got a few of the obvious suggestions. 

I went to go see my friend George Pavelek of New Purpose Urban Farms in Colleyville. George is always experimenting with plants and garden techniques; I trust his advice on all things dealing with dirt and growing food. 

I'll let you watch the story but do want to emphasize a key point: Spend the extra money on good hand tools, especially on the hand snips and hand spades. Your Gardener will use these tools almost daily for years. 

It is wise to do your research if you want to garden in North Texas. 

A must-have magazine is . George and I are also big fans of . Perhaps the best book I can recommend is . I'm almost sure I'm looking up something in that book weekly. 

I'm also a huge fan of Steve Huddleston. I've done dozens of stories with him when he worked at The Fort Worth Botanic Garden. He co-authored a great book, .

Part 2

The second story includes a few gift ideas you can find at a local nursery. These include some splurge items like a high-end espalier Magnolia. It might take years, but this will can grow over twenty feet across and fill a wall. If you have the right place and patience, it will be a showstopper. 

Make no mistake, this is a high-ticket item. So are some large versions of houseplants. I'd gift something like that to someone who already has some nice houseplants, they'll know how to take care of them.

Of course, these don't have to be just Christmas gifts. Housewarming gifts, birthday gifts, anniversary gifts… there is always a good reason to give a nice gift. I hope you and yours have a merry season.

Jeff Ray is the senior First Alert Meteorologist at CBS News Texas and an avid gardener. When not covering the weather, he is finding stories about Gardening in north Texas. If you would like Jeff to come talk to your group about how changing weather patterns are changing the way we garden in this area, please email him at jaray@viacomcbs.com.

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=296763317a51cab90faa73f1bb146d5c'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });