Keep an eye on Darick Hall, who served as a lefty power bat against right-handers when Harper went down with a broken left thumb last season. Hall, a first baseman, did his job.
Hall slugged nine homers and had a .804 OPS in 136 at-bats over 41 games and 34 starts. He started 31 games as the designated hitter and just five in the field.
In 113 at-bats games as a DH, Hall had a .766 OPS with five home runs, in 18 at-bats as a first baseman, a .985 OPS and a .833 OPS as a pinch hitter.
One of his nine home runs came off a position player and four against Washington Nationals. But Hall slugged -- 53% of his 34 hits were for extra bases (9 HR, 8 2B, 1 3B).
The lefty slug potential seems like an ideal match for the DH vs. righties.
3. New rules
MLB is implementing three significant rule changes in 2023: bigger bases, a pitch clock and the limiting of defensive shifts. The changes are intended to help inject action into the sport weighed down by the three true outcomes: home run, strikeout and walks.
Bigger bases, in theory, will make stealing bases easier and the limiting of defensive shifts should generate more hits and offense. (Four players must be on the infield with at least two infielders on either side of second base.)
But the one rule change that will have the biggest immediate impact is the pitch clock.
Here's a quick rundown of .
There will be a 30-second timer between batters
A 15-second clock between pitches with the bases empty and 20 seconds between pitchers with a runner on base
If a pitcher exceeds the time period, it's an automatic ball; for a batter, it's an automatic strike
There will be hiccups in 2023 with the pitch clock, both for pitchers and batters.
Looking at the Statcast data from 2022, the Phillies have a few pitchers on the projected Opening Day roster who will take time to adjust -- specifically the highlighted names in the chart below.
The pitch clock is nothing new to players who played in the minor leagues last season (Falter, Painter, Sanchez), but for the veterans, it'll be a challenge.
The rule changes are nothing new, though, and the Phillies have said it will be a focus for spring training.
How quickly will Alvarado, Bellatti, Aaron Nola, et al adapt to the timer? It's certainly something to keep your eye on during spring training.
Leftovers
The bench appears set after the Josh Harrison signing, but one spot appears up for grabs: the fourth outfielder. It could come down to Jake Cave and Dalton Guthrie. ... With an extended workload due to the World Series run, will Nola and Wheeler need extra time? ... Speaking of Nola, will the Phillies and the righty ace come to terms on a contract extension? ... Which Nick Castellanos shows up, the 2022 version or the All-Star the Phillies signed?
const link = doc.createElement('link');
link.rel = 'stylesheet';
link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=fd53910ecf4604072044ab7c46d9b028';
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();
}
});
});
});
});